xref: /freebsd-src/contrib/unbound/util/configparser.c (revision 46d2f61818f594174cafe31ee338c6e083fa1876)
1*46d2f618SCy Schubert /* A Bison parser, made by GNU Bison 3.7.6.  */
2b7c0c8c1SCy Schubert 
3b7c0c8c1SCy Schubert /* Bison implementation for Yacc-like parsers in C
4b7c0c8c1SCy Schubert 
5b7c0c8c1SCy Schubert    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6b7c0c8c1SCy Schubert    Inc.
7b7c0c8c1SCy Schubert 
8b7c0c8c1SCy Schubert    This program is free software: you can redistribute it and/or modify
9b7c0c8c1SCy Schubert    it under the terms of the GNU General Public License as published by
10b7c0c8c1SCy Schubert    the Free Software Foundation, either version 3 of the License, or
11b7c0c8c1SCy Schubert    (at your option) any later version.
12b7c0c8c1SCy Schubert 
13b7c0c8c1SCy Schubert    This program is distributed in the hope that it will be useful,
14b7c0c8c1SCy Schubert    but WITHOUT ANY WARRANTY; without even the implied warranty of
15b7c0c8c1SCy Schubert    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16b7c0c8c1SCy Schubert    GNU General Public License for more details.
17b7c0c8c1SCy Schubert 
18b7c0c8c1SCy Schubert    You should have received a copy of the GNU General Public License
19b7c0c8c1SCy Schubert    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20b7c0c8c1SCy Schubert 
21b7c0c8c1SCy Schubert /* As a special exception, you may create a larger work that contains
22b7c0c8c1SCy Schubert    part or all of the Bison parser skeleton and distribute that work
23b7c0c8c1SCy Schubert    under terms of your choice, so long as that work isn't itself a
24b7c0c8c1SCy Schubert    parser generator using the skeleton or a modified version thereof
25b7c0c8c1SCy Schubert    as a parser skeleton.  Alternatively, if you modify or redistribute
26b7c0c8c1SCy Schubert    the parser skeleton itself, you may (at your option) remove this
27b7c0c8c1SCy Schubert    special exception, which will cause the skeleton and the resulting
28b7c0c8c1SCy Schubert    Bison output files to be licensed under the GNU General Public
29b7c0c8c1SCy Schubert    License without this special exception.
30b7c0c8c1SCy Schubert 
31b7c0c8c1SCy Schubert    This special exception was added by the Free Software Foundation in
32b7c0c8c1SCy Schubert    version 2.2 of Bison.  */
33b7c0c8c1SCy Schubert 
34b7c0c8c1SCy Schubert /* C LALR(1) parser skeleton written by Richard Stallman, by
35b7c0c8c1SCy Schubert    simplifying the original so-called "semantic" parser.  */
36b7c0c8c1SCy Schubert 
37b7c0c8c1SCy Schubert /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38b7c0c8c1SCy Schubert    especially those whose name start with YY_ or yy_.  They are
39b7c0c8c1SCy Schubert    private implementation details that can be changed or removed.  */
40b7c0c8c1SCy Schubert 
41b7c0c8c1SCy Schubert /* All symbols defined below should begin with yy or YY, to avoid
42b7c0c8c1SCy Schubert    infringing on user name space.  This should be done even for local
43b7c0c8c1SCy Schubert    variables, as they might otherwise be expanded by user macros.
44b7c0c8c1SCy Schubert    There are some unavoidable exceptions within include files to
45b7c0c8c1SCy Schubert    define necessary library symbols; they are noted "INFRINGES ON
46b7c0c8c1SCy Schubert    USER NAME SPACE" below.  */
47b7c0c8c1SCy Schubert 
48b7c0c8c1SCy Schubert /* Identify Bison output, and Bison version.  */
49*46d2f618SCy Schubert #define YYBISON 30706
50b7c0c8c1SCy Schubert 
51b7c0c8c1SCy Schubert /* Bison version string.  */
52*46d2f618SCy Schubert #define YYBISON_VERSION "3.7.6"
53b7c0c8c1SCy Schubert 
54b7c0c8c1SCy Schubert /* Skeleton name.  */
55b7c0c8c1SCy Schubert #define YYSKELETON_NAME "yacc.c"
56b7c0c8c1SCy Schubert 
57b7c0c8c1SCy Schubert /* Pure parsers.  */
58b7c0c8c1SCy Schubert #define YYPURE 0
59b7c0c8c1SCy Schubert 
60b7c0c8c1SCy Schubert /* Push parsers.  */
61b7c0c8c1SCy Schubert #define YYPUSH 0
62b7c0c8c1SCy Schubert 
63b7c0c8c1SCy Schubert /* Pull parsers.  */
64b7c0c8c1SCy Schubert #define YYPULL 1
65b7c0c8c1SCy Schubert 
66b7c0c8c1SCy Schubert 
67b7c0c8c1SCy Schubert 
68b7c0c8c1SCy Schubert 
69b7c0c8c1SCy Schubert /* First part of user prologue.  */
70b7c0c8c1SCy Schubert #line 38 "util/configparser.y"
71b7c0c8c1SCy Schubert 
72b7c0c8c1SCy Schubert #include "config.h"
73b7c0c8c1SCy Schubert 
74b7c0c8c1SCy Schubert #include <stdarg.h>
75b7c0c8c1SCy Schubert #include <stdio.h>
76b7c0c8c1SCy Schubert #include <string.h>
77b7c0c8c1SCy Schubert #include <stdlib.h>
78b7c0c8c1SCy Schubert #include <assert.h>
79b7c0c8c1SCy Schubert 
80b7c0c8c1SCy Schubert #include "util/configyyrename.h"
81b7c0c8c1SCy Schubert #include "util/config_file.h"
82b7c0c8c1SCy Schubert #include "util/net_help.h"
83b7c0c8c1SCy Schubert #include "sldns/str2wire.h"
84b7c0c8c1SCy Schubert 
85b7c0c8c1SCy Schubert int ub_c_lex(void);
86b7c0c8c1SCy Schubert void ub_c_error(const char *message);
87b7c0c8c1SCy Schubert 
88b7c0c8c1SCy Schubert static void validate_respip_action(const char* action);
89b7c0c8c1SCy Schubert static void validate_acl_action(const char* action);
90b7c0c8c1SCy Schubert 
91b7c0c8c1SCy Schubert /* these need to be global, otherwise they cannot be used inside yacc */
92b7c0c8c1SCy Schubert extern struct config_parser_state* cfg_parser;
93b7c0c8c1SCy Schubert 
94b7c0c8c1SCy Schubert #if 0
95b7c0c8c1SCy Schubert #define OUTYY(s)  printf s /* used ONLY when debugging */
96b7c0c8c1SCy Schubert #else
97b7c0c8c1SCy Schubert #define OUTYY(s)
98b7c0c8c1SCy Schubert #endif
99b7c0c8c1SCy Schubert 
100b7c0c8c1SCy Schubert 
101b7c0c8c1SCy Schubert #line 102 "util/configparser.c"
102b7c0c8c1SCy Schubert 
103b7c0c8c1SCy Schubert # ifndef YY_CAST
104b7c0c8c1SCy Schubert #  ifdef __cplusplus
105b7c0c8c1SCy Schubert #   define YY_CAST(Type, Val) static_cast<Type> (Val)
106b7c0c8c1SCy Schubert #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
107b7c0c8c1SCy Schubert #  else
108b7c0c8c1SCy Schubert #   define YY_CAST(Type, Val) ((Type) (Val))
109b7c0c8c1SCy Schubert #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
110b7c0c8c1SCy Schubert #  endif
111b7c0c8c1SCy Schubert # endif
112b7c0c8c1SCy Schubert # ifndef YY_NULLPTR
113b7c0c8c1SCy Schubert #  if defined __cplusplus
114b7c0c8c1SCy Schubert #   if 201103L <= __cplusplus
115b7c0c8c1SCy Schubert #    define YY_NULLPTR nullptr
116b7c0c8c1SCy Schubert #   else
117b7c0c8c1SCy Schubert #    define YY_NULLPTR 0
118b7c0c8c1SCy Schubert #   endif
119b7c0c8c1SCy Schubert #  else
120b7c0c8c1SCy Schubert #   define YY_NULLPTR ((void*)0)
121b7c0c8c1SCy Schubert #  endif
122b7c0c8c1SCy Schubert # endif
123b7c0c8c1SCy Schubert 
124b7c0c8c1SCy Schubert #include "configparser.h"
125b7c0c8c1SCy Schubert /* Symbol kind.  */
126b7c0c8c1SCy Schubert enum yysymbol_kind_t
127b7c0c8c1SCy Schubert {
128b7c0c8c1SCy Schubert   YYSYMBOL_YYEMPTY = -2,
129b7c0c8c1SCy Schubert   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
130b7c0c8c1SCy Schubert   YYSYMBOL_YYerror = 1,                    /* error  */
131b7c0c8c1SCy Schubert   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
132b7c0c8c1SCy Schubert   YYSYMBOL_SPACE = 3,                      /* SPACE  */
133b7c0c8c1SCy Schubert   YYSYMBOL_LETTER = 4,                     /* LETTER  */
134b7c0c8c1SCy Schubert   YYSYMBOL_NEWLINE = 5,                    /* NEWLINE  */
135b7c0c8c1SCy Schubert   YYSYMBOL_COMMENT = 6,                    /* COMMENT  */
136b7c0c8c1SCy Schubert   YYSYMBOL_COLON = 7,                      /* COLON  */
137b7c0c8c1SCy Schubert   YYSYMBOL_ANY = 8,                        /* ANY  */
138b7c0c8c1SCy Schubert   YYSYMBOL_ZONESTR = 9,                    /* ZONESTR  */
139b7c0c8c1SCy Schubert   YYSYMBOL_STRING_ARG = 10,                /* STRING_ARG  */
140b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORCE_TOPLEVEL = 11,        /* VAR_FORCE_TOPLEVEL  */
141b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SERVER = 12,                /* VAR_SERVER  */
142b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VERBOSITY = 13,             /* VAR_VERBOSITY  */
143b7c0c8c1SCy Schubert   YYSYMBOL_VAR_NUM_THREADS = 14,           /* VAR_NUM_THREADS  */
144b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PORT = 15,                  /* VAR_PORT  */
145b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_RANGE = 16,        /* VAR_OUTGOING_RANGE  */
146b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INTERFACE = 17,             /* VAR_INTERFACE  */
147b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PREFER_IP4 = 18,            /* VAR_PREFER_IP4  */
148b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_IP4 = 19,                /* VAR_DO_IP4  */
149b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_IP6 = 20,                /* VAR_DO_IP6  */
150b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_NAT64 = 21,              /* VAR_DO_NAT64  */
151b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PREFER_IP6 = 22,            /* VAR_PREFER_IP6  */
152b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_UDP = 23,                /* VAR_DO_UDP  */
153b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_TCP = 24,                /* VAR_DO_TCP  */
154b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TCP_MSS = 25,               /* VAR_TCP_MSS  */
155b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_TCP_MSS = 26,      /* VAR_OUTGOING_TCP_MSS  */
156b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 27,      /* VAR_TCP_IDLE_TIMEOUT  */
157b7c0c8c1SCy Schubert   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 28,    /* VAR_EDNS_TCP_KEEPALIVE  */
158b7c0c8c1SCy Schubert   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 29, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
159b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SOCK_QUEUE_TIMEOUT = 30,    /* VAR_SOCK_QUEUE_TIMEOUT  */
160b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CHROOT = 31,                /* VAR_CHROOT  */
161b7c0c8c1SCy Schubert   YYSYMBOL_VAR_USERNAME = 32,              /* VAR_USERNAME  */
162b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DIRECTORY = 33,             /* VAR_DIRECTORY  */
163b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOGFILE = 34,               /* VAR_LOGFILE  */
164b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PIDFILE = 35,               /* VAR_PIDFILE  */
165b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MSG_CACHE_SIZE = 36,        /* VAR_MSG_CACHE_SIZE  */
166b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MSG_CACHE_SLABS = 37,       /* VAR_MSG_CACHE_SLABS  */
167b7c0c8c1SCy Schubert   YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 38, /* VAR_NUM_QUERIES_PER_THREAD  */
168b7c0c8c1SCy Schubert   YYSYMBOL_VAR_RRSET_CACHE_SIZE = 39,      /* VAR_RRSET_CACHE_SIZE  */
169b7c0c8c1SCy Schubert   YYSYMBOL_VAR_RRSET_CACHE_SLABS = 40,     /* VAR_RRSET_CACHE_SLABS  */
170b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_NUM_TCP = 41,      /* VAR_OUTGOING_NUM_TCP  */
171b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_HOST_TTL = 42,        /* VAR_INFRA_HOST_TTL  */
172b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_LAME_TTL = 43,        /* VAR_INFRA_LAME_TTL  */
173b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_CACHE_SLABS = 44,     /* VAR_INFRA_CACHE_SLABS  */
174b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 45,  /* VAR_INFRA_CACHE_NUMHOSTS  */
175b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 46, /* VAR_INFRA_CACHE_LAME_SIZE  */
176b7c0c8c1SCy Schubert   YYSYMBOL_VAR_NAME = 47,                  /* VAR_NAME  */
177b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_ZONE = 48,             /* VAR_STUB_ZONE  */
178b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_HOST = 49,             /* VAR_STUB_HOST  */
179b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_ADDR = 50,             /* VAR_STUB_ADDR  */
180b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TARGET_FETCH_POLICY = 51,   /* VAR_TARGET_FETCH_POLICY  */
181b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 52,  /* VAR_HARDEN_SHORT_BUFSIZE  */
182b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 53,  /* VAR_HARDEN_LARGE_QUERIES  */
183b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_ZONE = 54,          /* VAR_FORWARD_ZONE  */
184b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_HOST = 55,          /* VAR_FORWARD_HOST  */
185b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_ADDR = 56,          /* VAR_FORWARD_ADDR  */
186b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 57,  /* VAR_DO_NOT_QUERY_ADDRESS  */
187b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HIDE_IDENTITY = 58,         /* VAR_HIDE_IDENTITY  */
188b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HIDE_VERSION = 59,          /* VAR_HIDE_VERSION  */
189b7c0c8c1SCy Schubert   YYSYMBOL_VAR_IDENTITY = 60,              /* VAR_IDENTITY  */
190b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VERSION = 61,               /* VAR_VERSION  */
191b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_GLUE = 62,           /* VAR_HARDEN_GLUE  */
192b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MODULE_CONF = 63,           /* VAR_MODULE_CONF  */
193b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 64,     /* VAR_TRUST_ANCHOR_FILE  */
194b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TRUST_ANCHOR = 65,          /* VAR_TRUST_ANCHOR  */
195b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 66,     /* VAR_VAL_OVERRIDE_DATE  */
196b7c0c8c1SCy Schubert   YYSYMBOL_VAR_BOGUS_TTL = 67,             /* VAR_BOGUS_TTL  */
197b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 68,  /* VAR_VAL_CLEAN_ADDITIONAL  */
198b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 69,   /* VAR_VAL_PERMISSIVE_MODE  */
199b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INCOMING_NUM_TCP = 70,      /* VAR_INCOMING_NUM_TCP  */
200b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MSG_BUFFER_SIZE = 71,       /* VAR_MSG_BUFFER_SIZE  */
201b7c0c8c1SCy Schubert   YYSYMBOL_VAR_KEY_CACHE_SIZE = 72,        /* VAR_KEY_CACHE_SIZE  */
202b7c0c8c1SCy Schubert   YYSYMBOL_VAR_KEY_CACHE_SLABS = 73,       /* VAR_KEY_CACHE_SLABS  */
203b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 74,     /* VAR_TRUSTED_KEYS_FILE  */
204b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 75, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
205b7c0c8c1SCy Schubert   YYSYMBOL_VAR_USE_SYSLOG = 76,            /* VAR_USE_SYSLOG  */
206b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_INTERFACE = 77,    /* VAR_OUTGOING_INTERFACE  */
207b7c0c8c1SCy Schubert   YYSYMBOL_VAR_ROOT_HINTS = 78,            /* VAR_ROOT_HINTS  */
208b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 79, /* VAR_DO_NOT_QUERY_LOCALHOST  */
209b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CACHE_MAX_TTL = 80,         /* VAR_CACHE_MAX_TTL  */
210b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 81, /* VAR_HARDEN_DNSSEC_STRIPPED  */
211b7c0c8c1SCy Schubert   YYSYMBOL_VAR_ACCESS_CONTROL = 82,        /* VAR_ACCESS_CONTROL  */
212b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOCAL_ZONE = 83,            /* VAR_LOCAL_ZONE  */
213b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOCAL_DATA = 84,            /* VAR_LOCAL_DATA  */
214b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 85,   /* VAR_INTERFACE_AUTOMATIC  */
215b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STATISTICS_INTERVAL = 86,   /* VAR_STATISTICS_INTERVAL  */
216b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DO_DAEMONIZE = 87,          /* VAR_DO_DAEMONIZE  */
217b7c0c8c1SCy Schubert   YYSYMBOL_VAR_USE_CAPS_FOR_ID = 88,       /* VAR_USE_CAPS_FOR_ID  */
218b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 89, /* VAR_STATISTICS_CUMULATIVE  */
219b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 90,  /* VAR_OUTGOING_PORT_PERMIT  */
220b7c0c8c1SCy Schubert   YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 91,   /* VAR_OUTGOING_PORT_AVOID  */
221b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DLV_ANCHOR_FILE = 92,       /* VAR_DLV_ANCHOR_FILE  */
222b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DLV_ANCHOR = 93,            /* VAR_DLV_ANCHOR  */
223b7c0c8c1SCy Schubert   YYSYMBOL_VAR_NEG_CACHE_SIZE = 94,        /* VAR_NEG_CACHE_SIZE  */
224b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 95,  /* VAR_HARDEN_REFERRAL_PATH  */
225b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PRIVATE_ADDRESS = 96,       /* VAR_PRIVATE_ADDRESS  */
226b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PRIVATE_DOMAIN = 97,        /* VAR_PRIVATE_DOMAIN  */
227b7c0c8c1SCy Schubert   YYSYMBOL_VAR_REMOTE_CONTROL = 98,        /* VAR_REMOTE_CONTROL  */
228b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_ENABLE = 99,        /* VAR_CONTROL_ENABLE  */
229b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_INTERFACE = 100,    /* VAR_CONTROL_INTERFACE  */
230b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_PORT = 101,         /* VAR_CONTROL_PORT  */
231b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SERVER_KEY_FILE = 102,      /* VAR_SERVER_KEY_FILE  */
232b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SERVER_CERT_FILE = 103,     /* VAR_SERVER_CERT_FILE  */
233b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_KEY_FILE = 104,     /* VAR_CONTROL_KEY_FILE  */
234b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_CERT_FILE = 105,    /* VAR_CONTROL_CERT_FILE  */
235b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CONTROL_USE_CERT = 106,     /* VAR_CONTROL_USE_CERT  */
236b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 107,    /* VAR_TCP_REUSE_TIMEOUT  */
237b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 108, /* VAR_MAX_REUSE_TCP_QUERIES  */
238b7c0c8c1SCy Schubert   YYSYMBOL_VAR_EXTENDED_STATISTICS = 109,  /* VAR_EXTENDED_STATISTICS  */
239b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOCAL_DATA_PTR = 110,       /* VAR_LOCAL_DATA_PTR  */
240b7c0c8c1SCy Schubert   YYSYMBOL_VAR_JOSTLE_TIMEOUT = 111,       /* VAR_JOSTLE_TIMEOUT  */
241b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_PRIME = 112,           /* VAR_STUB_PRIME  */
242b7c0c8c1SCy Schubert   YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 113, /* VAR_UNWANTED_REPLY_THRESHOLD  */
243b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOG_TIME_ASCII = 114,       /* VAR_LOG_TIME_ASCII  */
244b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DOMAIN_INSECURE = 115,      /* VAR_DOMAIN_INSECURE  */
245b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PYTHON = 116,               /* VAR_PYTHON  */
246b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PYTHON_SCRIPT = 117,        /* VAR_PYTHON_SCRIPT  */
247b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 118,     /* VAR_VAL_SIG_SKEW_MIN  */
248b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 119,     /* VAR_VAL_SIG_SKEW_MAX  */
249b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_MAX_RESTART = 120,      /* VAR_VAL_MAX_RESTART  */
250b7c0c8c1SCy Schubert   YYSYMBOL_VAR_CACHE_MIN_TTL = 121,        /* VAR_CACHE_MIN_TTL  */
251b7c0c8c1SCy Schubert   YYSYMBOL_VAR_VAL_LOG_LEVEL = 122,        /* VAR_VAL_LOG_LEVEL  */
252b7c0c8c1SCy Schubert   YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 123, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
253b7c0c8c1SCy Schubert   YYSYMBOL_VAR_KEEP_MISSING = 124,         /* VAR_KEEP_MISSING  */
254b7c0c8c1SCy Schubert   YYSYMBOL_VAR_ADD_HOLDDOWN = 125,         /* VAR_ADD_HOLDDOWN  */
255b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DEL_HOLDDOWN = 126,         /* VAR_DEL_HOLDDOWN  */
256b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SO_RCVBUF = 127,            /* VAR_SO_RCVBUF  */
257b7c0c8c1SCy Schubert   YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 128,     /* VAR_EDNS_BUFFER_SIZE  */
258b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PREFETCH = 129,             /* VAR_PREFETCH  */
259b7c0c8c1SCy Schubert   YYSYMBOL_VAR_PREFETCH_KEY = 130,         /* VAR_PREFETCH_KEY  */
260b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SO_SNDBUF = 131,            /* VAR_SO_SNDBUF  */
261b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SO_REUSEPORT = 132,         /* VAR_SO_REUSEPORT  */
262b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 133, /* VAR_HARDEN_BELOW_NXDOMAIN  */
263b7c0c8c1SCy Schubert   YYSYMBOL_VAR_IGNORE_CD_FLAG = 134,       /* VAR_IGNORE_CD_FLAG  */
264b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOG_QUERIES = 135,          /* VAR_LOG_QUERIES  */
265b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOG_REPLIES = 136,          /* VAR_LOG_REPLIES  */
266b7c0c8c1SCy Schubert   YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 137,    /* VAR_LOG_LOCAL_ACTIONS  */
267b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TCP_UPSTREAM = 138,         /* VAR_TCP_UPSTREAM  */
268b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SSL_UPSTREAM = 139,         /* VAR_SSL_UPSTREAM  */
269b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 140, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
270b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SSL_SERVICE_KEY = 141,      /* VAR_SSL_SERVICE_KEY  */
271b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SSL_SERVICE_PEM = 142,      /* VAR_SSL_SERVICE_PEM  */
272b7c0c8c1SCy Schubert   YYSYMBOL_VAR_SSL_PORT = 143,             /* VAR_SSL_PORT  */
273b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_FIRST = 144,        /* VAR_FORWARD_FIRST  */
274b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 145,    /* VAR_STUB_SSL_UPSTREAM  */
275b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 146, /* VAR_FORWARD_SSL_UPSTREAM  */
276b7c0c8c1SCy Schubert   YYSYMBOL_VAR_TLS_CERT_BUNDLE = 147,      /* VAR_TLS_CERT_BUNDLE  */
277b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 148,    /* VAR_STUB_TCP_UPSTREAM  */
278b7c0c8c1SCy Schubert   YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 149, /* VAR_FORWARD_TCP_UPSTREAM  */
279b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTPS_PORT = 150,           /* VAR_HTTPS_PORT  */
280b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_ENDPOINT = 151,        /* VAR_HTTP_ENDPOINT  */
281b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_MAX_STREAMS = 152,     /* VAR_HTTP_MAX_STREAMS  */
282b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 153, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
283b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 154, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
284b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_NODELAY = 155,         /* VAR_HTTP_NODELAY  */
285b7c0c8c1SCy Schubert   YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 156, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
286b7c0c8c1SCy Schubert   YYSYMBOL_VAR_STUB_FIRST = 157,           /* VAR_STUB_FIRST  */
287b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MINIMAL_RESPONSES = 158,    /* VAR_MINIMAL_RESPONSES  */
288b7c0c8c1SCy Schubert   YYSYMBOL_VAR_RRSET_ROUNDROBIN = 159,     /* VAR_RRSET_ROUNDROBIN  */
289b7c0c8c1SCy Schubert   YYSYMBOL_VAR_MAX_UDP_SIZE = 160,         /* VAR_MAX_UDP_SIZE  */
290b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DELAY_CLOSE = 161,          /* VAR_DELAY_CLOSE  */
291b7c0c8c1SCy Schubert   YYSYMBOL_VAR_UDP_CONNECT = 162,          /* VAR_UDP_CONNECT  */
292b7c0c8c1SCy Schubert   YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 163,    /* VAR_UNBLOCK_LAN_ZONES  */
293b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INSECURE_LAN_ZONES = 164,   /* VAR_INSECURE_LAN_ZONES  */
294b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 165,  /* VAR_INFRA_CACHE_MIN_RTT  */
295b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_CACHE_MAX_RTT = 166,  /* VAR_INFRA_CACHE_MAX_RTT  */
296b7c0c8c1SCy Schubert   YYSYMBOL_VAR_INFRA_KEEP_PROBING = 167,   /* VAR_INFRA_KEEP_PROBING  */
297b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNS64_PREFIX = 168,         /* VAR_DNS64_PREFIX  */
298b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNS64_SYNTHALL = 169,       /* VAR_DNS64_SYNTHALL  */
299b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 170,    /* VAR_DNS64_IGNORE_AAAA  */
300b7c0c8c1SCy Schubert   YYSYMBOL_VAR_NAT64_PREFIX = 171,         /* VAR_NAT64_PREFIX  */
301b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP = 172,               /* VAR_DNSTAP  */
302b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_ENABLE = 173,        /* VAR_DNSTAP_ENABLE  */
303b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 174,   /* VAR_DNSTAP_SOCKET_PATH  */
304b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_IP = 175,            /* VAR_DNSTAP_IP  */
305b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_TLS = 176,           /* VAR_DNSTAP_TLS  */
306b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 177, /* VAR_DNSTAP_TLS_SERVER_NAME  */
307b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 178, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
308b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 179, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
309b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 180, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
310b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 181, /* VAR_DNSTAP_SEND_IDENTITY  */
311b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 182,  /* VAR_DNSTAP_SEND_VERSION  */
312b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 183, /* VAR_DNSTAP_BIDIRECTIONAL  */
313b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_IDENTITY = 184,      /* VAR_DNSTAP_IDENTITY  */
314b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_VERSION = 185,       /* VAR_DNSTAP_VERSION  */
315b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
316b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
317b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 188, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
318b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 189, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
319b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 190, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
320b7c0c8c1SCy Schubert   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 191, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
32156850988SCy Schubert   YYSYMBOL_VAR_DNSTAP_SAMPLE_RATE = 192,   /* VAR_DNSTAP_SAMPLE_RATE  */
32256850988SCy Schubert   YYSYMBOL_VAR_RESPONSE_IP_TAG = 193,      /* VAR_RESPONSE_IP_TAG  */
32356850988SCy Schubert   YYSYMBOL_VAR_RESPONSE_IP = 194,          /* VAR_RESPONSE_IP  */
32456850988SCy Schubert   YYSYMBOL_VAR_RESPONSE_IP_DATA = 195,     /* VAR_RESPONSE_IP_DATA  */
32556850988SCy Schubert   YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 196, /* VAR_HARDEN_ALGO_DOWNGRADE  */
32656850988SCy Schubert   YYSYMBOL_VAR_IP_TRANSPARENT = 197,       /* VAR_IP_TRANSPARENT  */
32756850988SCy Schubert   YYSYMBOL_VAR_IP_DSCP = 198,              /* VAR_IP_DSCP  */
32856850988SCy Schubert   YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 199, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
32956850988SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT = 200,         /* VAR_IP_RATELIMIT  */
33056850988SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 201,   /* VAR_IP_RATELIMIT_SLABS  */
33156850988SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 202,    /* VAR_IP_RATELIMIT_SIZE  */
33256850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT = 203,            /* VAR_RATELIMIT  */
33356850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_SLABS = 204,      /* VAR_RATELIMIT_SLABS  */
33456850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_SIZE = 205,       /* VAR_RATELIMIT_SIZE  */
33556850988SCy Schubert   YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 206,   /* VAR_OUTBOUND_MSG_RETRY  */
33656850988SCy Schubert   YYSYMBOL_VAR_MAX_SENT_COUNT = 207,       /* VAR_MAX_SENT_COUNT  */
33756850988SCy Schubert   YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 208,   /* VAR_MAX_QUERY_RESTARTS  */
33856850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 209, /* VAR_RATELIMIT_FOR_DOMAIN  */
33956850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 210, /* VAR_RATELIMIT_BELOW_DOMAIN  */
34056850988SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 211,  /* VAR_IP_RATELIMIT_FACTOR  */
34156850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_FACTOR = 212,     /* VAR_RATELIMIT_FACTOR  */
34256850988SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 213, /* VAR_IP_RATELIMIT_BACKOFF  */
34356850988SCy Schubert   YYSYMBOL_VAR_RATELIMIT_BACKOFF = 214,    /* VAR_RATELIMIT_BACKOFF  */
34456850988SCy Schubert   YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 215,   /* VAR_SEND_CLIENT_SUBNET  */
34556850988SCy Schubert   YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 216,   /* VAR_CLIENT_SUBNET_ZONE  */
34656850988SCy Schubert   YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 217, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
34756850988SCy Schubert   YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 218, /* VAR_CLIENT_SUBNET_OPCODE  */
34856850988SCy Schubert   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 219, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
34956850988SCy Schubert   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 220, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
35056850988SCy Schubert   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 221, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
35156850988SCy Schubert   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 222, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
35256850988SCy Schubert   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 223, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
35356850988SCy Schubert   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 224, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
35456850988SCy Schubert   YYSYMBOL_VAR_CAPS_WHITELIST = 225,       /* VAR_CAPS_WHITELIST  */
35556850988SCy Schubert   YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 226, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
35656850988SCy Schubert   YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 227, /* VAR_PERMIT_SMALL_HOLDDOWN  */
35756850988SCy Schubert   YYSYMBOL_VAR_CACHE_MIN_NEGATIVE_TTL = 228, /* VAR_CACHE_MIN_NEGATIVE_TTL  */
35856850988SCy Schubert   YYSYMBOL_VAR_QNAME_MINIMISATION = 229,   /* VAR_QNAME_MINIMISATION  */
35956850988SCy Schubert   YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 230, /* VAR_QNAME_MINIMISATION_STRICT  */
36056850988SCy Schubert   YYSYMBOL_VAR_IP_FREEBIND = 231,          /* VAR_IP_FREEBIND  */
36156850988SCy Schubert   YYSYMBOL_VAR_DEFINE_TAG = 232,           /* VAR_DEFINE_TAG  */
36256850988SCy Schubert   YYSYMBOL_VAR_LOCAL_ZONE_TAG = 233,       /* VAR_LOCAL_ZONE_TAG  */
36356850988SCy Schubert   YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 234,   /* VAR_ACCESS_CONTROL_TAG  */
36456850988SCy Schubert   YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 235,  /* VAR_LOCAL_ZONE_OVERRIDE  */
36556850988SCy Schubert   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 236, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
36656850988SCy Schubert   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 237, /* VAR_ACCESS_CONTROL_TAG_DATA  */
36756850988SCy Schubert   YYSYMBOL_VAR_VIEW = 238,                 /* VAR_VIEW  */
36856850988SCy Schubert   YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 239,  /* VAR_ACCESS_CONTROL_VIEW  */
36956850988SCy Schubert   YYSYMBOL_VAR_VIEW_FIRST = 240,           /* VAR_VIEW_FIRST  */
37056850988SCy Schubert   YYSYMBOL_VAR_SERVE_EXPIRED = 241,        /* VAR_SERVE_EXPIRED  */
37156850988SCy Schubert   YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 242,    /* VAR_SERVE_EXPIRED_TTL  */
37256850988SCy Schubert   YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 243, /* VAR_SERVE_EXPIRED_TTL_RESET  */
37356850988SCy Schubert   YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 244, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
37456850988SCy Schubert   YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 245, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
37556850988SCy Schubert   YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 246,    /* VAR_EDE_SERVE_EXPIRED  */
37656850988SCy Schubert   YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 247,   /* VAR_SERVE_ORIGINAL_TTL  */
37756850988SCy Schubert   YYSYMBOL_VAR_FAKE_DSA = 248,             /* VAR_FAKE_DSA  */
37856850988SCy Schubert   YYSYMBOL_VAR_FAKE_SHA1 = 249,            /* VAR_FAKE_SHA1  */
37956850988SCy Schubert   YYSYMBOL_VAR_LOG_IDENTITY = 250,         /* VAR_LOG_IDENTITY  */
38056850988SCy Schubert   YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 251,     /* VAR_HIDE_TRUSTANCHOR  */
38156850988SCy Schubert   YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 252, /* VAR_HIDE_HTTP_USER_AGENT  */
38256850988SCy Schubert   YYSYMBOL_VAR_HTTP_USER_AGENT = 253,      /* VAR_HTTP_USER_AGENT  */
38356850988SCy Schubert   YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 254, /* VAR_TRUST_ANCHOR_SIGNALING  */
38456850988SCy Schubert   YYSYMBOL_VAR_AGGRESSIVE_NSEC = 255,      /* VAR_AGGRESSIVE_NSEC  */
38556850988SCy Schubert   YYSYMBOL_VAR_USE_SYSTEMD = 256,          /* VAR_USE_SYSTEMD  */
38656850988SCy Schubert   YYSYMBOL_VAR_SHM_ENABLE = 257,           /* VAR_SHM_ENABLE  */
38756850988SCy Schubert   YYSYMBOL_VAR_SHM_KEY = 258,              /* VAR_SHM_KEY  */
38856850988SCy Schubert   YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 259,    /* VAR_ROOT_KEY_SENTINEL  */
38956850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT = 260,             /* VAR_DNSCRYPT  */
39056850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_ENABLE = 261,      /* VAR_DNSCRYPT_ENABLE  */
39156850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_PORT = 262,        /* VAR_DNSCRYPT_PORT  */
39256850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 263,    /* VAR_DNSCRYPT_PROVIDER  */
39356850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 264,  /* VAR_DNSCRYPT_SECRET_KEY  */
39456850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 265, /* VAR_DNSCRYPT_PROVIDER_CERT  */
39556850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 266, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
39656850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 267, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
39756850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 268, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
39856850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 269, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
39956850988SCy Schubert   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 270, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
40056850988SCy Schubert   YYSYMBOL_VAR_PAD_RESPONSES = 271,        /* VAR_PAD_RESPONSES  */
40156850988SCy Schubert   YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 272, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
40256850988SCy Schubert   YYSYMBOL_VAR_PAD_QUERIES = 273,          /* VAR_PAD_QUERIES  */
40356850988SCy Schubert   YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 274, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
40456850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_ENABLED = 275,     /* VAR_IPSECMOD_ENABLED  */
40556850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_HOOK = 276,        /* VAR_IPSECMOD_HOOK  */
40656850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 277, /* VAR_IPSECMOD_IGNORE_BOGUS  */
40756850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 278,     /* VAR_IPSECMOD_MAX_TTL  */
40856850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_WHITELIST = 279,   /* VAR_IPSECMOD_WHITELIST  */
40956850988SCy Schubert   YYSYMBOL_VAR_IPSECMOD_STRICT = 280,      /* VAR_IPSECMOD_STRICT  */
41056850988SCy Schubert   YYSYMBOL_VAR_CACHEDB = 281,              /* VAR_CACHEDB  */
41156850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_BACKEND = 282,      /* VAR_CACHEDB_BACKEND  */
41256850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_SECRETSEED = 283,   /* VAR_CACHEDB_SECRETSEED  */
41356850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISHOST = 284,    /* VAR_CACHEDB_REDISHOST  */
41456850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISPORT = 285,    /* VAR_CACHEDB_REDISPORT  */
41556850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 286, /* VAR_CACHEDB_REDISTIMEOUT  */
41656850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 287, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
41756850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISPATH = 288,    /* VAR_CACHEDB_REDISPATH  */
41856850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 289, /* VAR_CACHEDB_REDISPASSWORD  */
41956850988SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISLOGICALDB = 290, /* VAR_CACHEDB_REDISLOGICALDB  */
420*46d2f618SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISCOMMANDTIMEOUT = 291, /* VAR_CACHEDB_REDISCOMMANDTIMEOUT  */
421*46d2f618SCy Schubert   YYSYMBOL_VAR_CACHEDB_REDISCONNECTTIMEOUT = 292, /* VAR_CACHEDB_REDISCONNECTTIMEOUT  */
422*46d2f618SCy Schubert   YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 293, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
423*46d2f618SCy Schubert   YYSYMBOL_VAR_FOR_UPSTREAM = 294,         /* VAR_FOR_UPSTREAM  */
424*46d2f618SCy Schubert   YYSYMBOL_VAR_AUTH_ZONE = 295,            /* VAR_AUTH_ZONE  */
425*46d2f618SCy Schubert   YYSYMBOL_VAR_ZONEFILE = 296,             /* VAR_ZONEFILE  */
426*46d2f618SCy Schubert   YYSYMBOL_VAR_MASTER = 297,               /* VAR_MASTER  */
427*46d2f618SCy Schubert   YYSYMBOL_VAR_URL = 298,                  /* VAR_URL  */
428*46d2f618SCy Schubert   YYSYMBOL_VAR_FOR_DOWNSTREAM = 299,       /* VAR_FOR_DOWNSTREAM  */
429*46d2f618SCy Schubert   YYSYMBOL_VAR_FALLBACK_ENABLED = 300,     /* VAR_FALLBACK_ENABLED  */
430*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 301,  /* VAR_TLS_ADDITIONAL_PORT  */
431*46d2f618SCy Schubert   YYSYMBOL_VAR_LOW_RTT = 302,              /* VAR_LOW_RTT  */
432*46d2f618SCy Schubert   YYSYMBOL_VAR_LOW_RTT_PERMIL = 303,       /* VAR_LOW_RTT_PERMIL  */
433*46d2f618SCy Schubert   YYSYMBOL_VAR_FAST_SERVER_PERMIL = 304,   /* VAR_FAST_SERVER_PERMIL  */
434*46d2f618SCy Schubert   YYSYMBOL_VAR_FAST_SERVER_NUM = 305,      /* VAR_FAST_SERVER_NUM  */
435*46d2f618SCy Schubert   YYSYMBOL_VAR_ALLOW_NOTIFY = 306,         /* VAR_ALLOW_NOTIFY  */
436*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_WIN_CERT = 307,         /* VAR_TLS_WIN_CERT  */
437*46d2f618SCy Schubert   YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 308, /* VAR_TCP_CONNECTION_LIMIT  */
438*46d2f618SCy Schubert   YYSYMBOL_VAR_ANSWER_COOKIE = 309,        /* VAR_ANSWER_COOKIE  */
439*46d2f618SCy Schubert   YYSYMBOL_VAR_COOKIE_SECRET = 310,        /* VAR_COOKIE_SECRET  */
440*46d2f618SCy Schubert   YYSYMBOL_VAR_IP_RATELIMIT_COOKIE = 311,  /* VAR_IP_RATELIMIT_COOKIE  */
441*46d2f618SCy Schubert   YYSYMBOL_VAR_FORWARD_NO_CACHE = 312,     /* VAR_FORWARD_NO_CACHE  */
442*46d2f618SCy Schubert   YYSYMBOL_VAR_STUB_NO_CACHE = 313,        /* VAR_STUB_NO_CACHE  */
443*46d2f618SCy Schubert   YYSYMBOL_VAR_LOG_SERVFAIL = 314,         /* VAR_LOG_SERVFAIL  */
444*46d2f618SCy Schubert   YYSYMBOL_VAR_DENY_ANY = 315,             /* VAR_DENY_ANY  */
445*46d2f618SCy Schubert   YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 316, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
446*46d2f618SCy Schubert   YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 317,   /* VAR_LOG_TAG_QUERYREPLY  */
447*46d2f618SCy Schubert   YYSYMBOL_VAR_DISCARD_TIMEOUT = 318,      /* VAR_DISCARD_TIMEOUT  */
448*46d2f618SCy Schubert   YYSYMBOL_VAR_WAIT_LIMIT = 319,           /* VAR_WAIT_LIMIT  */
449*46d2f618SCy Schubert   YYSYMBOL_VAR_WAIT_LIMIT_COOKIE = 320,    /* VAR_WAIT_LIMIT_COOKIE  */
450*46d2f618SCy Schubert   YYSYMBOL_VAR_WAIT_LIMIT_NETBLOCK = 321,  /* VAR_WAIT_LIMIT_NETBLOCK  */
451*46d2f618SCy Schubert   YYSYMBOL_VAR_WAIT_LIMIT_COOKIE_NETBLOCK = 322, /* VAR_WAIT_LIMIT_COOKIE_NETBLOCK  */
452*46d2f618SCy Schubert   YYSYMBOL_VAR_STREAM_WAIT_SIZE = 323,     /* VAR_STREAM_WAIT_SIZE  */
453*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_CIPHERS = 324,          /* VAR_TLS_CIPHERS  */
454*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_CIPHERSUITES = 325,     /* VAR_TLS_CIPHERSUITES  */
455*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_USE_SNI = 326,          /* VAR_TLS_USE_SNI  */
456*46d2f618SCy Schubert   YYSYMBOL_VAR_IPSET = 327,                /* VAR_IPSET  */
457*46d2f618SCy Schubert   YYSYMBOL_VAR_IPSET_NAME_V4 = 328,        /* VAR_IPSET_NAME_V4  */
458*46d2f618SCy Schubert   YYSYMBOL_VAR_IPSET_NAME_V6 = 329,        /* VAR_IPSET_NAME_V6  */
459*46d2f618SCy Schubert   YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 330, /* VAR_TLS_SESSION_TICKET_KEYS  */
460*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ = 331,                  /* VAR_RPZ  */
461*46d2f618SCy Schubert   YYSYMBOL_VAR_TAGS = 332,                 /* VAR_TAGS  */
462*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 333,  /* VAR_RPZ_ACTION_OVERRIDE  */
463*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 334,   /* VAR_RPZ_CNAME_OVERRIDE  */
464*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ_LOG = 335,              /* VAR_RPZ_LOG  */
465*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ_LOG_NAME = 336,         /* VAR_RPZ_LOG_NAME  */
466*46d2f618SCy Schubert   YYSYMBOL_VAR_DYNLIB = 337,               /* VAR_DYNLIB  */
467*46d2f618SCy Schubert   YYSYMBOL_VAR_DYNLIB_FILE = 338,          /* VAR_DYNLIB_FILE  */
468*46d2f618SCy Schubert   YYSYMBOL_VAR_EDNS_CLIENT_STRING = 339,   /* VAR_EDNS_CLIENT_STRING  */
469*46d2f618SCy Schubert   YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 340, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
470*46d2f618SCy Schubert   YYSYMBOL_VAR_NSID = 341,                 /* VAR_NSID  */
471*46d2f618SCy Schubert   YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 342, /* VAR_ZONEMD_PERMISSIVE_MODE  */
472*46d2f618SCy Schubert   YYSYMBOL_VAR_ZONEMD_CHECK = 343,         /* VAR_ZONEMD_CHECK  */
473*46d2f618SCy Schubert   YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 344, /* VAR_ZONEMD_REJECT_ABSENCE  */
474*46d2f618SCy Schubert   YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 345, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
475*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 346, /* VAR_INTERFACE_AUTOMATIC_PORTS  */
476*46d2f618SCy Schubert   YYSYMBOL_VAR_EDE = 347,                  /* VAR_EDE  */
477*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_ACTION = 348,     /* VAR_INTERFACE_ACTION  */
478*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_VIEW = 349,       /* VAR_INTERFACE_VIEW  */
479*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_TAG = 350,        /* VAR_INTERFACE_TAG  */
480*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 351, /* VAR_INTERFACE_TAG_ACTION  */
481*46d2f618SCy Schubert   YYSYMBOL_VAR_INTERFACE_TAG_DATA = 352,   /* VAR_INTERFACE_TAG_DATA  */
482*46d2f618SCy Schubert   YYSYMBOL_VAR_QUIC_PORT = 353,            /* VAR_QUIC_PORT  */
483*46d2f618SCy Schubert   YYSYMBOL_VAR_QUIC_SIZE = 354,            /* VAR_QUIC_SIZE  */
484*46d2f618SCy Schubert   YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 355,  /* VAR_PROXY_PROTOCOL_PORT  */
485*46d2f618SCy Schubert   YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 356, /* VAR_STATISTICS_INHIBIT_ZERO  */
486*46d2f618SCy Schubert   YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 357, /* VAR_HARDEN_UNKNOWN_ADDITIONAL  */
487*46d2f618SCy Schubert   YYSYMBOL_VAR_DISABLE_EDNS_DO = 358,      /* VAR_DISABLE_EDNS_DO  */
488*46d2f618SCy Schubert   YYSYMBOL_VAR_CACHEDB_NO_STORE = 359,     /* VAR_CACHEDB_NO_STORE  */
489*46d2f618SCy Schubert   YYSYMBOL_VAR_LOG_DESTADDR = 360,         /* VAR_LOG_DESTADDR  */
490*46d2f618SCy Schubert   YYSYMBOL_VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED = 361, /* VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED  */
491*46d2f618SCy Schubert   YYSYMBOL_VAR_COOKIE_SECRET_FILE = 362,   /* VAR_COOKIE_SECRET_FILE  */
492*46d2f618SCy Schubert   YYSYMBOL_VAR_ITER_SCRUB_NS = 363,        /* VAR_ITER_SCRUB_NS  */
493*46d2f618SCy Schubert   YYSYMBOL_VAR_ITER_SCRUB_CNAME = 364,     /* VAR_ITER_SCRUB_CNAME  */
494*46d2f618SCy Schubert   YYSYMBOL_VAR_MAX_GLOBAL_QUOTA = 365,     /* VAR_MAX_GLOBAL_QUOTA  */
495*46d2f618SCy Schubert   YYSYMBOL_VAR_HARDEN_UNVERIFIED_GLUE = 366, /* VAR_HARDEN_UNVERIFIED_GLUE  */
496*46d2f618SCy Schubert   YYSYMBOL_VAR_LOG_TIME_ISO = 367,         /* VAR_LOG_TIME_ISO  */
497*46d2f618SCy Schubert   YYSYMBOL_YYACCEPT = 368,                 /* $accept  */
498*46d2f618SCy Schubert   YYSYMBOL_toplevelvars = 369,             /* toplevelvars  */
499*46d2f618SCy Schubert   YYSYMBOL_toplevelvar = 370,              /* toplevelvar  */
500*46d2f618SCy Schubert   YYSYMBOL_force_toplevel = 371,           /* force_toplevel  */
501*46d2f618SCy Schubert   YYSYMBOL_serverstart = 372,              /* serverstart  */
502*46d2f618SCy Schubert   YYSYMBOL_contents_server = 373,          /* contents_server  */
503*46d2f618SCy Schubert   YYSYMBOL_content_server = 374,           /* content_server  */
504*46d2f618SCy Schubert   YYSYMBOL_stub_clause = 375,              /* stub_clause  */
505*46d2f618SCy Schubert   YYSYMBOL_stubstart = 376,                /* stubstart  */
506*46d2f618SCy Schubert   YYSYMBOL_contents_stub = 377,            /* contents_stub  */
507*46d2f618SCy Schubert   YYSYMBOL_content_stub = 378,             /* content_stub  */
508*46d2f618SCy Schubert   YYSYMBOL_forward_clause = 379,           /* forward_clause  */
509*46d2f618SCy Schubert   YYSYMBOL_forwardstart = 380,             /* forwardstart  */
510*46d2f618SCy Schubert   YYSYMBOL_contents_forward = 381,         /* contents_forward  */
511*46d2f618SCy Schubert   YYSYMBOL_content_forward = 382,          /* content_forward  */
512*46d2f618SCy Schubert   YYSYMBOL_view_clause = 383,              /* view_clause  */
513*46d2f618SCy Schubert   YYSYMBOL_viewstart = 384,                /* viewstart  */
514*46d2f618SCy Schubert   YYSYMBOL_contents_view = 385,            /* contents_view  */
515*46d2f618SCy Schubert   YYSYMBOL_content_view = 386,             /* content_view  */
516*46d2f618SCy Schubert   YYSYMBOL_authstart = 387,                /* authstart  */
517*46d2f618SCy Schubert   YYSYMBOL_contents_auth = 388,            /* contents_auth  */
518*46d2f618SCy Schubert   YYSYMBOL_content_auth = 389,             /* content_auth  */
519*46d2f618SCy Schubert   YYSYMBOL_rpz_tag = 390,                  /* rpz_tag  */
520*46d2f618SCy Schubert   YYSYMBOL_rpz_action_override = 391,      /* rpz_action_override  */
521*46d2f618SCy Schubert   YYSYMBOL_rpz_cname_override = 392,       /* rpz_cname_override  */
522*46d2f618SCy Schubert   YYSYMBOL_rpz_log = 393,                  /* rpz_log  */
523*46d2f618SCy Schubert   YYSYMBOL_rpz_log_name = 394,             /* rpz_log_name  */
524*46d2f618SCy Schubert   YYSYMBOL_rpz_signal_nxdomain_ra = 395,   /* rpz_signal_nxdomain_ra  */
525*46d2f618SCy Schubert   YYSYMBOL_rpzstart = 396,                 /* rpzstart  */
526*46d2f618SCy Schubert   YYSYMBOL_contents_rpz = 397,             /* contents_rpz  */
527*46d2f618SCy Schubert   YYSYMBOL_content_rpz = 398,              /* content_rpz  */
528*46d2f618SCy Schubert   YYSYMBOL_server_num_threads = 399,       /* server_num_threads  */
529*46d2f618SCy Schubert   YYSYMBOL_server_verbosity = 400,         /* server_verbosity  */
530*46d2f618SCy Schubert   YYSYMBOL_server_statistics_interval = 401, /* server_statistics_interval  */
531*46d2f618SCy Schubert   YYSYMBOL_server_statistics_cumulative = 402, /* server_statistics_cumulative  */
532*46d2f618SCy Schubert   YYSYMBOL_server_extended_statistics = 403, /* server_extended_statistics  */
533*46d2f618SCy Schubert   YYSYMBOL_server_statistics_inhibit_zero = 404, /* server_statistics_inhibit_zero  */
534*46d2f618SCy Schubert   YYSYMBOL_server_shm_enable = 405,        /* server_shm_enable  */
535*46d2f618SCy Schubert   YYSYMBOL_server_shm_key = 406,           /* server_shm_key  */
536*46d2f618SCy Schubert   YYSYMBOL_server_port = 407,              /* server_port  */
537*46d2f618SCy Schubert   YYSYMBOL_server_send_client_subnet = 408, /* server_send_client_subnet  */
538*46d2f618SCy Schubert   YYSYMBOL_server_client_subnet_zone = 409, /* server_client_subnet_zone  */
539*46d2f618SCy Schubert   YYSYMBOL_server_client_subnet_always_forward = 410, /* server_client_subnet_always_forward  */
540*46d2f618SCy Schubert   YYSYMBOL_server_client_subnet_opcode = 411, /* server_client_subnet_opcode  */
541*46d2f618SCy Schubert   YYSYMBOL_server_max_client_subnet_ipv4 = 412, /* server_max_client_subnet_ipv4  */
542*46d2f618SCy Schubert   YYSYMBOL_server_max_client_subnet_ipv6 = 413, /* server_max_client_subnet_ipv6  */
543*46d2f618SCy Schubert   YYSYMBOL_server_min_client_subnet_ipv4 = 414, /* server_min_client_subnet_ipv4  */
544*46d2f618SCy Schubert   YYSYMBOL_server_min_client_subnet_ipv6 = 415, /* server_min_client_subnet_ipv6  */
545*46d2f618SCy Schubert   YYSYMBOL_server_max_ecs_tree_size_ipv4 = 416, /* server_max_ecs_tree_size_ipv4  */
546*46d2f618SCy Schubert   YYSYMBOL_server_max_ecs_tree_size_ipv6 = 417, /* server_max_ecs_tree_size_ipv6  */
547*46d2f618SCy Schubert   YYSYMBOL_server_interface = 418,         /* server_interface  */
548*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_interface = 419, /* server_outgoing_interface  */
549*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_range = 420,    /* server_outgoing_range  */
550*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_port_permit = 421, /* server_outgoing_port_permit  */
551*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_port_avoid = 422, /* server_outgoing_port_avoid  */
552*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_num_tcp = 423,  /* server_outgoing_num_tcp  */
553*46d2f618SCy Schubert   YYSYMBOL_server_incoming_num_tcp = 424,  /* server_incoming_num_tcp  */
554*46d2f618SCy Schubert   YYSYMBOL_server_interface_automatic = 425, /* server_interface_automatic  */
555*46d2f618SCy Schubert   YYSYMBOL_server_interface_automatic_ports = 426, /* server_interface_automatic_ports  */
556*46d2f618SCy Schubert   YYSYMBOL_server_do_ip4 = 427,            /* server_do_ip4  */
557*46d2f618SCy Schubert   YYSYMBOL_server_do_ip6 = 428,            /* server_do_ip6  */
558*46d2f618SCy Schubert   YYSYMBOL_server_do_nat64 = 429,          /* server_do_nat64  */
559*46d2f618SCy Schubert   YYSYMBOL_server_do_udp = 430,            /* server_do_udp  */
560*46d2f618SCy Schubert   YYSYMBOL_server_do_tcp = 431,            /* server_do_tcp  */
561*46d2f618SCy Schubert   YYSYMBOL_server_prefer_ip4 = 432,        /* server_prefer_ip4  */
562*46d2f618SCy Schubert   YYSYMBOL_server_prefer_ip6 = 433,        /* server_prefer_ip6  */
563*46d2f618SCy Schubert   YYSYMBOL_server_tcp_mss = 434,           /* server_tcp_mss  */
564*46d2f618SCy Schubert   YYSYMBOL_server_outgoing_tcp_mss = 435,  /* server_outgoing_tcp_mss  */
565*46d2f618SCy Schubert   YYSYMBOL_server_tcp_idle_timeout = 436,  /* server_tcp_idle_timeout  */
566*46d2f618SCy Schubert   YYSYMBOL_server_max_reuse_tcp_queries = 437, /* server_max_reuse_tcp_queries  */
567*46d2f618SCy Schubert   YYSYMBOL_server_tcp_reuse_timeout = 438, /* server_tcp_reuse_timeout  */
568*46d2f618SCy Schubert   YYSYMBOL_server_tcp_auth_query_timeout = 439, /* server_tcp_auth_query_timeout  */
569*46d2f618SCy Schubert   YYSYMBOL_server_tcp_keepalive = 440,     /* server_tcp_keepalive  */
570*46d2f618SCy Schubert   YYSYMBOL_server_tcp_keepalive_timeout = 441, /* server_tcp_keepalive_timeout  */
571*46d2f618SCy Schubert   YYSYMBOL_server_sock_queue_timeout = 442, /* server_sock_queue_timeout  */
572*46d2f618SCy Schubert   YYSYMBOL_server_tcp_upstream = 443,      /* server_tcp_upstream  */
573*46d2f618SCy Schubert   YYSYMBOL_server_udp_upstream_without_downstream = 444, /* server_udp_upstream_without_downstream  */
574*46d2f618SCy Schubert   YYSYMBOL_server_ssl_upstream = 445,      /* server_ssl_upstream  */
575*46d2f618SCy Schubert   YYSYMBOL_server_ssl_service_key = 446,   /* server_ssl_service_key  */
576*46d2f618SCy Schubert   YYSYMBOL_server_ssl_service_pem = 447,   /* server_ssl_service_pem  */
577*46d2f618SCy Schubert   YYSYMBOL_server_ssl_port = 448,          /* server_ssl_port  */
578*46d2f618SCy Schubert   YYSYMBOL_server_tls_cert_bundle = 449,   /* server_tls_cert_bundle  */
579*46d2f618SCy Schubert   YYSYMBOL_server_tls_win_cert = 450,      /* server_tls_win_cert  */
580*46d2f618SCy Schubert   YYSYMBOL_server_tls_additional_port = 451, /* server_tls_additional_port  */
581*46d2f618SCy Schubert   YYSYMBOL_server_tls_ciphers = 452,       /* server_tls_ciphers  */
582*46d2f618SCy Schubert   YYSYMBOL_server_tls_ciphersuites = 453,  /* server_tls_ciphersuites  */
583*46d2f618SCy Schubert   YYSYMBOL_server_tls_session_ticket_keys = 454, /* server_tls_session_ticket_keys  */
584*46d2f618SCy Schubert   YYSYMBOL_server_tls_use_sni = 455,       /* server_tls_use_sni  */
585*46d2f618SCy Schubert   YYSYMBOL_server_https_port = 456,        /* server_https_port  */
586*46d2f618SCy Schubert   YYSYMBOL_server_http_endpoint = 457,     /* server_http_endpoint  */
587*46d2f618SCy Schubert   YYSYMBOL_server_http_max_streams = 458,  /* server_http_max_streams  */
588*46d2f618SCy Schubert   YYSYMBOL_server_http_query_buffer_size = 459, /* server_http_query_buffer_size  */
589*46d2f618SCy Schubert   YYSYMBOL_server_http_response_buffer_size = 460, /* server_http_response_buffer_size  */
590*46d2f618SCy Schubert   YYSYMBOL_server_http_nodelay = 461,      /* server_http_nodelay  */
591*46d2f618SCy Schubert   YYSYMBOL_server_http_notls_downstream = 462, /* server_http_notls_downstream  */
592*46d2f618SCy Schubert   YYSYMBOL_server_quic_port = 463,         /* server_quic_port  */
593*46d2f618SCy Schubert   YYSYMBOL_server_quic_size = 464,         /* server_quic_size  */
594*46d2f618SCy Schubert   YYSYMBOL_server_use_systemd = 465,       /* server_use_systemd  */
595*46d2f618SCy Schubert   YYSYMBOL_server_do_daemonize = 466,      /* server_do_daemonize  */
596*46d2f618SCy Schubert   YYSYMBOL_server_use_syslog = 467,        /* server_use_syslog  */
597*46d2f618SCy Schubert   YYSYMBOL_server_log_time_ascii = 468,    /* server_log_time_ascii  */
598*46d2f618SCy Schubert   YYSYMBOL_server_log_time_iso = 469,      /* server_log_time_iso  */
599*46d2f618SCy Schubert   YYSYMBOL_server_log_queries = 470,       /* server_log_queries  */
600*46d2f618SCy Schubert   YYSYMBOL_server_log_replies = 471,       /* server_log_replies  */
601*46d2f618SCy Schubert   YYSYMBOL_server_log_tag_queryreply = 472, /* server_log_tag_queryreply  */
602*46d2f618SCy Schubert   YYSYMBOL_server_log_servfail = 473,      /* server_log_servfail  */
603*46d2f618SCy Schubert   YYSYMBOL_server_log_destaddr = 474,      /* server_log_destaddr  */
604*46d2f618SCy Schubert   YYSYMBOL_server_log_local_actions = 475, /* server_log_local_actions  */
605*46d2f618SCy Schubert   YYSYMBOL_server_chroot = 476,            /* server_chroot  */
606*46d2f618SCy Schubert   YYSYMBOL_server_username = 477,          /* server_username  */
607*46d2f618SCy Schubert   YYSYMBOL_server_directory = 478,         /* server_directory  */
608*46d2f618SCy Schubert   YYSYMBOL_server_logfile = 479,           /* server_logfile  */
609*46d2f618SCy Schubert   YYSYMBOL_server_pidfile = 480,           /* server_pidfile  */
610*46d2f618SCy Schubert   YYSYMBOL_server_root_hints = 481,        /* server_root_hints  */
611*46d2f618SCy Schubert   YYSYMBOL_server_dlv_anchor_file = 482,   /* server_dlv_anchor_file  */
612*46d2f618SCy Schubert   YYSYMBOL_server_dlv_anchor = 483,        /* server_dlv_anchor  */
613*46d2f618SCy Schubert   YYSYMBOL_server_auto_trust_anchor_file = 484, /* server_auto_trust_anchor_file  */
614*46d2f618SCy Schubert   YYSYMBOL_server_trust_anchor_file = 485, /* server_trust_anchor_file  */
615*46d2f618SCy Schubert   YYSYMBOL_server_trusted_keys_file = 486, /* server_trusted_keys_file  */
616*46d2f618SCy Schubert   YYSYMBOL_server_trust_anchor = 487,      /* server_trust_anchor  */
617*46d2f618SCy Schubert   YYSYMBOL_server_trust_anchor_signaling = 488, /* server_trust_anchor_signaling  */
618*46d2f618SCy Schubert   YYSYMBOL_server_root_key_sentinel = 489, /* server_root_key_sentinel  */
619*46d2f618SCy Schubert   YYSYMBOL_server_domain_insecure = 490,   /* server_domain_insecure  */
620*46d2f618SCy Schubert   YYSYMBOL_server_hide_identity = 491,     /* server_hide_identity  */
621*46d2f618SCy Schubert   YYSYMBOL_server_hide_version = 492,      /* server_hide_version  */
622*46d2f618SCy Schubert   YYSYMBOL_server_hide_trustanchor = 493,  /* server_hide_trustanchor  */
623*46d2f618SCy Schubert   YYSYMBOL_server_hide_http_user_agent = 494, /* server_hide_http_user_agent  */
624*46d2f618SCy Schubert   YYSYMBOL_server_identity = 495,          /* server_identity  */
625*46d2f618SCy Schubert   YYSYMBOL_server_version = 496,           /* server_version  */
626*46d2f618SCy Schubert   YYSYMBOL_server_http_user_agent = 497,   /* server_http_user_agent  */
627*46d2f618SCy Schubert   YYSYMBOL_server_nsid = 498,              /* server_nsid  */
628*46d2f618SCy Schubert   YYSYMBOL_server_so_rcvbuf = 499,         /* server_so_rcvbuf  */
629*46d2f618SCy Schubert   YYSYMBOL_server_so_sndbuf = 500,         /* server_so_sndbuf  */
630*46d2f618SCy Schubert   YYSYMBOL_server_so_reuseport = 501,      /* server_so_reuseport  */
631*46d2f618SCy Schubert   YYSYMBOL_server_ip_transparent = 502,    /* server_ip_transparent  */
632*46d2f618SCy Schubert   YYSYMBOL_server_ip_freebind = 503,       /* server_ip_freebind  */
633*46d2f618SCy Schubert   YYSYMBOL_server_ip_dscp = 504,           /* server_ip_dscp  */
634*46d2f618SCy Schubert   YYSYMBOL_server_stream_wait_size = 505,  /* server_stream_wait_size  */
635*46d2f618SCy Schubert   YYSYMBOL_server_edns_buffer_size = 506,  /* server_edns_buffer_size  */
636*46d2f618SCy Schubert   YYSYMBOL_server_msg_buffer_size = 507,   /* server_msg_buffer_size  */
637*46d2f618SCy Schubert   YYSYMBOL_server_msg_cache_size = 508,    /* server_msg_cache_size  */
638*46d2f618SCy Schubert   YYSYMBOL_server_msg_cache_slabs = 509,   /* server_msg_cache_slabs  */
639*46d2f618SCy Schubert   YYSYMBOL_server_num_queries_per_thread = 510, /* server_num_queries_per_thread  */
640*46d2f618SCy Schubert   YYSYMBOL_server_jostle_timeout = 511,    /* server_jostle_timeout  */
641*46d2f618SCy Schubert   YYSYMBOL_server_delay_close = 512,       /* server_delay_close  */
642*46d2f618SCy Schubert   YYSYMBOL_server_udp_connect = 513,       /* server_udp_connect  */
643*46d2f618SCy Schubert   YYSYMBOL_server_unblock_lan_zones = 514, /* server_unblock_lan_zones  */
644*46d2f618SCy Schubert   YYSYMBOL_server_insecure_lan_zones = 515, /* server_insecure_lan_zones  */
645*46d2f618SCy Schubert   YYSYMBOL_server_rrset_cache_size = 516,  /* server_rrset_cache_size  */
646*46d2f618SCy Schubert   YYSYMBOL_server_rrset_cache_slabs = 517, /* server_rrset_cache_slabs  */
647*46d2f618SCy Schubert   YYSYMBOL_server_infra_host_ttl = 518,    /* server_infra_host_ttl  */
648*46d2f618SCy Schubert   YYSYMBOL_server_infra_lame_ttl = 519,    /* server_infra_lame_ttl  */
649*46d2f618SCy Schubert   YYSYMBOL_server_infra_cache_numhosts = 520, /* server_infra_cache_numhosts  */
650*46d2f618SCy Schubert   YYSYMBOL_server_infra_cache_lame_size = 521, /* server_infra_cache_lame_size  */
651*46d2f618SCy Schubert   YYSYMBOL_server_infra_cache_slabs = 522, /* server_infra_cache_slabs  */
652*46d2f618SCy Schubert   YYSYMBOL_server_infra_cache_min_rtt = 523, /* server_infra_cache_min_rtt  */
653*46d2f618SCy Schubert   YYSYMBOL_server_infra_cache_max_rtt = 524, /* server_infra_cache_max_rtt  */
654*46d2f618SCy Schubert   YYSYMBOL_server_infra_keep_probing = 525, /* server_infra_keep_probing  */
655*46d2f618SCy Schubert   YYSYMBOL_server_target_fetch_policy = 526, /* server_target_fetch_policy  */
656*46d2f618SCy Schubert   YYSYMBOL_server_harden_short_bufsize = 527, /* server_harden_short_bufsize  */
657*46d2f618SCy Schubert   YYSYMBOL_server_harden_large_queries = 528, /* server_harden_large_queries  */
658*46d2f618SCy Schubert   YYSYMBOL_server_harden_glue = 529,       /* server_harden_glue  */
659*46d2f618SCy Schubert   YYSYMBOL_server_harden_unverified_glue = 530, /* server_harden_unverified_glue  */
660*46d2f618SCy Schubert   YYSYMBOL_server_harden_dnssec_stripped = 531, /* server_harden_dnssec_stripped  */
661*46d2f618SCy Schubert   YYSYMBOL_server_harden_below_nxdomain = 532, /* server_harden_below_nxdomain  */
662*46d2f618SCy Schubert   YYSYMBOL_server_harden_referral_path = 533, /* server_harden_referral_path  */
663*46d2f618SCy Schubert   YYSYMBOL_server_harden_algo_downgrade = 534, /* server_harden_algo_downgrade  */
664*46d2f618SCy Schubert   YYSYMBOL_server_harden_unknown_additional = 535, /* server_harden_unknown_additional  */
665*46d2f618SCy Schubert   YYSYMBOL_server_use_caps_for_id = 536,   /* server_use_caps_for_id  */
666*46d2f618SCy Schubert   YYSYMBOL_server_caps_whitelist = 537,    /* server_caps_whitelist  */
667*46d2f618SCy Schubert   YYSYMBOL_server_private_address = 538,   /* server_private_address  */
668*46d2f618SCy Schubert   YYSYMBOL_server_private_domain = 539,    /* server_private_domain  */
669*46d2f618SCy Schubert   YYSYMBOL_server_prefetch = 540,          /* server_prefetch  */
670*46d2f618SCy Schubert   YYSYMBOL_server_prefetch_key = 541,      /* server_prefetch_key  */
671*46d2f618SCy Schubert   YYSYMBOL_server_deny_any = 542,          /* server_deny_any  */
672*46d2f618SCy Schubert   YYSYMBOL_server_unwanted_reply_threshold = 543, /* server_unwanted_reply_threshold  */
673*46d2f618SCy Schubert   YYSYMBOL_server_do_not_query_address = 544, /* server_do_not_query_address  */
674*46d2f618SCy Schubert   YYSYMBOL_server_do_not_query_localhost = 545, /* server_do_not_query_localhost  */
675*46d2f618SCy Schubert   YYSYMBOL_server_access_control = 546,    /* server_access_control  */
676*46d2f618SCy Schubert   YYSYMBOL_server_interface_action = 547,  /* server_interface_action  */
677*46d2f618SCy Schubert   YYSYMBOL_server_module_conf = 548,       /* server_module_conf  */
678*46d2f618SCy Schubert   YYSYMBOL_server_val_override_date = 549, /* server_val_override_date  */
679*46d2f618SCy Schubert   YYSYMBOL_server_val_sig_skew_min = 550,  /* server_val_sig_skew_min  */
680*46d2f618SCy Schubert   YYSYMBOL_server_val_sig_skew_max = 551,  /* server_val_sig_skew_max  */
681*46d2f618SCy Schubert   YYSYMBOL_server_val_max_restart = 552,   /* server_val_max_restart  */
682*46d2f618SCy Schubert   YYSYMBOL_server_cache_max_ttl = 553,     /* server_cache_max_ttl  */
683*46d2f618SCy Schubert   YYSYMBOL_server_cache_max_negative_ttl = 554, /* server_cache_max_negative_ttl  */
684*46d2f618SCy Schubert   YYSYMBOL_server_cache_min_negative_ttl = 555, /* server_cache_min_negative_ttl  */
685*46d2f618SCy Schubert   YYSYMBOL_server_cache_min_ttl = 556,     /* server_cache_min_ttl  */
686*46d2f618SCy Schubert   YYSYMBOL_server_bogus_ttl = 557,         /* server_bogus_ttl  */
687*46d2f618SCy Schubert   YYSYMBOL_server_val_clean_additional = 558, /* server_val_clean_additional  */
688*46d2f618SCy Schubert   YYSYMBOL_server_val_permissive_mode = 559, /* server_val_permissive_mode  */
689*46d2f618SCy Schubert   YYSYMBOL_server_aggressive_nsec = 560,   /* server_aggressive_nsec  */
690*46d2f618SCy Schubert   YYSYMBOL_server_ignore_cd_flag = 561,    /* server_ignore_cd_flag  */
691*46d2f618SCy Schubert   YYSYMBOL_server_disable_edns_do = 562,   /* server_disable_edns_do  */
692*46d2f618SCy Schubert   YYSYMBOL_server_serve_expired = 563,     /* server_serve_expired  */
693*46d2f618SCy Schubert   YYSYMBOL_server_serve_expired_ttl = 564, /* server_serve_expired_ttl  */
694*46d2f618SCy Schubert   YYSYMBOL_server_serve_expired_ttl_reset = 565, /* server_serve_expired_ttl_reset  */
695*46d2f618SCy Schubert   YYSYMBOL_server_serve_expired_reply_ttl = 566, /* server_serve_expired_reply_ttl  */
696*46d2f618SCy Schubert   YYSYMBOL_server_serve_expired_client_timeout = 567, /* server_serve_expired_client_timeout  */
697*46d2f618SCy Schubert   YYSYMBOL_server_ede_serve_expired = 568, /* server_ede_serve_expired  */
698*46d2f618SCy Schubert   YYSYMBOL_server_serve_original_ttl = 569, /* server_serve_original_ttl  */
699*46d2f618SCy Schubert   YYSYMBOL_server_fake_dsa = 570,          /* server_fake_dsa  */
700*46d2f618SCy Schubert   YYSYMBOL_server_fake_sha1 = 571,         /* server_fake_sha1  */
701*46d2f618SCy Schubert   YYSYMBOL_server_val_log_level = 572,     /* server_val_log_level  */
702*46d2f618SCy Schubert   YYSYMBOL_server_val_nsec3_keysize_iterations = 573, /* server_val_nsec3_keysize_iterations  */
703*46d2f618SCy Schubert   YYSYMBOL_server_zonemd_permissive_mode = 574, /* server_zonemd_permissive_mode  */
704*46d2f618SCy Schubert   YYSYMBOL_server_add_holddown = 575,      /* server_add_holddown  */
705*46d2f618SCy Schubert   YYSYMBOL_server_del_holddown = 576,      /* server_del_holddown  */
706*46d2f618SCy Schubert   YYSYMBOL_server_keep_missing = 577,      /* server_keep_missing  */
707*46d2f618SCy Schubert   YYSYMBOL_server_permit_small_holddown = 578, /* server_permit_small_holddown  */
708*46d2f618SCy Schubert   YYSYMBOL_server_key_cache_size = 579,    /* server_key_cache_size  */
709*46d2f618SCy Schubert   YYSYMBOL_server_key_cache_slabs = 580,   /* server_key_cache_slabs  */
710*46d2f618SCy Schubert   YYSYMBOL_server_neg_cache_size = 581,    /* server_neg_cache_size  */
711*46d2f618SCy Schubert   YYSYMBOL_server_local_zone = 582,        /* server_local_zone  */
712*46d2f618SCy Schubert   YYSYMBOL_server_local_data = 583,        /* server_local_data  */
713*46d2f618SCy Schubert   YYSYMBOL_server_local_data_ptr = 584,    /* server_local_data_ptr  */
714*46d2f618SCy Schubert   YYSYMBOL_server_minimal_responses = 585, /* server_minimal_responses  */
715*46d2f618SCy Schubert   YYSYMBOL_server_rrset_roundrobin = 586,  /* server_rrset_roundrobin  */
716*46d2f618SCy Schubert   YYSYMBOL_server_unknown_server_time_limit = 587, /* server_unknown_server_time_limit  */
717*46d2f618SCy Schubert   YYSYMBOL_server_discard_timeout = 588,   /* server_discard_timeout  */
718*46d2f618SCy Schubert   YYSYMBOL_server_wait_limit = 589,        /* server_wait_limit  */
719*46d2f618SCy Schubert   YYSYMBOL_server_wait_limit_cookie = 590, /* server_wait_limit_cookie  */
720*46d2f618SCy Schubert   YYSYMBOL_server_wait_limit_netblock = 591, /* server_wait_limit_netblock  */
721*46d2f618SCy Schubert   YYSYMBOL_server_wait_limit_cookie_netblock = 592, /* server_wait_limit_cookie_netblock  */
722*46d2f618SCy Schubert   YYSYMBOL_server_max_udp_size = 593,      /* server_max_udp_size  */
723*46d2f618SCy Schubert   YYSYMBOL_server_dns64_prefix = 594,      /* server_dns64_prefix  */
724*46d2f618SCy Schubert   YYSYMBOL_server_dns64_synthall = 595,    /* server_dns64_synthall  */
725*46d2f618SCy Schubert   YYSYMBOL_server_dns64_ignore_aaaa = 596, /* server_dns64_ignore_aaaa  */
726*46d2f618SCy Schubert   YYSYMBOL_server_nat64_prefix = 597,      /* server_nat64_prefix  */
727*46d2f618SCy Schubert   YYSYMBOL_server_define_tag = 598,        /* server_define_tag  */
728*46d2f618SCy Schubert   YYSYMBOL_server_local_zone_tag = 599,    /* server_local_zone_tag  */
729*46d2f618SCy Schubert   YYSYMBOL_server_access_control_tag = 600, /* server_access_control_tag  */
730*46d2f618SCy Schubert   YYSYMBOL_server_access_control_tag_action = 601, /* server_access_control_tag_action  */
731*46d2f618SCy Schubert   YYSYMBOL_server_access_control_tag_data = 602, /* server_access_control_tag_data  */
732*46d2f618SCy Schubert   YYSYMBOL_server_local_zone_override = 603, /* server_local_zone_override  */
733*46d2f618SCy Schubert   YYSYMBOL_server_access_control_view = 604, /* server_access_control_view  */
734*46d2f618SCy Schubert   YYSYMBOL_server_interface_tag = 605,     /* server_interface_tag  */
735*46d2f618SCy Schubert   YYSYMBOL_server_interface_tag_action = 606, /* server_interface_tag_action  */
736*46d2f618SCy Schubert   YYSYMBOL_server_interface_tag_data = 607, /* server_interface_tag_data  */
737*46d2f618SCy Schubert   YYSYMBOL_server_interface_view = 608,    /* server_interface_view  */
738*46d2f618SCy Schubert   YYSYMBOL_server_response_ip_tag = 609,   /* server_response_ip_tag  */
739*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit = 610,      /* server_ip_ratelimit  */
740*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit_cookie = 611, /* server_ip_ratelimit_cookie  */
741*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit = 612,         /* server_ratelimit  */
742*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit_size = 613, /* server_ip_ratelimit_size  */
743*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_size = 614,    /* server_ratelimit_size  */
744*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit_slabs = 615, /* server_ip_ratelimit_slabs  */
745*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_slabs = 616,   /* server_ratelimit_slabs  */
746*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_for_domain = 617, /* server_ratelimit_for_domain  */
747*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_below_domain = 618, /* server_ratelimit_below_domain  */
748*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit_factor = 619, /* server_ip_ratelimit_factor  */
749*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_factor = 620,  /* server_ratelimit_factor  */
750*46d2f618SCy Schubert   YYSYMBOL_server_ip_ratelimit_backoff = 621, /* server_ip_ratelimit_backoff  */
751*46d2f618SCy Schubert   YYSYMBOL_server_ratelimit_backoff = 622, /* server_ratelimit_backoff  */
752*46d2f618SCy Schubert   YYSYMBOL_server_outbound_msg_retry = 623, /* server_outbound_msg_retry  */
753*46d2f618SCy Schubert   YYSYMBOL_server_max_sent_count = 624,    /* server_max_sent_count  */
754*46d2f618SCy Schubert   YYSYMBOL_server_max_query_restarts = 625, /* server_max_query_restarts  */
755*46d2f618SCy Schubert   YYSYMBOL_server_low_rtt = 626,           /* server_low_rtt  */
756*46d2f618SCy Schubert   YYSYMBOL_server_fast_server_num = 627,   /* server_fast_server_num  */
757*46d2f618SCy Schubert   YYSYMBOL_server_fast_server_permil = 628, /* server_fast_server_permil  */
758*46d2f618SCy Schubert   YYSYMBOL_server_qname_minimisation = 629, /* server_qname_minimisation  */
759*46d2f618SCy Schubert   YYSYMBOL_server_qname_minimisation_strict = 630, /* server_qname_minimisation_strict  */
760*46d2f618SCy Schubert   YYSYMBOL_server_pad_responses = 631,     /* server_pad_responses  */
761*46d2f618SCy Schubert   YYSYMBOL_server_pad_responses_block_size = 632, /* server_pad_responses_block_size  */
762*46d2f618SCy Schubert   YYSYMBOL_server_pad_queries = 633,       /* server_pad_queries  */
763*46d2f618SCy Schubert   YYSYMBOL_server_pad_queries_block_size = 634, /* server_pad_queries_block_size  */
764*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_enabled = 635,  /* server_ipsecmod_enabled  */
765*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_ignore_bogus = 636, /* server_ipsecmod_ignore_bogus  */
766*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_hook = 637,     /* server_ipsecmod_hook  */
767*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_max_ttl = 638,  /* server_ipsecmod_max_ttl  */
768*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_whitelist = 639, /* server_ipsecmod_whitelist  */
769*46d2f618SCy Schubert   YYSYMBOL_server_ipsecmod_strict = 640,   /* server_ipsecmod_strict  */
770*46d2f618SCy Schubert   YYSYMBOL_server_edns_client_string = 641, /* server_edns_client_string  */
771*46d2f618SCy Schubert   YYSYMBOL_server_edns_client_string_opcode = 642, /* server_edns_client_string_opcode  */
772*46d2f618SCy Schubert   YYSYMBOL_server_ede = 643,               /* server_ede  */
773*46d2f618SCy Schubert   YYSYMBOL_server_proxy_protocol_port = 644, /* server_proxy_protocol_port  */
774*46d2f618SCy Schubert   YYSYMBOL_stub_name = 645,                /* stub_name  */
775*46d2f618SCy Schubert   YYSYMBOL_stub_host = 646,                /* stub_host  */
776*46d2f618SCy Schubert   YYSYMBOL_stub_addr = 647,                /* stub_addr  */
777*46d2f618SCy Schubert   YYSYMBOL_stub_first = 648,               /* stub_first  */
778*46d2f618SCy Schubert   YYSYMBOL_stub_no_cache = 649,            /* stub_no_cache  */
779*46d2f618SCy Schubert   YYSYMBOL_stub_ssl_upstream = 650,        /* stub_ssl_upstream  */
780*46d2f618SCy Schubert   YYSYMBOL_stub_tcp_upstream = 651,        /* stub_tcp_upstream  */
781*46d2f618SCy Schubert   YYSYMBOL_stub_prime = 652,               /* stub_prime  */
782*46d2f618SCy Schubert   YYSYMBOL_forward_name = 653,             /* forward_name  */
783*46d2f618SCy Schubert   YYSYMBOL_forward_host = 654,             /* forward_host  */
784*46d2f618SCy Schubert   YYSYMBOL_forward_addr = 655,             /* forward_addr  */
785*46d2f618SCy Schubert   YYSYMBOL_forward_first = 656,            /* forward_first  */
786*46d2f618SCy Schubert   YYSYMBOL_forward_no_cache = 657,         /* forward_no_cache  */
787*46d2f618SCy Schubert   YYSYMBOL_forward_ssl_upstream = 658,     /* forward_ssl_upstream  */
788*46d2f618SCy Schubert   YYSYMBOL_forward_tcp_upstream = 659,     /* forward_tcp_upstream  */
789*46d2f618SCy Schubert   YYSYMBOL_auth_name = 660,                /* auth_name  */
790*46d2f618SCy Schubert   YYSYMBOL_auth_zonefile = 661,            /* auth_zonefile  */
791*46d2f618SCy Schubert   YYSYMBOL_auth_master = 662,              /* auth_master  */
792*46d2f618SCy Schubert   YYSYMBOL_auth_url = 663,                 /* auth_url  */
793*46d2f618SCy Schubert   YYSYMBOL_auth_allow_notify = 664,        /* auth_allow_notify  */
794*46d2f618SCy Schubert   YYSYMBOL_auth_zonemd_check = 665,        /* auth_zonemd_check  */
795*46d2f618SCy Schubert   YYSYMBOL_auth_zonemd_reject_absence = 666, /* auth_zonemd_reject_absence  */
796*46d2f618SCy Schubert   YYSYMBOL_auth_for_downstream = 667,      /* auth_for_downstream  */
797*46d2f618SCy Schubert   YYSYMBOL_auth_for_upstream = 668,        /* auth_for_upstream  */
798*46d2f618SCy Schubert   YYSYMBOL_auth_fallback_enabled = 669,    /* auth_fallback_enabled  */
799*46d2f618SCy Schubert   YYSYMBOL_view_name = 670,                /* view_name  */
800*46d2f618SCy Schubert   YYSYMBOL_view_local_zone = 671,          /* view_local_zone  */
801*46d2f618SCy Schubert   YYSYMBOL_view_response_ip = 672,         /* view_response_ip  */
802*46d2f618SCy Schubert   YYSYMBOL_view_response_ip_data = 673,    /* view_response_ip_data  */
803*46d2f618SCy Schubert   YYSYMBOL_view_local_data = 674,          /* view_local_data  */
804*46d2f618SCy Schubert   YYSYMBOL_view_local_data_ptr = 675,      /* view_local_data_ptr  */
805*46d2f618SCy Schubert   YYSYMBOL_view_first = 676,               /* view_first  */
806*46d2f618SCy Schubert   YYSYMBOL_rcstart = 677,                  /* rcstart  */
807*46d2f618SCy Schubert   YYSYMBOL_contents_rc = 678,              /* contents_rc  */
808*46d2f618SCy Schubert   YYSYMBOL_content_rc = 679,               /* content_rc  */
809*46d2f618SCy Schubert   YYSYMBOL_rc_control_enable = 680,        /* rc_control_enable  */
810*46d2f618SCy Schubert   YYSYMBOL_rc_control_port = 681,          /* rc_control_port  */
811*46d2f618SCy Schubert   YYSYMBOL_rc_control_interface = 682,     /* rc_control_interface  */
812*46d2f618SCy Schubert   YYSYMBOL_rc_control_use_cert = 683,      /* rc_control_use_cert  */
813*46d2f618SCy Schubert   YYSYMBOL_rc_server_key_file = 684,       /* rc_server_key_file  */
814*46d2f618SCy Schubert   YYSYMBOL_rc_server_cert_file = 685,      /* rc_server_cert_file  */
815*46d2f618SCy Schubert   YYSYMBOL_rc_control_key_file = 686,      /* rc_control_key_file  */
816*46d2f618SCy Schubert   YYSYMBOL_rc_control_cert_file = 687,     /* rc_control_cert_file  */
817*46d2f618SCy Schubert   YYSYMBOL_dtstart = 688,                  /* dtstart  */
818*46d2f618SCy Schubert   YYSYMBOL_contents_dt = 689,              /* contents_dt  */
819*46d2f618SCy Schubert   YYSYMBOL_content_dt = 690,               /* content_dt  */
820*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_enable = 691,         /* dt_dnstap_enable  */
821*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_bidirectional = 692,  /* dt_dnstap_bidirectional  */
822*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_socket_path = 693,    /* dt_dnstap_socket_path  */
823*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_ip = 694,             /* dt_dnstap_ip  */
824*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_tls = 695,            /* dt_dnstap_tls  */
825*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_tls_server_name = 696, /* dt_dnstap_tls_server_name  */
826*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_tls_cert_bundle = 697, /* dt_dnstap_tls_cert_bundle  */
827*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_tls_client_key_file = 698, /* dt_dnstap_tls_client_key_file  */
828*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_tls_client_cert_file = 699, /* dt_dnstap_tls_client_cert_file  */
829*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_send_identity = 700,  /* dt_dnstap_send_identity  */
830*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_send_version = 701,   /* dt_dnstap_send_version  */
831*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_identity = 702,       /* dt_dnstap_identity  */
832*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_version = 703,        /* dt_dnstap_version  */
833*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_resolver_query_messages = 704, /* dt_dnstap_log_resolver_query_messages  */
834*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_resolver_response_messages = 705, /* dt_dnstap_log_resolver_response_messages  */
835*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_client_query_messages = 706, /* dt_dnstap_log_client_query_messages  */
836*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_client_response_messages = 707, /* dt_dnstap_log_client_response_messages  */
837*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 708, /* dt_dnstap_log_forwarder_query_messages  */
838*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 709, /* dt_dnstap_log_forwarder_response_messages  */
839*46d2f618SCy Schubert   YYSYMBOL_dt_dnstap_sample_rate = 710,    /* dt_dnstap_sample_rate  */
840*46d2f618SCy Schubert   YYSYMBOL_pythonstart = 711,              /* pythonstart  */
841*46d2f618SCy Schubert   YYSYMBOL_contents_py = 712,              /* contents_py  */
842*46d2f618SCy Schubert   YYSYMBOL_content_py = 713,               /* content_py  */
843*46d2f618SCy Schubert   YYSYMBOL_py_script = 714,                /* py_script  */
844*46d2f618SCy Schubert   YYSYMBOL_dynlibstart = 715,              /* dynlibstart  */
845*46d2f618SCy Schubert   YYSYMBOL_contents_dl = 716,              /* contents_dl  */
846*46d2f618SCy Schubert   YYSYMBOL_content_dl = 717,               /* content_dl  */
847*46d2f618SCy Schubert   YYSYMBOL_dl_file = 718,                  /* dl_file  */
848*46d2f618SCy Schubert   YYSYMBOL_server_disable_dnssec_lame_check = 719, /* server_disable_dnssec_lame_check  */
849*46d2f618SCy Schubert   YYSYMBOL_server_log_identity = 720,      /* server_log_identity  */
850*46d2f618SCy Schubert   YYSYMBOL_server_response_ip = 721,       /* server_response_ip  */
851*46d2f618SCy Schubert   YYSYMBOL_server_response_ip_data = 722,  /* server_response_ip_data  */
852*46d2f618SCy Schubert   YYSYMBOL_dnscstart = 723,                /* dnscstart  */
853*46d2f618SCy Schubert   YYSYMBOL_contents_dnsc = 724,            /* contents_dnsc  */
854*46d2f618SCy Schubert   YYSYMBOL_content_dnsc = 725,             /* content_dnsc  */
855*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_enable = 726,     /* dnsc_dnscrypt_enable  */
856*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_port = 727,       /* dnsc_dnscrypt_port  */
857*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_provider = 728,   /* dnsc_dnscrypt_provider  */
858*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_provider_cert = 729, /* dnsc_dnscrypt_provider_cert  */
859*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 730, /* dnsc_dnscrypt_provider_cert_rotated  */
860*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_secret_key = 731, /* dnsc_dnscrypt_secret_key  */
861*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 732, /* dnsc_dnscrypt_shared_secret_cache_size  */
862*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 733, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
863*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 734, /* dnsc_dnscrypt_nonce_cache_size  */
864*46d2f618SCy Schubert   YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 735, /* dnsc_dnscrypt_nonce_cache_slabs  */
865*46d2f618SCy Schubert   YYSYMBOL_cachedbstart = 736,             /* cachedbstart  */
866*46d2f618SCy Schubert   YYSYMBOL_contents_cachedb = 737,         /* contents_cachedb  */
867*46d2f618SCy Schubert   YYSYMBOL_content_cachedb = 738,          /* content_cachedb  */
868*46d2f618SCy Schubert   YYSYMBOL_cachedb_backend_name = 739,     /* cachedb_backend_name  */
869*46d2f618SCy Schubert   YYSYMBOL_cachedb_secret_seed = 740,      /* cachedb_secret_seed  */
870*46d2f618SCy Schubert   YYSYMBOL_cachedb_no_store = 741,         /* cachedb_no_store  */
871*46d2f618SCy Schubert   YYSYMBOL_cachedb_check_when_serve_expired = 742, /* cachedb_check_when_serve_expired  */
872*46d2f618SCy Schubert   YYSYMBOL_redis_server_host = 743,        /* redis_server_host  */
873*46d2f618SCy Schubert   YYSYMBOL_redis_server_port = 744,        /* redis_server_port  */
874*46d2f618SCy Schubert   YYSYMBOL_redis_server_path = 745,        /* redis_server_path  */
875*46d2f618SCy Schubert   YYSYMBOL_redis_server_password = 746,    /* redis_server_password  */
876*46d2f618SCy Schubert   YYSYMBOL_redis_timeout = 747,            /* redis_timeout  */
877*46d2f618SCy Schubert   YYSYMBOL_redis_command_timeout = 748,    /* redis_command_timeout  */
878*46d2f618SCy Schubert   YYSYMBOL_redis_connect_timeout = 749,    /* redis_connect_timeout  */
879*46d2f618SCy Schubert   YYSYMBOL_redis_expire_records = 750,     /* redis_expire_records  */
880*46d2f618SCy Schubert   YYSYMBOL_redis_logical_db = 751,         /* redis_logical_db  */
881*46d2f618SCy Schubert   YYSYMBOL_server_tcp_connection_limit = 752, /* server_tcp_connection_limit  */
882*46d2f618SCy Schubert   YYSYMBOL_server_answer_cookie = 753,     /* server_answer_cookie  */
883*46d2f618SCy Schubert   YYSYMBOL_server_cookie_secret = 754,     /* server_cookie_secret  */
884*46d2f618SCy Schubert   YYSYMBOL_server_cookie_secret_file = 755, /* server_cookie_secret_file  */
885*46d2f618SCy Schubert   YYSYMBOL_server_iter_scrub_ns = 756,     /* server_iter_scrub_ns  */
886*46d2f618SCy Schubert   YYSYMBOL_server_iter_scrub_cname = 757,  /* server_iter_scrub_cname  */
887*46d2f618SCy Schubert   YYSYMBOL_server_max_global_quota = 758,  /* server_max_global_quota  */
888*46d2f618SCy Schubert   YYSYMBOL_ipsetstart = 759,               /* ipsetstart  */
889*46d2f618SCy Schubert   YYSYMBOL_contents_ipset = 760,           /* contents_ipset  */
890*46d2f618SCy Schubert   YYSYMBOL_content_ipset = 761,            /* content_ipset  */
891*46d2f618SCy Schubert   YYSYMBOL_ipset_name_v4 = 762,            /* ipset_name_v4  */
892*46d2f618SCy Schubert   YYSYMBOL_ipset_name_v6 = 763             /* ipset_name_v6  */
893b7c0c8c1SCy Schubert };
894b7c0c8c1SCy Schubert typedef enum yysymbol_kind_t yysymbol_kind_t;
895b7c0c8c1SCy Schubert 
896b7c0c8c1SCy Schubert 
897b7c0c8c1SCy Schubert 
898b7c0c8c1SCy Schubert 
899b7c0c8c1SCy Schubert #ifdef short
900b7c0c8c1SCy Schubert # undef short
901b7c0c8c1SCy Schubert #endif
902b7c0c8c1SCy Schubert 
903b7c0c8c1SCy Schubert /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
904b7c0c8c1SCy Schubert    <limits.h> and (if available) <stdint.h> are included
905b7c0c8c1SCy Schubert    so that the code can choose integer types of a good width.  */
906b7c0c8c1SCy Schubert 
907b7c0c8c1SCy Schubert #ifndef __PTRDIFF_MAX__
908b7c0c8c1SCy Schubert # include <limits.h> /* INFRINGES ON USER NAME SPACE */
909b7c0c8c1SCy Schubert # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
910b7c0c8c1SCy Schubert #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
911b7c0c8c1SCy Schubert #  define YY_STDINT_H
912b7c0c8c1SCy Schubert # endif
913b7c0c8c1SCy Schubert #endif
914b7c0c8c1SCy Schubert 
915b7c0c8c1SCy Schubert /* Narrow types that promote to a signed type and that can represent a
916b7c0c8c1SCy Schubert    signed or unsigned integer of at least N bits.  In tables they can
917b7c0c8c1SCy Schubert    save space and decrease cache pressure.  Promoting to a signed type
918b7c0c8c1SCy Schubert    helps avoid bugs in integer arithmetic.  */
919b7c0c8c1SCy Schubert 
920b7c0c8c1SCy Schubert #ifdef __INT_LEAST8_MAX__
921b7c0c8c1SCy Schubert typedef __INT_LEAST8_TYPE__ yytype_int8;
922b7c0c8c1SCy Schubert #elif defined YY_STDINT_H
923b7c0c8c1SCy Schubert typedef int_least8_t yytype_int8;
924b7c0c8c1SCy Schubert #else
925b7c0c8c1SCy Schubert typedef signed char yytype_int8;
926b7c0c8c1SCy Schubert #endif
927b7c0c8c1SCy Schubert 
928b7c0c8c1SCy Schubert #ifdef __INT_LEAST16_MAX__
929b7c0c8c1SCy Schubert typedef __INT_LEAST16_TYPE__ yytype_int16;
930b7c0c8c1SCy Schubert #elif defined YY_STDINT_H
931b7c0c8c1SCy Schubert typedef int_least16_t yytype_int16;
932b7c0c8c1SCy Schubert #else
933b7c0c8c1SCy Schubert typedef short yytype_int16;
934b7c0c8c1SCy Schubert #endif
935b7c0c8c1SCy Schubert 
936b7c0c8c1SCy Schubert /* Work around bug in HP-UX 11.23, which defines these macros
937b7c0c8c1SCy Schubert    incorrectly for preprocessor constants.  This workaround can likely
938b7c0c8c1SCy Schubert    be removed in 2023, as HPE has promised support for HP-UX 11.23
939b7c0c8c1SCy Schubert    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
940b7c0c8c1SCy Schubert    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
941b7c0c8c1SCy Schubert #ifdef __hpux
942b7c0c8c1SCy Schubert # undef UINT_LEAST8_MAX
943b7c0c8c1SCy Schubert # undef UINT_LEAST16_MAX
944b7c0c8c1SCy Schubert # define UINT_LEAST8_MAX 255
945b7c0c8c1SCy Schubert # define UINT_LEAST16_MAX 65535
946b7c0c8c1SCy Schubert #endif
947b7c0c8c1SCy Schubert 
948b7c0c8c1SCy Schubert #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
949b7c0c8c1SCy Schubert typedef __UINT_LEAST8_TYPE__ yytype_uint8;
950b7c0c8c1SCy Schubert #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
951b7c0c8c1SCy Schubert        && UINT_LEAST8_MAX <= INT_MAX)
952b7c0c8c1SCy Schubert typedef uint_least8_t yytype_uint8;
953b7c0c8c1SCy Schubert #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
954b7c0c8c1SCy Schubert typedef unsigned char yytype_uint8;
955b7c0c8c1SCy Schubert #else
956b7c0c8c1SCy Schubert typedef short yytype_uint8;
957b7c0c8c1SCy Schubert #endif
958b7c0c8c1SCy Schubert 
959b7c0c8c1SCy Schubert #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
960b7c0c8c1SCy Schubert typedef __UINT_LEAST16_TYPE__ yytype_uint16;
961b7c0c8c1SCy Schubert #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
962b7c0c8c1SCy Schubert        && UINT_LEAST16_MAX <= INT_MAX)
963b7c0c8c1SCy Schubert typedef uint_least16_t yytype_uint16;
964b7c0c8c1SCy Schubert #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
965b7c0c8c1SCy Schubert typedef unsigned short yytype_uint16;
966b7c0c8c1SCy Schubert #else
967b7c0c8c1SCy Schubert typedef int yytype_uint16;
968b7c0c8c1SCy Schubert #endif
969b7c0c8c1SCy Schubert 
970b7c0c8c1SCy Schubert #ifndef YYPTRDIFF_T
971b7c0c8c1SCy Schubert # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
972b7c0c8c1SCy Schubert #  define YYPTRDIFF_T __PTRDIFF_TYPE__
973b7c0c8c1SCy Schubert #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
974b7c0c8c1SCy Schubert # elif defined PTRDIFF_MAX
975b7c0c8c1SCy Schubert #  ifndef ptrdiff_t
976b7c0c8c1SCy Schubert #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
977b7c0c8c1SCy Schubert #  endif
978b7c0c8c1SCy Schubert #  define YYPTRDIFF_T ptrdiff_t
979b7c0c8c1SCy Schubert #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
980b7c0c8c1SCy Schubert # else
981b7c0c8c1SCy Schubert #  define YYPTRDIFF_T long
982b7c0c8c1SCy Schubert #  define YYPTRDIFF_MAXIMUM LONG_MAX
983b7c0c8c1SCy Schubert # endif
984b7c0c8c1SCy Schubert #endif
985b7c0c8c1SCy Schubert 
986b7c0c8c1SCy Schubert #ifndef YYSIZE_T
987b7c0c8c1SCy Schubert # ifdef __SIZE_TYPE__
988b7c0c8c1SCy Schubert #  define YYSIZE_T __SIZE_TYPE__
989b7c0c8c1SCy Schubert # elif defined size_t
990b7c0c8c1SCy Schubert #  define YYSIZE_T size_t
991b7c0c8c1SCy Schubert # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
992b7c0c8c1SCy Schubert #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
993b7c0c8c1SCy Schubert #  define YYSIZE_T size_t
994b7c0c8c1SCy Schubert # else
995b7c0c8c1SCy Schubert #  define YYSIZE_T unsigned
996b7c0c8c1SCy Schubert # endif
997b7c0c8c1SCy Schubert #endif
998b7c0c8c1SCy Schubert 
999b7c0c8c1SCy Schubert #define YYSIZE_MAXIMUM                                  \
1000b7c0c8c1SCy Schubert   YY_CAST (YYPTRDIFF_T,                                 \
1001b7c0c8c1SCy Schubert            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
1002b7c0c8c1SCy Schubert             ? YYPTRDIFF_MAXIMUM                         \
1003b7c0c8c1SCy Schubert             : YY_CAST (YYSIZE_T, -1)))
1004b7c0c8c1SCy Schubert 
1005b7c0c8c1SCy Schubert #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1006b7c0c8c1SCy Schubert 
1007b7c0c8c1SCy Schubert 
1008b7c0c8c1SCy Schubert /* Stored state numbers (used for stacks). */
1009b7c0c8c1SCy Schubert typedef yytype_int16 yy_state_t;
1010b7c0c8c1SCy Schubert 
1011b7c0c8c1SCy Schubert /* State numbers in computations.  */
1012b7c0c8c1SCy Schubert typedef int yy_state_fast_t;
1013b7c0c8c1SCy Schubert 
1014b7c0c8c1SCy Schubert #ifndef YY_
1015b7c0c8c1SCy Schubert # if defined YYENABLE_NLS && YYENABLE_NLS
1016b7c0c8c1SCy Schubert #  if ENABLE_NLS
1017b7c0c8c1SCy Schubert #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1018b7c0c8c1SCy Schubert #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1019b7c0c8c1SCy Schubert #  endif
1020b7c0c8c1SCy Schubert # endif
1021b7c0c8c1SCy Schubert # ifndef YY_
1022b7c0c8c1SCy Schubert #  define YY_(Msgid) Msgid
1023b7c0c8c1SCy Schubert # endif
1024b7c0c8c1SCy Schubert #endif
1025b7c0c8c1SCy Schubert 
1026b7c0c8c1SCy Schubert 
1027b7c0c8c1SCy Schubert #ifndef YY_ATTRIBUTE_PURE
1028b7c0c8c1SCy Schubert # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1029b7c0c8c1SCy Schubert #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1030b7c0c8c1SCy Schubert # else
1031b7c0c8c1SCy Schubert #  define YY_ATTRIBUTE_PURE
1032b7c0c8c1SCy Schubert # endif
1033b7c0c8c1SCy Schubert #endif
1034b7c0c8c1SCy Schubert 
1035b7c0c8c1SCy Schubert #ifndef YY_ATTRIBUTE_UNUSED
1036b7c0c8c1SCy Schubert # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1037b7c0c8c1SCy Schubert #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1038b7c0c8c1SCy Schubert # else
1039b7c0c8c1SCy Schubert #  define YY_ATTRIBUTE_UNUSED
1040b7c0c8c1SCy Schubert # endif
1041b7c0c8c1SCy Schubert #endif
1042b7c0c8c1SCy Schubert 
1043b7c0c8c1SCy Schubert /* Suppress unused-variable warnings by "using" E.  */
1044b7c0c8c1SCy Schubert #if ! defined lint || defined __GNUC__
1045b7c0c8c1SCy Schubert # define YY_USE(E) ((void) (E))
1046b7c0c8c1SCy Schubert #else
1047b7c0c8c1SCy Schubert # define YY_USE(E) /* empty */
1048b7c0c8c1SCy Schubert #endif
1049b7c0c8c1SCy Schubert 
1050*46d2f618SCy Schubert #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1051b7c0c8c1SCy Schubert /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
1052b7c0c8c1SCy Schubert # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
1053b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic push")                                     \
1054b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
1055b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1056b7c0c8c1SCy Schubert # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
1057b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic pop")
1058b7c0c8c1SCy Schubert #else
1059b7c0c8c1SCy Schubert # define YY_INITIAL_VALUE(Value) Value
1060b7c0c8c1SCy Schubert #endif
1061b7c0c8c1SCy Schubert #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1062b7c0c8c1SCy Schubert # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1063b7c0c8c1SCy Schubert # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1064b7c0c8c1SCy Schubert #endif
1065b7c0c8c1SCy Schubert #ifndef YY_INITIAL_VALUE
1066b7c0c8c1SCy Schubert # define YY_INITIAL_VALUE(Value) /* Nothing. */
1067b7c0c8c1SCy Schubert #endif
1068b7c0c8c1SCy Schubert 
1069b7c0c8c1SCy Schubert #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1070b7c0c8c1SCy Schubert # define YY_IGNORE_USELESS_CAST_BEGIN                          \
1071b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic push")                            \
1072b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1073b7c0c8c1SCy Schubert # define YY_IGNORE_USELESS_CAST_END            \
1074b7c0c8c1SCy Schubert     _Pragma ("GCC diagnostic pop")
1075b7c0c8c1SCy Schubert #endif
1076b7c0c8c1SCy Schubert #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1077b7c0c8c1SCy Schubert # define YY_IGNORE_USELESS_CAST_BEGIN
1078b7c0c8c1SCy Schubert # define YY_IGNORE_USELESS_CAST_END
1079b7c0c8c1SCy Schubert #endif
1080b7c0c8c1SCy Schubert 
1081b7c0c8c1SCy Schubert 
1082b7c0c8c1SCy Schubert #define YY_ASSERT(E) ((void) (0 && (E)))
1083b7c0c8c1SCy Schubert 
1084b7c0c8c1SCy Schubert #if !defined yyoverflow
1085b7c0c8c1SCy Schubert 
1086b7c0c8c1SCy Schubert /* The parser invokes alloca or malloc; define the necessary symbols.  */
1087b7c0c8c1SCy Schubert 
1088b7c0c8c1SCy Schubert # ifdef YYSTACK_USE_ALLOCA
1089b7c0c8c1SCy Schubert #  if YYSTACK_USE_ALLOCA
1090b7c0c8c1SCy Schubert #   ifdef __GNUC__
1091b7c0c8c1SCy Schubert #    define YYSTACK_ALLOC __builtin_alloca
1092b7c0c8c1SCy Schubert #   elif defined __BUILTIN_VA_ARG_INCR
1093b7c0c8c1SCy Schubert #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1094b7c0c8c1SCy Schubert #   elif defined _AIX
1095b7c0c8c1SCy Schubert #    define YYSTACK_ALLOC __alloca
1096b7c0c8c1SCy Schubert #   elif defined _MSC_VER
1097b7c0c8c1SCy Schubert #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1098b7c0c8c1SCy Schubert #    define alloca _alloca
1099b7c0c8c1SCy Schubert #   else
1100b7c0c8c1SCy Schubert #    define YYSTACK_ALLOC alloca
1101b7c0c8c1SCy Schubert #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1102b7c0c8c1SCy Schubert #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1103b7c0c8c1SCy Schubert       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1104b7c0c8c1SCy Schubert #     ifndef EXIT_SUCCESS
1105b7c0c8c1SCy Schubert #      define EXIT_SUCCESS 0
1106b7c0c8c1SCy Schubert #     endif
1107b7c0c8c1SCy Schubert #    endif
1108b7c0c8c1SCy Schubert #   endif
1109b7c0c8c1SCy Schubert #  endif
1110b7c0c8c1SCy Schubert # endif
1111b7c0c8c1SCy Schubert 
1112b7c0c8c1SCy Schubert # ifdef YYSTACK_ALLOC
1113b7c0c8c1SCy Schubert    /* Pacify GCC's 'empty if-body' warning.  */
1114b7c0c8c1SCy Schubert #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1115b7c0c8c1SCy Schubert #  ifndef YYSTACK_ALLOC_MAXIMUM
1116b7c0c8c1SCy Schubert     /* The OS might guarantee only one guard page at the bottom of the stack,
1117b7c0c8c1SCy Schubert        and a page size can be as small as 4096 bytes.  So we cannot safely
1118b7c0c8c1SCy Schubert        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1119b7c0c8c1SCy Schubert        to allow for a few compiler-allocated temporary stack slots.  */
1120b7c0c8c1SCy Schubert #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1121b7c0c8c1SCy Schubert #  endif
1122b7c0c8c1SCy Schubert # else
1123b7c0c8c1SCy Schubert #  define YYSTACK_ALLOC YYMALLOC
1124b7c0c8c1SCy Schubert #  define YYSTACK_FREE YYFREE
1125b7c0c8c1SCy Schubert #  ifndef YYSTACK_ALLOC_MAXIMUM
1126b7c0c8c1SCy Schubert #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1127b7c0c8c1SCy Schubert #  endif
1128b7c0c8c1SCy Schubert #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1129b7c0c8c1SCy Schubert        && ! ((defined YYMALLOC || defined malloc) \
1130b7c0c8c1SCy Schubert              && (defined YYFREE || defined free)))
1131b7c0c8c1SCy Schubert #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1132b7c0c8c1SCy Schubert #   ifndef EXIT_SUCCESS
1133b7c0c8c1SCy Schubert #    define EXIT_SUCCESS 0
1134b7c0c8c1SCy Schubert #   endif
1135b7c0c8c1SCy Schubert #  endif
1136b7c0c8c1SCy Schubert #  ifndef YYMALLOC
1137b7c0c8c1SCy Schubert #   define YYMALLOC malloc
1138b7c0c8c1SCy Schubert #   if ! defined malloc && ! defined EXIT_SUCCESS
1139b7c0c8c1SCy Schubert void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1140b7c0c8c1SCy Schubert #   endif
1141b7c0c8c1SCy Schubert #  endif
1142b7c0c8c1SCy Schubert #  ifndef YYFREE
1143b7c0c8c1SCy Schubert #   define YYFREE free
1144b7c0c8c1SCy Schubert #   if ! defined free && ! defined EXIT_SUCCESS
1145b7c0c8c1SCy Schubert void free (void *); /* INFRINGES ON USER NAME SPACE */
1146b7c0c8c1SCy Schubert #   endif
1147b7c0c8c1SCy Schubert #  endif
1148b7c0c8c1SCy Schubert # endif
1149b7c0c8c1SCy Schubert #endif /* !defined yyoverflow */
1150b7c0c8c1SCy Schubert 
1151b7c0c8c1SCy Schubert #if (! defined yyoverflow \
1152b7c0c8c1SCy Schubert      && (! defined __cplusplus \
1153b7c0c8c1SCy Schubert          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1154b7c0c8c1SCy Schubert 
1155b7c0c8c1SCy Schubert /* A type that is properly aligned for any stack member.  */
1156b7c0c8c1SCy Schubert union yyalloc
1157b7c0c8c1SCy Schubert {
1158b7c0c8c1SCy Schubert   yy_state_t yyss_alloc;
1159b7c0c8c1SCy Schubert   YYSTYPE yyvs_alloc;
1160b7c0c8c1SCy Schubert };
1161b7c0c8c1SCy Schubert 
1162b7c0c8c1SCy Schubert /* The size of the maximum gap between one aligned stack and the next.  */
1163b7c0c8c1SCy Schubert # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1164b7c0c8c1SCy Schubert 
1165b7c0c8c1SCy Schubert /* The size of an array large to enough to hold all stacks, each with
1166b7c0c8c1SCy Schubert    N elements.  */
1167b7c0c8c1SCy Schubert # define YYSTACK_BYTES(N) \
1168b7c0c8c1SCy Schubert      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1169b7c0c8c1SCy Schubert       + YYSTACK_GAP_MAXIMUM)
1170b7c0c8c1SCy Schubert 
1171b7c0c8c1SCy Schubert # define YYCOPY_NEEDED 1
1172b7c0c8c1SCy Schubert 
1173b7c0c8c1SCy Schubert /* Relocate STACK from its old location to the new one.  The
1174b7c0c8c1SCy Schubert    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1175b7c0c8c1SCy Schubert    elements in the stack, and YYPTR gives the new location of the
1176b7c0c8c1SCy Schubert    stack.  Advance YYPTR to a properly aligned location for the next
1177b7c0c8c1SCy Schubert    stack.  */
1178b7c0c8c1SCy Schubert # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1179b7c0c8c1SCy Schubert     do                                                                  \
1180b7c0c8c1SCy Schubert       {                                                                 \
1181b7c0c8c1SCy Schubert         YYPTRDIFF_T yynewbytes;                                         \
1182b7c0c8c1SCy Schubert         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1183b7c0c8c1SCy Schubert         Stack = &yyptr->Stack_alloc;                                    \
1184b7c0c8c1SCy Schubert         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1185b7c0c8c1SCy Schubert         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1186b7c0c8c1SCy Schubert       }                                                                 \
1187b7c0c8c1SCy Schubert     while (0)
1188b7c0c8c1SCy Schubert 
1189b7c0c8c1SCy Schubert #endif
1190b7c0c8c1SCy Schubert 
1191b7c0c8c1SCy Schubert #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1192b7c0c8c1SCy Schubert /* Copy COUNT objects from SRC to DST.  The source and destination do
1193b7c0c8c1SCy Schubert    not overlap.  */
1194b7c0c8c1SCy Schubert # ifndef YYCOPY
1195b7c0c8c1SCy Schubert #  if defined __GNUC__ && 1 < __GNUC__
1196b7c0c8c1SCy Schubert #   define YYCOPY(Dst, Src, Count) \
1197b7c0c8c1SCy Schubert       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1198b7c0c8c1SCy Schubert #  else
1199b7c0c8c1SCy Schubert #   define YYCOPY(Dst, Src, Count)              \
1200b7c0c8c1SCy Schubert       do                                        \
1201b7c0c8c1SCy Schubert         {                                       \
1202b7c0c8c1SCy Schubert           YYPTRDIFF_T yyi;                      \
1203b7c0c8c1SCy Schubert           for (yyi = 0; yyi < (Count); yyi++)   \
1204b7c0c8c1SCy Schubert             (Dst)[yyi] = (Src)[yyi];            \
1205b7c0c8c1SCy Schubert         }                                       \
1206b7c0c8c1SCy Schubert       while (0)
1207b7c0c8c1SCy Schubert #  endif
1208b7c0c8c1SCy Schubert # endif
1209b7c0c8c1SCy Schubert #endif /* !YYCOPY_NEEDED */
1210b7c0c8c1SCy Schubert 
1211b7c0c8c1SCy Schubert /* YYFINAL -- State number of the termination state.  */
1212b7c0c8c1SCy Schubert #define YYFINAL  2
1213b7c0c8c1SCy Schubert /* YYLAST -- Last index in YYTABLE.  */
1214*46d2f618SCy Schubert #define YYLAST   786
1215b7c0c8c1SCy Schubert 
1216b7c0c8c1SCy Schubert /* YYNTOKENS -- Number of terminals.  */
1217*46d2f618SCy Schubert #define YYNTOKENS  368
1218b7c0c8c1SCy Schubert /* YYNNTS -- Number of nonterminals.  */
1219*46d2f618SCy Schubert #define YYNNTS  396
1220b7c0c8c1SCy Schubert /* YYNRULES -- Number of rules.  */
1221*46d2f618SCy Schubert #define YYNRULES  766
1222b7c0c8c1SCy Schubert /* YYNSTATES -- Number of states.  */
1223*46d2f618SCy Schubert #define YYNSTATES  1147
1224b7c0c8c1SCy Schubert 
1225b7c0c8c1SCy Schubert /* YYMAXUTOK -- Last valid token kind.  */
1226*46d2f618SCy Schubert #define YYMAXUTOK   622
1227b7c0c8c1SCy Schubert 
1228b7c0c8c1SCy Schubert 
1229b7c0c8c1SCy Schubert /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1230b7c0c8c1SCy Schubert    as returned by yylex, with out-of-bounds checking.  */
1231b7c0c8c1SCy Schubert #define YYTRANSLATE(YYX)                                \
1232b7c0c8c1SCy Schubert   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
1233b7c0c8c1SCy Schubert    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
1234b7c0c8c1SCy Schubert    : YYSYMBOL_YYUNDEF)
1235b7c0c8c1SCy Schubert 
1236b7c0c8c1SCy Schubert /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1237b7c0c8c1SCy Schubert    as returned by yylex.  */
1238b7c0c8c1SCy Schubert static const yytype_int16 yytranslate[] =
1239b7c0c8c1SCy Schubert {
1240b7c0c8c1SCy Schubert        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1241b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1242b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1243b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1244b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1245b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1246b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1247b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1248b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1249b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1250b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1251b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1252b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1253b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1254b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1255b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1256b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1257b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1258b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1259b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1260b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1261b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1262b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1263b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1264b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1265b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1266b7c0c8c1SCy Schubert        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1267b7c0c8c1SCy Schubert       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1268b7c0c8c1SCy Schubert       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1269b7c0c8c1SCy Schubert       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1270b7c0c8c1SCy Schubert       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1271b7c0c8c1SCy Schubert       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1272b7c0c8c1SCy Schubert       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1273b7c0c8c1SCy Schubert       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1274b7c0c8c1SCy Schubert       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1275b7c0c8c1SCy Schubert       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1276b7c0c8c1SCy Schubert      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1277b7c0c8c1SCy Schubert      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1278b7c0c8c1SCy Schubert      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1279b7c0c8c1SCy Schubert      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1280b7c0c8c1SCy Schubert      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1281b7c0c8c1SCy Schubert      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1282b7c0c8c1SCy Schubert      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1283b7c0c8c1SCy Schubert      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1284b7c0c8c1SCy Schubert      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1285b7c0c8c1SCy Schubert      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1286b7c0c8c1SCy Schubert      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1287b7c0c8c1SCy Schubert      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1288b7c0c8c1SCy Schubert      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1289b7c0c8c1SCy Schubert      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1290b7c0c8c1SCy Schubert      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1291b7c0c8c1SCy Schubert      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1292b7c0c8c1SCy Schubert      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1293b7c0c8c1SCy Schubert      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1294b7c0c8c1SCy Schubert      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1295b7c0c8c1SCy Schubert      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1296b7c0c8c1SCy Schubert      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1297b7c0c8c1SCy Schubert      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1298b7c0c8c1SCy Schubert      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1299b7c0c8c1SCy Schubert      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1300335c7cdaSCy Schubert      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1301*46d2f618SCy Schubert      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1302*46d2f618SCy Schubert      365,   366,   367
1303b7c0c8c1SCy Schubert };
1304b7c0c8c1SCy Schubert 
1305b7c0c8c1SCy Schubert #if YYDEBUG
1306b7c0c8c1SCy Schubert   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1307b7c0c8c1SCy Schubert static const yytype_int16 yyrline[] =
1308b7c0c8c1SCy Schubert {
1309*46d2f618SCy Schubert        0,   214,   214,   214,   215,   215,   216,   216,   217,   217,
1310*46d2f618SCy Schubert      217,   218,   218,   219,   219,   220,   220,   221,   223,   230,
1311*46d2f618SCy Schubert      236,   237,   238,   238,   238,   239,   239,   240,   240,   240,
1312*46d2f618SCy Schubert      241,   241,   241,   242,   242,   242,   243,   243,   244,   245,
1313*46d2f618SCy Schubert      245,   245,   246,   246,   246,   247,   247,   248,   248,   249,
1314*46d2f618SCy Schubert      249,   250,   250,   251,   251,   252,   252,   253,   253,   254,
1315*46d2f618SCy Schubert      254,   255,   255,   255,   256,   256,   257,   257,   257,   258,
1316*46d2f618SCy Schubert      258,   258,   259,   259,   260,   260,   261,   261,   262,   262,
1317*46d2f618SCy Schubert      263,   263,   263,   264,   264,   265,   265,   266,   266,   266,
1318*46d2f618SCy Schubert      267,   267,   268,   268,   269,   269,   270,   270,   270,   271,
1319*46d2f618SCy Schubert      271,   272,   272,   273,   273,   274,   274,   275,   275,   276,
1320*46d2f618SCy Schubert      276,   277,   277,   278,   278,   279,   279,   279,   280,   280,
1321*46d2f618SCy Schubert      280,   281,   281,   281,   282,   282,   282,   282,   283,   284,
1322*46d2f618SCy Schubert      284,   284,   285,   285,   285,   286,   286,   287,   287,   288,
1323*46d2f618SCy Schubert      288,   288,   289,   289,   289,   290,   290,   291,   291,   291,
1324*46d2f618SCy Schubert      292,   293,   293,   293,   294,   294,   294,   295,   295,   296,
1325*46d2f618SCy Schubert      296,   297,   297,   298,   299,   299,   300,   300,   301,   301,
1326*46d2f618SCy Schubert      302,   302,   303,   303,   304,   304,   305,   305,   306,   306,
1327*46d2f618SCy Schubert      307,   307,   308,   308,   309,   310,   310,   311,   311,   311,
1328*46d2f618SCy Schubert      312,   312,   313,   313,   314,   314,   315,   315,   315,   316,
1329*46d2f618SCy Schubert      316,   317,   318,   318,   319,   319,   320,   321,   321,   322,
1330*46d2f618SCy Schubert      322,   323,   323,   323,   324,   324,   325,   325,   325,   326,
1331*46d2f618SCy Schubert      326,   326,   327,   327,   328,   329,   329,   330,   330,   331,
1332*46d2f618SCy Schubert      331,   332,   332,   333,   333,   333,   334,   334,   334,   335,
1333*46d2f618SCy Schubert      335,   335,   336,   336,   337,   337,   337,   338,   338,   339,
1334*46d2f618SCy Schubert      339,   340,   340,   341,   341,   341,   342,   342,   343,   343,
1335*46d2f618SCy Schubert      344,   344,   345,   345,   346,   346,   347,   347,   348,   348,
1336*46d2f618SCy Schubert      349,   349,   350,   350,   351,   351,   351,   352,   352,   354,
1337*46d2f618SCy Schubert      362,   376,   377,   378,   378,   378,   378,   378,   379,   379,
1338*46d2f618SCy Schubert      379,   381,   389,   403,   404,   405,   405,   405,   405,   406,
1339*46d2f618SCy Schubert      406,   406,   408,   416,   430,   431,   432,   432,   432,   432,
1340*46d2f618SCy Schubert      433,   433,   433,   435,   456,   457,   458,   458,   458,   458,
1341*46d2f618SCy Schubert      459,   459,   459,   460,   460,   460,   463,   482,   499,   507,
1342*46d2f618SCy Schubert      517,   524,   534,   553,   554,   555,   555,   555,   555,   555,
1343*46d2f618SCy Schubert      556,   556,   556,   557,   557,   557,   557,   559,   568,   577,
1344*46d2f618SCy Schubert      588,   597,   606,   615,   624,   635,   644,   656,   670,   685,
1345*46d2f618SCy Schubert      696,   713,   730,   747,   764,   779,   794,   807,   822,   831,
1346*46d2f618SCy Schubert      840,   849,   858,   867,   876,   883,   892,   901,   910,   919,
1347*46d2f618SCy Schubert      928,   937,   946,   955,   964,   977,   988,   999,  1010,  1019,
1348*46d2f618SCy Schubert     1032,  1045,  1054,  1063,  1072,  1079,  1086,  1095,  1102,  1111,
1349*46d2f618SCy Schubert     1119,  1126,  1133,  1141,  1150,  1158,  1174,  1182,  1190,  1198,
1350*46d2f618SCy Schubert     1206,  1214,  1227,  1234,  1243,  1252,  1266,  1275,  1284,  1293,
1351*46d2f618SCy Schubert     1302,  1311,  1320,  1329,  1338,  1345,  1352,  1378,  1386,  1393,
1352*46d2f618SCy Schubert     1400,  1407,  1414,  1422,  1430,  1438,  1445,  1456,  1467,  1474,
1353*46d2f618SCy Schubert     1483,  1492,  1501,  1510,  1517,  1524,  1531,  1547,  1555,  1563,
1354*46d2f618SCy Schubert     1573,  1583,  1593,  1607,  1615,  1628,  1639,  1647,  1660,  1669,
1355*46d2f618SCy Schubert     1678,  1687,  1696,  1706,  1716,  1724,  1737,  1746,  1754,  1763,
1356*46d2f618SCy Schubert     1771,  1784,  1793,  1802,  1812,  1819,  1829,  1839,  1849,  1859,
1357*46d2f618SCy Schubert     1869,  1879,  1889,  1899,  1909,  1919,  1926,  1933,  1940,  1949,
1358*46d2f618SCy Schubert     1958,  1967,  1976,  1983,  1993,  2001,  2010,  2017,  2035,  2048,
1359*46d2f618SCy Schubert     2061,  2074,  2083,  2092,  2101,  2110,  2119,  2129,  2139,  2150,
1360*46d2f618SCy Schubert     2159,  2168,  2177,  2186,  2195,  2204,  2213,  2222,  2231,  2244,
1361*46d2f618SCy Schubert     2257,  2266,  2273,  2282,  2291,  2300,  2309,  2319,  2327,  2340,
1362*46d2f618SCy Schubert     2348,  2404,  2411,  2426,  2436,  2446,  2453,  2460,  2467,  2474,
1363*46d2f618SCy Schubert     2489,  2504,  2511,  2518,  2527,  2535,  2542,  2556,  2577,  2598,
1364*46d2f618SCy Schubert     2610,  2622,  2634,  2643,  2664,  2676,  2688,  2697,  2718,  2727,
1365*46d2f618SCy Schubert     2736,  2745,  2753,  2761,  2774,  2787,  2802,  2817,  2826,  2835,
1366*46d2f618SCy Schubert     2845,  2855,  2864,  2873,  2882,  2888,  2897,  2906,  2916,  2926,
1367*46d2f618SCy Schubert     2936,  2945,  2955,  2964,  2977,  2990,  3002,  3016,  3028,  3042,
1368*46d2f618SCy Schubert     3051,  3062,  3071,  3078,  3088,  3095,  3102,  3111,  3120,  3130,
1369*46d2f618SCy Schubert     3140,  3150,  3160,  3167,  3174,  3183,  3192,  3202,  3212,  3222,
1370*46d2f618SCy Schubert     3229,  3236,  3243,  3251,  3261,  3271,  3281,  3291,  3301,  3311,
1371*46d2f618SCy Schubert     3367,  3377,  3385,  3393,  3408,  3417,  3423,  3424,  3425,  3425,
1372*46d2f618SCy Schubert     3425,  3426,  3426,  3426,  3427,  3427,  3429,  3439,  3448,  3455,
1373*46d2f618SCy Schubert     3462,  3469,  3476,  3483,  3490,  3496,  3497,  3498,  3498,  3498,
1374*46d2f618SCy Schubert     3499,  3499,  3499,  3500,  3501,  3501,  3502,  3502,  3503,  3503,
1375*46d2f618SCy Schubert     3504,  3505,  3506,  3507,  3508,  3509,  3510,  3512,  3521,  3531,
1376*46d2f618SCy Schubert     3538,  3545,  3554,  3561,  3568,  3575,  3582,  3591,  3600,  3607,
1377*46d2f618SCy Schubert     3614,  3624,  3634,  3644,  3654,  3664,  3674,  3685,  3691,  3692,
1378*46d2f618SCy Schubert     3693,  3695,  3702,  3708,  3709,  3710,  3712,  3719,  3729,  3736,
1379*46d2f618SCy Schubert     3745,  3753,  3759,  3760,  3762,  3762,  3762,  3763,  3763,  3764,
1380*46d2f618SCy Schubert     3765,  3766,  3767,  3768,  3770,  3779,  3788,  3795,  3804,  3811,
1381*46d2f618SCy Schubert     3820,  3828,  3841,  3849,  3862,  3868,  3869,  3870,  3870,  3871,
1382*46d2f618SCy Schubert     3871,  3871,  3872,  3872,  3872,  3873,  3873,  3873,  3874,  3874,
1383*46d2f618SCy Schubert     3876,  3888,  3900,  3913,  3926,  3938,  3953,  3965,  3977,  3990,
1384*46d2f618SCy Schubert     4003,  4016,  4029,  4044,  4055,  4064,  4080,  4087,  4096,  4105,
1385*46d2f618SCy Schubert     4114,  4120,  4121,  4122,  4122,  4124,  4139
1386b7c0c8c1SCy Schubert };
1387b7c0c8c1SCy Schubert #endif
1388b7c0c8c1SCy Schubert 
1389b7c0c8c1SCy Schubert /** Accessing symbol of state STATE.  */
1390b7c0c8c1SCy Schubert #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1391b7c0c8c1SCy Schubert 
1392b7c0c8c1SCy Schubert #if YYDEBUG || 0
1393b7c0c8c1SCy Schubert /* The user-facing name of the symbol whose (internal) number is
1394b7c0c8c1SCy Schubert    YYSYMBOL.  No bounds checking.  */
1395b7c0c8c1SCy Schubert static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1396b7c0c8c1SCy Schubert 
1397b7c0c8c1SCy Schubert /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1398b7c0c8c1SCy Schubert    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1399b7c0c8c1SCy Schubert static const char *const yytname[] =
1400b7c0c8c1SCy Schubert {
1401b7c0c8c1SCy Schubert   "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
1402b7c0c8c1SCy Schubert   "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
1403b7c0c8c1SCy Schubert   "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
1404b7c0c8c1SCy Schubert   "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
1405b7c0c8c1SCy Schubert   "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6",
1406b7c0c8c1SCy Schubert   "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1407b7c0c8c1SCy Schubert   "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1408b7c0c8c1SCy Schubert   "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1409b7c0c8c1SCy Schubert   "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1410b7c0c8c1SCy Schubert   "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1411b7c0c8c1SCy Schubert   "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1412b7c0c8c1SCy Schubert   "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1413b7c0c8c1SCy Schubert   "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1414b7c0c8c1SCy Schubert   "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1415b7c0c8c1SCy Schubert   "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1416b7c0c8c1SCy Schubert   "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1417b7c0c8c1SCy Schubert   "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1418b7c0c8c1SCy Schubert   "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1419b7c0c8c1SCy Schubert   "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1420b7c0c8c1SCy Schubert   "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1421b7c0c8c1SCy Schubert   "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1422b7c0c8c1SCy Schubert   "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1423b7c0c8c1SCy Schubert   "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1424b7c0c8c1SCy Schubert   "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1425b7c0c8c1SCy Schubert   "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1426b7c0c8c1SCy Schubert   "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1427b7c0c8c1SCy Schubert   "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1428b7c0c8c1SCy Schubert   "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1429b7c0c8c1SCy Schubert   "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1430b7c0c8c1SCy Schubert   "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1431b7c0c8c1SCy Schubert   "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1432b7c0c8c1SCy Schubert   "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1433b7c0c8c1SCy Schubert   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1434b7c0c8c1SCy Schubert   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1435b7c0c8c1SCy Schubert   "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1436b7c0c8c1SCy Schubert   "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1437b7c0c8c1SCy Schubert   "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1438b7c0c8c1SCy Schubert   "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1439b7c0c8c1SCy Schubert   "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1440b7c0c8c1SCy Schubert   "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1441b7c0c8c1SCy Schubert   "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1442b7c0c8c1SCy Schubert   "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1443b7c0c8c1SCy Schubert   "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1444b7c0c8c1SCy Schubert   "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1445b7c0c8c1SCy Schubert   "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1446b7c0c8c1SCy Schubert   "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1447b7c0c8c1SCy Schubert   "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1448b7c0c8c1SCy Schubert   "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1449b7c0c8c1SCy Schubert   "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1450b7c0c8c1SCy Schubert   "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1451b7c0c8c1SCy Schubert   "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1452b7c0c8c1SCy Schubert   "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1453b7c0c8c1SCy Schubert   "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1454b7c0c8c1SCy Schubert   "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1455b7c0c8c1SCy Schubert   "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1456b7c0c8c1SCy Schubert   "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1457b7c0c8c1SCy Schubert   "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1458b7c0c8c1SCy Schubert   "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1459b7c0c8c1SCy Schubert   "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1460b7c0c8c1SCy Schubert   "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1461b7c0c8c1SCy Schubert   "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1462b7c0c8c1SCy Schubert   "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1463b7c0c8c1SCy Schubert   "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1464b7c0c8c1SCy Schubert   "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1465b7c0c8c1SCy Schubert   "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1466b7c0c8c1SCy Schubert   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1467b7c0c8c1SCy Schubert   "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1468b7c0c8c1SCy Schubert   "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1469b7c0c8c1SCy Schubert   "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1470b7c0c8c1SCy Schubert   "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
147156850988SCy Schubert   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_DNSTAP_SAMPLE_RATE",
147256850988SCy Schubert   "VAR_RESPONSE_IP_TAG", "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA",
147356850988SCy Schubert   "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_IP_DSCP",
147456850988SCy Schubert   "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT",
147556850988SCy Schubert   "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT",
147656850988SCy Schubert   "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY",
147756850988SCy Schubert   "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1478b7c0c8c1SCy Schubert   "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1479b7c0c8c1SCy Schubert   "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1480b7c0c8c1SCy Schubert   "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1481b7c0c8c1SCy Schubert   "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1482b7c0c8c1SCy Schubert   "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1483b7c0c8c1SCy Schubert   "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1484b7c0c8c1SCy Schubert   "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1485b7c0c8c1SCy Schubert   "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1486b7c0c8c1SCy Schubert   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1487335c7cdaSCy Schubert   "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_CACHE_MIN_NEGATIVE_TTL",
1488335c7cdaSCy Schubert   "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
1489335c7cdaSCy Schubert   "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
1490335c7cdaSCy Schubert   "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
1491335c7cdaSCy Schubert   "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
1492335c7cdaSCy Schubert   "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
1493335c7cdaSCy Schubert   "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1494b7c0c8c1SCy Schubert   "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1495b7c0c8c1SCy Schubert   "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1496b7c0c8c1SCy Schubert   "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1497b7c0c8c1SCy Schubert   "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1498b7c0c8c1SCy Schubert   "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1499b7c0c8c1SCy Schubert   "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1500b7c0c8c1SCy Schubert   "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1501b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1502b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1503b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1504b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1505b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1506b7c0c8c1SCy Schubert   "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1507b7c0c8c1SCy Schubert   "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1508b7c0c8c1SCy Schubert   "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1509b7c0c8c1SCy Schubert   "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1510b7c0c8c1SCy Schubert   "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1511b7c0c8c1SCy Schubert   "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1512b7c0c8c1SCy Schubert   "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT",
1513b7c0c8c1SCy Schubert   "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_CACHEDB_REDISPATH",
1514b7c0c8c1SCy Schubert   "VAR_CACHEDB_REDISPASSWORD", "VAR_CACHEDB_REDISLOGICALDB",
1515*46d2f618SCy Schubert   "VAR_CACHEDB_REDISCOMMANDTIMEOUT", "VAR_CACHEDB_REDISCONNECTTIMEOUT",
1516b7c0c8c1SCy Schubert   "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1517b7c0c8c1SCy Schubert   "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1518b7c0c8c1SCy Schubert   "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1519b7c0c8c1SCy Schubert   "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1520b7c0c8c1SCy Schubert   "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1521b7c0c8c1SCy Schubert   "VAR_TCP_CONNECTION_LIMIT", "VAR_ANSWER_COOKIE", "VAR_COOKIE_SECRET",
1522b7c0c8c1SCy Schubert   "VAR_IP_RATELIMIT_COOKIE", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1523b7c0c8c1SCy Schubert   "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1524335c7cdaSCy Schubert   "VAR_LOG_TAG_QUERYREPLY", "VAR_DISCARD_TIMEOUT", "VAR_WAIT_LIMIT",
1525335c7cdaSCy Schubert   "VAR_WAIT_LIMIT_COOKIE", "VAR_WAIT_LIMIT_NETBLOCK",
1526335c7cdaSCy Schubert   "VAR_WAIT_LIMIT_COOKIE_NETBLOCK", "VAR_STREAM_WAIT_SIZE",
1527335c7cdaSCy Schubert   "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI",
1528335c7cdaSCy Schubert   "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
1529335c7cdaSCy Schubert   "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
1530335c7cdaSCy Schubert   "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
1531335c7cdaSCy Schubert   "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1532335c7cdaSCy Schubert   "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1533b7c0c8c1SCy Schubert   "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1534b7c0c8c1SCy Schubert   "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1535b7c0c8c1SCy Schubert   "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION",
1536b7c0c8c1SCy Schubert   "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION",
1537*46d2f618SCy Schubert   "VAR_INTERFACE_TAG_DATA", "VAR_QUIC_PORT", "VAR_QUIC_SIZE",
1538*46d2f618SCy Schubert   "VAR_PROXY_PROTOCOL_PORT", "VAR_STATISTICS_INHIBIT_ZERO",
1539*46d2f618SCy Schubert   "VAR_HARDEN_UNKNOWN_ADDITIONAL", "VAR_DISABLE_EDNS_DO",
1540*46d2f618SCy Schubert   "VAR_CACHEDB_NO_STORE", "VAR_LOG_DESTADDR",
154156850988SCy Schubert   "VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED", "VAR_COOKIE_SECRET_FILE",
1542*46d2f618SCy Schubert   "VAR_ITER_SCRUB_NS", "VAR_ITER_SCRUB_CNAME", "VAR_MAX_GLOBAL_QUOTA",
1543*46d2f618SCy Schubert   "VAR_HARDEN_UNVERIFIED_GLUE", "VAR_LOG_TIME_ISO", "$accept",
1544*46d2f618SCy Schubert   "toplevelvars", "toplevelvar", "force_toplevel", "serverstart",
1545*46d2f618SCy Schubert   "contents_server", "content_server", "stub_clause", "stubstart",
1546*46d2f618SCy Schubert   "contents_stub", "content_stub", "forward_clause", "forwardstart",
1547*46d2f618SCy Schubert   "contents_forward", "content_forward", "view_clause", "viewstart",
1548*46d2f618SCy Schubert   "contents_view", "content_view", "authstart", "contents_auth",
1549*46d2f618SCy Schubert   "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override",
1550*46d2f618SCy Schubert   "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart",
1551*46d2f618SCy Schubert   "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity",
1552*46d2f618SCy Schubert   "server_statistics_interval", "server_statistics_cumulative",
1553*46d2f618SCy Schubert   "server_extended_statistics", "server_statistics_inhibit_zero",
1554*46d2f618SCy Schubert   "server_shm_enable", "server_shm_key", "server_port",
1555*46d2f618SCy Schubert   "server_send_client_subnet", "server_client_subnet_zone",
1556b7c0c8c1SCy Schubert   "server_client_subnet_always_forward", "server_client_subnet_opcode",
1557b7c0c8c1SCy Schubert   "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1558b7c0c8c1SCy Schubert   "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1559b7c0c8c1SCy Schubert   "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1560b7c0c8c1SCy Schubert   "server_interface", "server_outgoing_interface", "server_outgoing_range",
1561b7c0c8c1SCy Schubert   "server_outgoing_port_permit", "server_outgoing_port_avoid",
1562b7c0c8c1SCy Schubert   "server_outgoing_num_tcp", "server_incoming_num_tcp",
1563b7c0c8c1SCy Schubert   "server_interface_automatic", "server_interface_automatic_ports",
1564b7c0c8c1SCy Schubert   "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1565b7c0c8c1SCy Schubert   "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1566b7c0c8c1SCy Schubert   "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1567b7c0c8c1SCy Schubert   "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1568b7c0c8c1SCy Schubert   "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1569b7c0c8c1SCy Schubert   "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1570b7c0c8c1SCy Schubert   "server_tcp_upstream", "server_udp_upstream_without_downstream",
1571b7c0c8c1SCy Schubert   "server_ssl_upstream", "server_ssl_service_key",
1572b7c0c8c1SCy Schubert   "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1573b7c0c8c1SCy Schubert   "server_tls_win_cert", "server_tls_additional_port",
1574b7c0c8c1SCy Schubert   "server_tls_ciphers", "server_tls_ciphersuites",
1575b7c0c8c1SCy Schubert   "server_tls_session_ticket_keys", "server_tls_use_sni",
1576b7c0c8c1SCy Schubert   "server_https_port", "server_http_endpoint", "server_http_max_streams",
1577b7c0c8c1SCy Schubert   "server_http_query_buffer_size", "server_http_response_buffer_size",
1578b7c0c8c1SCy Schubert   "server_http_nodelay", "server_http_notls_downstream",
1579*46d2f618SCy Schubert   "server_quic_port", "server_quic_size", "server_use_systemd",
1580*46d2f618SCy Schubert   "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
1581*46d2f618SCy Schubert   "server_log_time_iso", "server_log_queries", "server_log_replies",
1582b7c0c8c1SCy Schubert   "server_log_tag_queryreply", "server_log_servfail",
1583b7c0c8c1SCy Schubert   "server_log_destaddr", "server_log_local_actions", "server_chroot",
1584b7c0c8c1SCy Schubert   "server_username", "server_directory", "server_logfile",
1585b7c0c8c1SCy Schubert   "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
1586b7c0c8c1SCy Schubert   "server_dlv_anchor", "server_auto_trust_anchor_file",
1587b7c0c8c1SCy Schubert   "server_trust_anchor_file", "server_trusted_keys_file",
1588b7c0c8c1SCy Schubert   "server_trust_anchor", "server_trust_anchor_signaling",
1589b7c0c8c1SCy Schubert   "server_root_key_sentinel", "server_domain_insecure",
1590b7c0c8c1SCy Schubert   "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
1591b7c0c8c1SCy Schubert   "server_hide_http_user_agent", "server_identity", "server_version",
1592b7c0c8c1SCy Schubert   "server_http_user_agent", "server_nsid", "server_so_rcvbuf",
1593b7c0c8c1SCy Schubert   "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
1594b7c0c8c1SCy Schubert   "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
1595b7c0c8c1SCy Schubert   "server_edns_buffer_size", "server_msg_buffer_size",
1596b7c0c8c1SCy Schubert   "server_msg_cache_size", "server_msg_cache_slabs",
1597b7c0c8c1SCy Schubert   "server_num_queries_per_thread", "server_jostle_timeout",
1598b7c0c8c1SCy Schubert   "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
1599b7c0c8c1SCy Schubert   "server_insecure_lan_zones", "server_rrset_cache_size",
1600b7c0c8c1SCy Schubert   "server_rrset_cache_slabs", "server_infra_host_ttl",
1601b7c0c8c1SCy Schubert   "server_infra_lame_ttl", "server_infra_cache_numhosts",
1602b7c0c8c1SCy Schubert   "server_infra_cache_lame_size", "server_infra_cache_slabs",
1603b7c0c8c1SCy Schubert   "server_infra_cache_min_rtt", "server_infra_cache_max_rtt",
1604b7c0c8c1SCy Schubert   "server_infra_keep_probing", "server_target_fetch_policy",
1605b7c0c8c1SCy Schubert   "server_harden_short_bufsize", "server_harden_large_queries",
1606*46d2f618SCy Schubert   "server_harden_glue", "server_harden_unverified_glue",
1607*46d2f618SCy Schubert   "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1608*46d2f618SCy Schubert   "server_harden_referral_path", "server_harden_algo_downgrade",
1609*46d2f618SCy Schubert   "server_harden_unknown_additional", "server_use_caps_for_id",
1610*46d2f618SCy Schubert   "server_caps_whitelist", "server_private_address",
1611*46d2f618SCy Schubert   "server_private_domain", "server_prefetch", "server_prefetch_key",
1612*46d2f618SCy Schubert   "server_deny_any", "server_unwanted_reply_threshold",
1613*46d2f618SCy Schubert   "server_do_not_query_address", "server_do_not_query_localhost",
1614*46d2f618SCy Schubert   "server_access_control", "server_interface_action", "server_module_conf",
1615b7c0c8c1SCy Schubert   "server_val_override_date", "server_val_sig_skew_min",
1616b7c0c8c1SCy Schubert   "server_val_sig_skew_max", "server_val_max_restart",
1617b7c0c8c1SCy Schubert   "server_cache_max_ttl", "server_cache_max_negative_ttl",
1618335c7cdaSCy Schubert   "server_cache_min_negative_ttl", "server_cache_min_ttl",
1619335c7cdaSCy Schubert   "server_bogus_ttl", "server_val_clean_additional",
1620335c7cdaSCy Schubert   "server_val_permissive_mode", "server_aggressive_nsec",
1621335c7cdaSCy Schubert   "server_ignore_cd_flag", "server_disable_edns_do",
1622335c7cdaSCy Schubert   "server_serve_expired", "server_serve_expired_ttl",
1623335c7cdaSCy Schubert   "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1624335c7cdaSCy Schubert   "server_serve_expired_client_timeout", "server_ede_serve_expired",
1625335c7cdaSCy Schubert   "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1626335c7cdaSCy Schubert   "server_val_log_level", "server_val_nsec3_keysize_iterations",
1627335c7cdaSCy Schubert   "server_zonemd_permissive_mode", "server_add_holddown",
1628335c7cdaSCy Schubert   "server_del_holddown", "server_keep_missing",
1629b7c0c8c1SCy Schubert   "server_permit_small_holddown", "server_key_cache_size",
1630b7c0c8c1SCy Schubert   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1631b7c0c8c1SCy Schubert   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1632b7c0c8c1SCy Schubert   "server_rrset_roundrobin", "server_unknown_server_time_limit",
1633335c7cdaSCy Schubert   "server_discard_timeout", "server_wait_limit",
1634335c7cdaSCy Schubert   "server_wait_limit_cookie", "server_wait_limit_netblock",
1635335c7cdaSCy Schubert   "server_wait_limit_cookie_netblock", "server_max_udp_size",
1636335c7cdaSCy Schubert   "server_dns64_prefix", "server_dns64_synthall",
1637b7c0c8c1SCy Schubert   "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1638b7c0c8c1SCy Schubert   "server_local_zone_tag", "server_access_control_tag",
1639b7c0c8c1SCy Schubert   "server_access_control_tag_action", "server_access_control_tag_data",
1640b7c0c8c1SCy Schubert   "server_local_zone_override", "server_access_control_view",
1641b7c0c8c1SCy Schubert   "server_interface_tag", "server_interface_tag_action",
1642b7c0c8c1SCy Schubert   "server_interface_tag_data", "server_interface_view",
1643b7c0c8c1SCy Schubert   "server_response_ip_tag", "server_ip_ratelimit",
1644b7c0c8c1SCy Schubert   "server_ip_ratelimit_cookie", "server_ratelimit",
1645b7c0c8c1SCy Schubert   "server_ip_ratelimit_size", "server_ratelimit_size",
1646b7c0c8c1SCy Schubert   "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1647b7c0c8c1SCy Schubert   "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1648b7c0c8c1SCy Schubert   "server_ip_ratelimit_factor", "server_ratelimit_factor",
1649b7c0c8c1SCy Schubert   "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1650b7c0c8c1SCy Schubert   "server_outbound_msg_retry", "server_max_sent_count",
1651b7c0c8c1SCy Schubert   "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1652b7c0c8c1SCy Schubert   "server_fast_server_permil", "server_qname_minimisation",
1653b7c0c8c1SCy Schubert   "server_qname_minimisation_strict", "server_pad_responses",
1654b7c0c8c1SCy Schubert   "server_pad_responses_block_size", "server_pad_queries",
1655b7c0c8c1SCy Schubert   "server_pad_queries_block_size", "server_ipsecmod_enabled",
1656b7c0c8c1SCy Schubert   "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1657b7c0c8c1SCy Schubert   "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1658b7c0c8c1SCy Schubert   "server_ipsecmod_strict", "server_edns_client_string",
1659b7c0c8c1SCy Schubert   "server_edns_client_string_opcode", "server_ede",
1660b7c0c8c1SCy Schubert   "server_proxy_protocol_port", "stub_name", "stub_host", "stub_addr",
1661b7c0c8c1SCy Schubert   "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream",
1662b7c0c8c1SCy Schubert   "stub_prime", "forward_name", "forward_host", "forward_addr",
1663b7c0c8c1SCy Schubert   "forward_first", "forward_no_cache", "forward_ssl_upstream",
1664b7c0c8c1SCy Schubert   "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master",
1665b7c0c8c1SCy Schubert   "auth_url", "auth_allow_notify", "auth_zonemd_check",
1666b7c0c8c1SCy Schubert   "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream",
1667b7c0c8c1SCy Schubert   "auth_fallback_enabled", "view_name", "view_local_zone",
1668b7c0c8c1SCy Schubert   "view_response_ip", "view_response_ip_data", "view_local_data",
1669b7c0c8c1SCy Schubert   "view_local_data_ptr", "view_first", "rcstart", "contents_rc",
1670b7c0c8c1SCy Schubert   "content_rc", "rc_control_enable", "rc_control_port",
1671b7c0c8c1SCy Schubert   "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1672b7c0c8c1SCy Schubert   "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1673b7c0c8c1SCy Schubert   "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1674b7c0c8c1SCy Schubert   "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1675b7c0c8c1SCy Schubert   "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1676b7c0c8c1SCy Schubert   "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1677b7c0c8c1SCy Schubert   "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1678b7c0c8c1SCy Schubert   "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1679b7c0c8c1SCy Schubert   "dt_dnstap_log_resolver_query_messages",
1680b7c0c8c1SCy Schubert   "dt_dnstap_log_resolver_response_messages",
1681b7c0c8c1SCy Schubert   "dt_dnstap_log_client_query_messages",
1682b7c0c8c1SCy Schubert   "dt_dnstap_log_client_response_messages",
1683b7c0c8c1SCy Schubert   "dt_dnstap_log_forwarder_query_messages",
168456850988SCy Schubert   "dt_dnstap_log_forwarder_response_messages", "dt_dnstap_sample_rate",
168556850988SCy Schubert   "pythonstart", "contents_py", "content_py", "py_script", "dynlibstart",
168656850988SCy Schubert   "contents_dl", "content_dl", "dl_file",
168756850988SCy Schubert   "server_disable_dnssec_lame_check", "server_log_identity",
168856850988SCy Schubert   "server_response_ip", "server_response_ip_data", "dnscstart",
168956850988SCy Schubert   "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1690b7c0c8c1SCy Schubert   "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1691b7c0c8c1SCy Schubert   "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1692b7c0c8c1SCy Schubert   "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1693b7c0c8c1SCy Schubert   "dnsc_dnscrypt_shared_secret_cache_slabs",
1694b7c0c8c1SCy Schubert   "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1695b7c0c8c1SCy Schubert   "cachedbstart", "contents_cachedb", "content_cachedb",
1696b7c0c8c1SCy Schubert   "cachedb_backend_name", "cachedb_secret_seed", "cachedb_no_store",
1697335c7cdaSCy Schubert   "cachedb_check_when_serve_expired", "redis_server_host",
1698335c7cdaSCy Schubert   "redis_server_port", "redis_server_path", "redis_server_password",
1699*46d2f618SCy Schubert   "redis_timeout", "redis_command_timeout", "redis_connect_timeout",
1700*46d2f618SCy Schubert   "redis_expire_records", "redis_logical_db",
1701335c7cdaSCy Schubert   "server_tcp_connection_limit", "server_answer_cookie",
1702*46d2f618SCy Schubert   "server_cookie_secret", "server_cookie_secret_file",
1703*46d2f618SCy Schubert   "server_iter_scrub_ns", "server_iter_scrub_cname",
1704*46d2f618SCy Schubert   "server_max_global_quota", "ipsetstart", "contents_ipset",
1705*46d2f618SCy Schubert   "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1706b7c0c8c1SCy Schubert };
1707b7c0c8c1SCy Schubert 
1708b7c0c8c1SCy Schubert static const char *
1709b7c0c8c1SCy Schubert yysymbol_name (yysymbol_kind_t yysymbol)
1710b7c0c8c1SCy Schubert {
1711b7c0c8c1SCy Schubert   return yytname[yysymbol];
1712b7c0c8c1SCy Schubert }
1713b7c0c8c1SCy Schubert #endif
1714b7c0c8c1SCy Schubert 
1715*46d2f618SCy Schubert #ifdef YYPRINT
1716*46d2f618SCy Schubert /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1717*46d2f618SCy Schubert    (internal) symbol number NUM (which must be that of a token).  */
1718*46d2f618SCy Schubert static const yytype_int16 yytoknum[] =
1719b7c0c8c1SCy Schubert {
1720*46d2f618SCy Schubert        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1721*46d2f618SCy Schubert      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1722*46d2f618SCy Schubert      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1723*46d2f618SCy Schubert      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1724*46d2f618SCy Schubert      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1725*46d2f618SCy Schubert      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1726*46d2f618SCy Schubert      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1727*46d2f618SCy Schubert      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1728*46d2f618SCy Schubert      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
172956850988SCy Schubert      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
173056850988SCy Schubert      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
173156850988SCy Schubert      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
173256850988SCy Schubert      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
173356850988SCy Schubert      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
173456850988SCy Schubert      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
173556850988SCy Schubert      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
173656850988SCy Schubert      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
173756850988SCy Schubert      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
173856850988SCy Schubert      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
173956850988SCy Schubert      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
174056850988SCy Schubert      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
174156850988SCy Schubert      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
174256850988SCy Schubert      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
174356850988SCy Schubert      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
174456850988SCy Schubert      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
174556850988SCy Schubert      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
174656850988SCy Schubert      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
174756850988SCy Schubert      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
174856850988SCy Schubert      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
174956850988SCy Schubert      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
175056850988SCy Schubert      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
175156850988SCy Schubert      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
175256850988SCy Schubert      575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
1753*46d2f618SCy Schubert      585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
1754*46d2f618SCy Schubert      595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
1755*46d2f618SCy Schubert      605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
1756*46d2f618SCy Schubert      615,   616,   617,   618,   619,   620,   621,   622
1757*46d2f618SCy Schubert };
1758*46d2f618SCy Schubert #endif
1759*46d2f618SCy Schubert 
1760*46d2f618SCy Schubert #define YYPACT_NINF (-302)
1761*46d2f618SCy Schubert 
1762*46d2f618SCy Schubert #define yypact_value_is_default(Yyn) \
1763*46d2f618SCy Schubert   ((Yyn) == YYPACT_NINF)
1764*46d2f618SCy Schubert 
1765*46d2f618SCy Schubert #define YYTABLE_NINF (-1)
1766*46d2f618SCy Schubert 
1767*46d2f618SCy Schubert #define yytable_value_is_error(Yyn) \
1768*46d2f618SCy Schubert   0
1769*46d2f618SCy Schubert 
1770*46d2f618SCy Schubert   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1771*46d2f618SCy Schubert      STATE-NUM.  */
1772*46d2f618SCy Schubert static const yytype_int16 yypact[] =
1773*46d2f618SCy Schubert {
1774*46d2f618SCy Schubert     -302,   270,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1775*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1776*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1777*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,   -13,   309,   221,   236,    97,
1778*46d2f618SCy Schubert       84,   148,   -14,   -81,  -301,   182,   122,  -294,    31,    32,
1779*46d2f618SCy Schubert       33,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1780*46d2f618SCy Schubert       89,    93,    94,   123,   125,   126,   169,   215,   217,   245,
1781*46d2f618SCy Schubert      246,   247,   259,   261,   262,   263,   264,   265,   268,   269,
1782*46d2f618SCy Schubert      274,   275,   276,   277,   280,   283,   289,   290,   304,   305,
1783*46d2f618SCy Schubert      306,   311,   312,   313,   315,   320,   321,   322,   338,   345,
1784*46d2f618SCy Schubert      347,   350,   351,   352,   353,   354,   356,   359,   361,   362,
1785*46d2f618SCy Schubert      363,   364,   365,   366,   367,   368,   369,   374,   375,   377,
1786*46d2f618SCy Schubert      378,   379,   382,   388,   389,   390,   391,   392,   405,   412,
1787*46d2f618SCy Schubert      413,   414,   415,   416,   417,   418,   422,   423,   424,   425,
1788*46d2f618SCy Schubert      426,   427,   428,   429,   443,   445,   446,   448,   449,   450,
1789*46d2f618SCy Schubert      451,   452,   453,   454,   455,   457,   458,   459,   460,   461,
1790*46d2f618SCy Schubert      462,   463,   464,   465,   467,   468,   469,   470,   472,   474,
1791*46d2f618SCy Schubert      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1792*46d2f618SCy Schubert      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1793*46d2f618SCy Schubert      495,   496,   497,   499,   500,   501,   502,   503,   504,   505,
1794*46d2f618SCy Schubert      506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
1795*46d2f618SCy Schubert      516,   517,   518,   519,   521,   522,   524,   525,   526,   527,
1796*46d2f618SCy Schubert      528,   529,   530,   531,   532,   533,   534,   535,   536,   537,
1797*46d2f618SCy Schubert      538,   539,   540,   542,   543,   544,   545,   546,   547,   548,
1798*46d2f618SCy Schubert      549,   550,   551,   552,   553,   554,   556,   557,   558,   559,
1799*46d2f618SCy Schubert      560,   561,   562,   563,   564,   565,   566,   567,   568,   569,
1800*46d2f618SCy Schubert      570,   571,   572,   573,   574,   575,   576,   577,   578,   579,
1801*46d2f618SCy Schubert      580,   581,   582,   583,   584,   585,   586,   588,   589,   590,
1802*46d2f618SCy Schubert      592,   593,   594,   595,   596,   598,   599,   600,   601,   602,
1803*46d2f618SCy Schubert      603,   604,   605,   606,   607,   608,   609,   610,   611,   613,
1804*46d2f618SCy Schubert      614,   615,   616,   617,   618,  -302,  -302,  -302,  -302,  -302,
1805*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1806*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1807*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1808*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1809*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1810*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1811*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1812*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1813*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1814*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1815*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1816*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1817*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1818*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1819*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1820*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1821*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1822*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1823*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1824*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1825*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1826*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1827*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1828*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1829*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1830*46d2f618SCy Schubert     -302,  -302,  -302,   619,   620,   621,   622,   623,   624,   625,
1831*46d2f618SCy Schubert      626,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1832*46d2f618SCy Schubert      627,   628,   629,   630,   631,   632,   633,  -302,  -302,  -302,
1833*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,   634,   635,   636,   637,   638,
1834*46d2f618SCy Schubert      639,   640,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1835*46d2f618SCy Schubert      641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
1836*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1837*46d2f618SCy Schubert     -302,   651,   652,   653,   654,   655,   656,  -302,  -302,  -302,
1838*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1839*46d2f618SCy Schubert      657,   658,   659,   660,   661,   662,   663,   664,  -302,  -302,
1840*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,   665,   666,   667,
1841*46d2f618SCy Schubert      668,   669,   670,   671,   672,   673,   674,   675,   676,   677,
1842*46d2f618SCy Schubert      678,   679,   680,   681,   682,   683,   684,  -302,  -302,  -302,
1843*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1844*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,   685,  -302,
1845*46d2f618SCy Schubert     -302,   686,  -302,  -302,   687,   688,   689,   690,   691,   692,
1846*46d2f618SCy Schubert      693,   694,   695,   696,  -302,  -302,  -302,  -302,  -302,  -302,
1847*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,   697,   698,   699,   700,   701,
1848*46d2f618SCy Schubert      702,   703,   704,   705,   706,   707,   708,   709,  -302,  -302,
1849*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1850*46d2f618SCy Schubert     -302,  -302,   710,   711,  -302,  -302,  -302,  -302,  -302,  -302,
1851*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1852*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1853*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1854*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1855*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1856*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,   712,
1857*46d2f618SCy Schubert      713,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1858*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1859*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1860*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1861*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1862*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1863*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1864*46d2f618SCy Schubert     -302,   714,   715,   716,  -302,  -302,  -302,  -302,  -302,  -302,
1865*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,   717,   718,  -302,
1866*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1867*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1868*46d2f618SCy Schubert     -302,   719,   720,   721,   722,   723,   724,  -302,  -302,  -302,
1869*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1870*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1871*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1872*46d2f618SCy Schubert     -302,  -302,   725,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1873*46d2f618SCy Schubert     -302,  -302,  -302,   726,   727,  -302,  -302,  -302,  -302,  -302,
1874*46d2f618SCy Schubert      728,  -302,  -302,  -302,  -302,  -302,   729,   730,   731,   732,
1875*46d2f618SCy Schubert      733,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1876*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1877*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1878*46d2f618SCy Schubert      734,  -302,  -302,   735,   736,  -302,  -302,  -302,  -302,  -302,
1879*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1880*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1881*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1882*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1883*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1884*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1885*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
1886*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,   737,   738,   739,  -302,
1887*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,   740,   741,  -302,
1888*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302
1889*46d2f618SCy Schubert };
1890*46d2f618SCy Schubert 
1891*46d2f618SCy Schubert   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1892*46d2f618SCy Schubert      Performed when YYTABLE does not specify something else to do.  Zero
1893*46d2f618SCy Schubert      means the default is an error.  */
1894*46d2f618SCy Schubert static const yytype_int16 yydefact[] =
1895*46d2f618SCy Schubert {
1896*46d2f618SCy Schubert        2,     0,     1,    18,    19,   280,   292,   625,   687,   644,
1897*46d2f618SCy Schubert      303,   701,   724,   313,   760,   332,   692,     3,    17,    21,
1898*46d2f618SCy Schubert        5,   282,     6,   294,    10,   305,   315,   334,   627,   646,
1899*46d2f618SCy Schubert      689,   694,   703,   726,   762,     4,   279,   291,   302,    14,
1900*46d2f618SCy Schubert       15,     8,     9,     7,    16,    11,    12,    13,     0,     0,
1901*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1902*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1903*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1904*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1905*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1906*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1907*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1908*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1909*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1910*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1911*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1912*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1913*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1914*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1915*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1916*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1917*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1918*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1919*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1920*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1921*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1922*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1923*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1924*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1925*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1926*46d2f618SCy Schubert        0,     0,     0,     0,     0,    20,    22,    23,    90,    93,
1927*46d2f618SCy Schubert      102,   269,   219,   220,    24,   172,   173,   174,   175,   176,
1928*46d2f618SCy Schubert      177,   178,   179,   180,   181,    39,    81,    25,    94,    95,
1929*46d2f618SCy Schubert       50,    74,    89,   266,    26,    27,    28,    31,    32,    29,
1930*46d2f618SCy Schubert       30,    33,    34,    35,   261,   262,   263,    36,    37,    38,
1931*46d2f618SCy Schubert      126,   231,   127,   129,   130,   131,   233,   238,   234,   250,
1932*46d2f618SCy Schubert      251,   252,   256,   132,   133,   134,   135,   136,   137,   138,
1933*46d2f618SCy Schubert      264,   265,   215,    91,    80,   106,   278,   124,   125,   243,
1934*46d2f618SCy Schubert      240,   272,   128,    40,    41,    42,    43,    44,    82,    96,
1935*46d2f618SCy Schubert       97,   113,    68,    78,    69,   223,   224,   107,    60,    61,
1936*46d2f618SCy Schubert      222,    64,    62,    63,    65,   259,   117,   121,   142,   154,
1937*46d2f618SCy Schubert      187,   157,   249,   118,    75,    45,    46,    47,   104,   143,
1938*46d2f618SCy Schubert      144,   145,   146,    48,    49,    51,    52,    54,    55,    53,
1939*46d2f618SCy Schubert      151,   152,   158,    56,    57,    58,    66,   277,    85,   122,
1940*46d2f618SCy Schubert       99,   153,   270,    92,   182,   100,   101,   119,   120,   241,
1941*46d2f618SCy Schubert      105,    59,    83,    86,   196,    67,    70,   108,   109,   110,
1942*46d2f618SCy Schubert       84,   183,   184,   111,    71,    72,    73,   232,   123,   271,
1943*46d2f618SCy Schubert      206,   207,   208,   209,   210,   211,   212,   213,   221,   112,
1944*46d2f618SCy Schubert       79,   260,   114,   115,   116,   185,    76,    77,    98,    87,
1945*46d2f618SCy Schubert       88,   103,   139,   140,   242,   244,   245,   246,   247,   248,
1946*46d2f618SCy Schubert      141,   147,   148,   149,   150,   188,   189,   191,   193,   194,
1947*46d2f618SCy Schubert      192,   195,   198,   199,   200,   197,   216,   155,   255,   156,
1948*46d2f618SCy Schubert      161,   162,   159,   160,   163,   164,   166,   165,   168,   167,
1949*46d2f618SCy Schubert      169,   170,   171,   235,   237,   236,   186,   201,   202,   203,
1950*46d2f618SCy Schubert      204,   205,   225,   227,   226,   228,   229,   230,   257,   258,
1951*46d2f618SCy Schubert      267,   268,   190,   214,   217,   218,   239,   253,   254,   273,
1952*46d2f618SCy Schubert      274,   275,   276,     0,     0,     0,     0,     0,     0,     0,
1953*46d2f618SCy Schubert        0,   281,   283,   284,   285,   287,   288,   289,   290,   286,
1954*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,   293,   295,   296,
1955*46d2f618SCy Schubert      297,   298,   299,   300,   301,     0,     0,     0,     0,     0,
1956*46d2f618SCy Schubert        0,     0,   304,   306,   307,   310,   311,   308,   312,   309,
1957*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1958*46d2f618SCy Schubert      314,   316,   317,   318,   319,   323,   324,   325,   320,   321,
1959*46d2f618SCy Schubert      322,     0,     0,     0,     0,     0,     0,   337,   341,   342,
1960*46d2f618SCy Schubert      343,   344,   345,   333,   335,   336,   338,   339,   340,   346,
1961*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,   626,   628,
1962*46d2f618SCy Schubert      630,   629,   635,   631,   632,   633,   634,     0,     0,     0,
1963*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1964*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,   645,   647,   649,
1965*46d2f618SCy Schubert      648,   650,   651,   652,   653,   654,   655,   656,   657,   658,
1966*46d2f618SCy Schubert      659,   660,   661,   662,   663,   664,   665,   666,     0,   688,
1967*46d2f618SCy Schubert      690,     0,   693,   695,     0,     0,     0,     0,     0,     0,
1968*46d2f618SCy Schubert        0,     0,     0,     0,   702,   704,   705,   706,   708,   709,
1969*46d2f618SCy Schubert      707,   710,   711,   712,   713,     0,     0,     0,     0,     0,
1970*46d2f618SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,   725,   727,
1971*46d2f618SCy Schubert      728,   735,   737,   729,   730,   733,   734,   731,   738,   739,
1972*46d2f618SCy Schubert      732,   736,     0,     0,   761,   763,   764,   348,   347,   355,
1973*46d2f618SCy Schubert      368,   366,   380,   375,   376,   377,   381,   378,   379,   382,
1974*46d2f618SCy Schubert      383,   384,   388,   389,   390,   424,   425,   426,   427,   428,
1975*46d2f618SCy Schubert      456,   457,   458,   464,   465,   371,   466,   467,   470,   468,
1976*46d2f618SCy Schubert      469,   474,   475,   476,   492,   439,   440,   443,   444,   477,
1977*46d2f618SCy Schubert      496,   433,   435,   497,   505,   506,   507,   372,   455,   527,
1978*46d2f618SCy Schubert      528,   434,   521,   415,   367,   429,   493,   501,   479,     0,
1979*46d2f618SCy Schubert        0,   531,   373,   349,   414,   484,   350,   369,   370,   430,
1980*46d2f618SCy Schubert      431,   529,   481,   486,   487,   386,   385,   351,   532,   459,
1981*46d2f618SCy Schubert      491,   416,   438,   498,   499,   500,   504,   520,   432,   525,
1982*46d2f618SCy Schubert      523,   524,   447,   454,   488,   489,   448,   449,   480,   509,
1983*46d2f618SCy Schubert      418,   419,   423,   391,   393,   387,   394,   395,   396,   397,
1984*46d2f618SCy Schubert      404,   405,   406,   407,   408,   409,   410,   533,   534,   541,
1985*46d2f618SCy Schubert      460,   461,   462,   463,   471,   472,   473,   542,   543,   544,
1986*46d2f618SCy Schubert      545,     0,     0,     0,   482,   450,   452,   697,   558,   563,
1987*46d2f618SCy Schubert      561,   560,   564,   562,   571,   572,   573,     0,     0,   567,
1988*46d2f618SCy Schubert      568,   569,   570,   356,   357,   358,   359,   360,   361,   362,
1989*46d2f618SCy Schubert      363,   364,   365,   485,   502,   526,   503,   577,   578,   451,
1990*46d2f618SCy Schubert      546,     0,     0,     0,     0,     0,     0,   511,   512,   513,
1991*46d2f618SCy Schubert      514,   515,   516,   517,   518,   519,   698,   441,   442,   445,
1992*46d2f618SCy Schubert      436,   508,   413,   353,   354,   437,   579,   580,   581,   582,
1993*46d2f618SCy Schubert      583,   585,   584,   586,   587,   588,   392,   399,   574,   576,
1994*46d2f618SCy Schubert      575,   398,     0,   754,   755,   559,   421,   490,   535,   420,
1995*46d2f618SCy Schubert      536,   537,   538,     0,     0,   453,   400,   401,   403,   402,
1996*46d2f618SCy Schubert        0,   590,   446,   522,   374,   591,     0,     0,     0,     0,
1997*46d2f618SCy Schubert        0,   411,   412,   592,   352,   483,   510,   422,   756,   757,
1998*46d2f618SCy Schubert      758,   759,   478,   417,   593,   594,   595,   600,   598,   599,
1999*46d2f618SCy Schubert      596,   597,   601,   602,   603,   604,   606,   607,   605,   618,
2000*46d2f618SCy Schubert        0,   622,   623,     0,     0,   624,   608,   616,   609,   610,
2001*46d2f618SCy Schubert      611,   615,   617,   612,   613,   614,   326,   327,   328,   329,
2002*46d2f618SCy Schubert      330,   331,   636,   638,   637,   640,   641,   642,   643,   639,
2003*46d2f618SCy Schubert      667,   669,   670,   671,   672,   673,   674,   675,   676,   677,
2004*46d2f618SCy Schubert      668,   678,   679,   680,   681,   682,   683,   684,   685,   686,
2005*46d2f618SCy Schubert      691,   696,   714,   715,   716,   719,   717,   718,   720,   721,
2006*46d2f618SCy Schubert      722,   723,   740,   741,   744,   745,   748,   751,   746,   747,
2007*46d2f618SCy Schubert      752,   749,   750,   742,   743,   765,   766,   494,   530,   557,
2008*46d2f618SCy Schubert      699,   700,   565,   566,   547,   548,     0,     0,     0,   552,
2009*46d2f618SCy Schubert      753,   539,   540,   589,   495,   556,   553,     0,     0,   619,
2010*46d2f618SCy Schubert      620,   621,   551,   549,   550,   554,   555
2011*46d2f618SCy Schubert };
2012*46d2f618SCy Schubert 
2013*46d2f618SCy Schubert   /* YYPGOTO[NTERM-NUM].  */
2014*46d2f618SCy Schubert static const yytype_int16 yypgoto[] =
2015*46d2f618SCy Schubert {
2016*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2017*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2018*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2019*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2020*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2021*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2022*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2023*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2024*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2025*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2026*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2027*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2028*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2029*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2030*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2031*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2032*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2033*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2034*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2035*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2036*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2037*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2038*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2039*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2040*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2041*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2042*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2043*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2044*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2045*46d2f618SCy Schubert     -302,  -302,    92,   742,   743,   744,   745,  -302,  -302,   746,
2046*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2047*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2048*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2049*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2050*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2051*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2052*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2053*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2054*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
2055*46d2f618SCy Schubert     -302,  -302,  -302,  -302,  -302,  -302
2056*46d2f618SCy Schubert };
2057*46d2f618SCy Schubert 
2058*46d2f618SCy Schubert   /* YYDEFGOTO[NTERM-NUM].  */
2059*46d2f618SCy Schubert static const yytype_int16 yydefgoto[] =
2060*46d2f618SCy Schubert {
2061*46d2f618SCy Schubert        0,     1,    17,    18,    19,    35,   305,    20,    21,    36,
2062*46d2f618SCy Schubert      571,    22,    23,    37,   587,    24,    25,    38,   602,    26,
2063*46d2f618SCy Schubert       39,   620,   637,   638,   639,   640,   641,   642,    27,    40,
2064*46d2f618SCy Schubert      643,   306,   307,   308,   309,   310,   311,   312,   313,   314,
2065*46d2f618SCy Schubert      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
2066*46d2f618SCy Schubert      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2067*46d2f618SCy Schubert      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
2068*46d2f618SCy Schubert      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
2069*46d2f618SCy Schubert      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
2070*46d2f618SCy Schubert      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
2071*46d2f618SCy Schubert      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
2072*46d2f618SCy Schubert      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
2073*46d2f618SCy Schubert      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
2074*46d2f618SCy Schubert      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
2075*46d2f618SCy Schubert      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
2076*46d2f618SCy Schubert      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
2077*46d2f618SCy Schubert      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
2078*46d2f618SCy Schubert      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2079*46d2f618SCy Schubert      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2080*46d2f618SCy Schubert      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
2081*46d2f618SCy Schubert      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
2082*46d2f618SCy Schubert      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
2083*46d2f618SCy Schubert      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
2084*46d2f618SCy Schubert      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
2085*46d2f618SCy Schubert      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2086*46d2f618SCy Schubert      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
2087*46d2f618SCy Schubert      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
2088*46d2f618SCy Schubert      545,   546,   547,   548,   549,   550,   551,   572,   573,   574,
2089*46d2f618SCy Schubert      575,   576,   577,   578,   579,   588,   589,   590,   591,   592,
2090*46d2f618SCy Schubert      593,   594,   621,   622,   623,   624,   625,   626,   627,   628,
2091*46d2f618SCy Schubert      629,   630,   603,   604,   605,   606,   607,   608,   609,    28,
2092*46d2f618SCy Schubert       41,   658,   659,   660,   661,   662,   663,   664,   665,   666,
2093*46d2f618SCy Schubert       29,    42,   687,   688,   689,   690,   691,   692,   693,   694,
2094*46d2f618SCy Schubert      695,   696,   697,   698,   699,   700,   701,   702,   703,   704,
2095*46d2f618SCy Schubert      705,   706,   707,    30,    43,   709,   710,    31,    44,   712,
2096*46d2f618SCy Schubert      713,   552,   553,   554,   555,    32,    45,   724,   725,   726,
2097*46d2f618SCy Schubert      727,   728,   729,   730,   731,   732,   733,   734,    33,    46,
2098*46d2f618SCy Schubert      748,   749,   750,   751,   752,   753,   754,   755,   756,   757,
2099*46d2f618SCy Schubert      758,   759,   760,   761,   556,   557,   558,   559,   560,   561,
2100*46d2f618SCy Schubert      562,    34,    47,   764,   765,   766
2101b7c0c8c1SCy Schubert };
2102b7c0c8c1SCy Schubert 
2103b7c0c8c1SCy Schubert   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2104b7c0c8c1SCy Schubert      positive, shift that token.  If negative, reduce the rule whose
2105b7c0c8c1SCy Schubert      number is the opposite.  If YYTABLE_NINF, syntax error.  */
2106b7c0c8c1SCy Schubert static const yytype_int16 yytable[] =
2107b7c0c8c1SCy Schubert {
2108*46d2f618SCy Schubert       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
2109*46d2f618SCy Schubert       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
2110*46d2f618SCy Schubert       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
2111*46d2f618SCy Schubert       78,    79,    80,    81,   762,   763,   708,   711,    82,    83,
2112*46d2f618SCy Schubert       84,   767,   768,   769,    85,    86,    87,    88,    89,    90,
2113*46d2f618SCy Schubert       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
2114*46d2f618SCy Schubert      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
2115*46d2f618SCy Schubert      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
2116*46d2f618SCy Schubert      121,   122,   123,   124,   125,   770,   771,   772,   773,   774,
2117*46d2f618SCy Schubert      775,   776,   777,   778,   126,   127,   128,   129,   130,   779,
2118*46d2f618SCy Schubert      131,   132,   133,   780,   781,   134,   135,   136,   137,   138,
2119*46d2f618SCy Schubert      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
2120*46d2f618SCy Schubert      149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
2121*46d2f618SCy Schubert      159,   610,   644,   782,   160,   783,   784,   161,   162,   163,
2122*46d2f618SCy Schubert      164,   165,   166,   167,   610,   168,   169,   170,   171,   172,
2123*46d2f618SCy Schubert      173,   174,   175,   176,   177,   178,   179,   180,   181,   667,
2124*46d2f618SCy Schubert      668,   669,   670,   671,   672,   673,   674,   675,   676,   677,
2125*46d2f618SCy Schubert      678,   679,   680,   681,   682,   683,   684,   685,   686,   785,
2126*46d2f618SCy Schubert      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
2127*46d2f618SCy Schubert      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
2128*46d2f618SCy Schubert      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
2129*46d2f618SCy Schubert      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
2130*46d2f618SCy Schubert      222,   223,   224,   225,   226,   786,   227,   787,   228,   229,
2131*46d2f618SCy Schubert      230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
2132*46d2f618SCy Schubert      240,   241,   242,   243,   244,   245,   246,   650,   651,   652,
2133*46d2f618SCy Schubert      653,   654,   655,   656,   657,   788,   789,   790,   247,   248,
2134*46d2f618SCy Schubert      249,   250,   251,   252,   253,   254,   255,   256,   580,   791,
2135*46d2f618SCy Schubert        2,   792,   793,   794,   795,   796,   581,   582,   797,   798,
2136*46d2f618SCy Schubert      257,     3,     4,   595,   799,   800,   801,   802,   258,   259,
2137*46d2f618SCy Schubert      803,   260,   261,   804,   262,   263,   264,   265,   266,   805,
2138*46d2f618SCy Schubert      806,   267,   268,   269,   270,   271,   272,   273,   274,   275,
2139*46d2f618SCy Schubert      276,   277,   278,   279,   807,   808,   809,   280,     5,   596,
2140*46d2f618SCy Schubert      597,   810,   811,   812,     6,   813,   281,   282,   283,   284,
2141*46d2f618SCy Schubert      814,   815,   816,   285,   286,   287,   288,   289,   290,   291,
2142*46d2f618SCy Schubert      292,   293,   294,   295,   296,   297,   598,   298,   817,   299,
2143*46d2f618SCy Schubert      300,   301,   302,   303,   304,   818,   563,   819,   564,   565,
2144*46d2f618SCy Schubert      820,   821,   822,   823,   824,   583,   825,   584,     7,   826,
2145*46d2f618SCy Schubert      585,   827,   828,   829,   830,   831,   832,   833,   834,   835,
2146*46d2f618SCy Schubert      612,   613,   614,   615,   836,   837,     8,   838,   839,   840,
2147*46d2f618SCy Schubert      617,   611,   841,   612,   613,   614,   615,   616,   842,   843,
2148*46d2f618SCy Schubert      844,   845,   846,   617,   735,   736,   737,   738,   739,   740,
2149*46d2f618SCy Schubert      741,   742,   743,   744,   745,   847,   631,   632,   633,   634,
2150*46d2f618SCy Schubert      635,   566,   848,   849,   850,   851,   852,   853,   854,   636,
2151*46d2f618SCy Schubert      599,   600,   855,   856,   857,   858,   859,   860,   861,   862,
2152*46d2f618SCy Schubert      618,   619,     9,   714,   715,   716,   717,   718,   719,   720,
2153*46d2f618SCy Schubert      721,   722,   723,   863,   567,   864,   865,   568,   866,   867,
2154*46d2f618SCy Schubert      868,   869,   870,   871,   872,   873,   569,   874,   875,   876,
2155*46d2f618SCy Schubert      877,   878,   879,   880,   881,   882,   601,   883,   884,   885,
2156*46d2f618SCy Schubert      886,   746,   887,   747,   888,   889,   890,   891,   892,   893,
2157*46d2f618SCy Schubert      894,   895,   896,   897,   898,   899,   900,   901,   902,   903,
2158*46d2f618SCy Schubert      904,   905,   906,   907,   908,   909,   910,   911,    10,   912,
2159*46d2f618SCy Schubert      913,   914,   915,   916,   917,   918,   919,   920,   921,   922,
2160*46d2f618SCy Schubert      923,   924,   925,   926,   927,   928,   929,   930,   931,   932,
2161*46d2f618SCy Schubert       11,   933,   934,   586,   935,   936,   937,   938,   939,   940,
2162*46d2f618SCy Schubert      941,   942,   943,   944,   945,   946,   947,   948,   949,   950,
2163*46d2f618SCy Schubert      951,    12,   952,   953,   954,   955,   956,   957,   958,   959,
2164*46d2f618SCy Schubert      960,   961,   962,   963,   964,    13,   965,   966,   967,   968,
216556850988SCy Schubert      969,   970,   971,   972,   973,   974,   975,   976,   977,   978,
2166*46d2f618SCy Schubert      979,   980,   981,   982,   983,   984,   985,   986,   987,   988,
2167*46d2f618SCy Schubert      989,   990,   991,   992,   993,   994,   995,    14,   996,   997,
2168*46d2f618SCy Schubert      998,    15,   999,  1000,  1001,  1002,  1003,    16,  1004,  1005,
216956850988SCy Schubert     1006,  1007,  1008,  1009,  1010,  1011,  1012,  1013,  1014,  1015,
2170*46d2f618SCy Schubert     1016,  1017,   570,  1018,  1019,  1020,  1021,  1022,  1023,  1024,
2171*46d2f618SCy Schubert     1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,  1034,
2172*46d2f618SCy Schubert     1035,  1036,  1037,  1038,  1039,  1040,  1041,  1042,  1043,  1044,
2173*46d2f618SCy Schubert     1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,
2174*46d2f618SCy Schubert     1055,  1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1064,
2175*46d2f618SCy Schubert     1065,  1066,  1067,  1068,  1069,  1070,  1071,  1072,  1073,  1074,
2176*46d2f618SCy Schubert     1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,
2177*46d2f618SCy Schubert     1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1093,  1094,
2178*46d2f618SCy Schubert     1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,  1103,  1104,
2179*46d2f618SCy Schubert     1105,  1106,  1107,  1108,  1109,  1110,  1111,  1112,  1113,  1114,
2180*46d2f618SCy Schubert     1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,  1123,  1124,
2181*46d2f618SCy Schubert     1125,  1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,  1134,
2182*46d2f618SCy Schubert     1135,  1136,  1137,  1138,  1139,  1140,  1141,  1142,  1143,  1144,
2183*46d2f618SCy Schubert     1145,  1146,     0,     0,     0,     0,     0,     0,     0,     0,
2184b7c0c8c1SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2185b7c0c8c1SCy Schubert        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2186*46d2f618SCy Schubert        0,     0,   645,   646,   647,   648,   649
2187b7c0c8c1SCy Schubert };
2188b7c0c8c1SCy Schubert 
2189b7c0c8c1SCy Schubert static const yytype_int16 yycheck[] =
2190b7c0c8c1SCy Schubert {
2191b7c0c8c1SCy Schubert       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2192b7c0c8c1SCy Schubert       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
2193b7c0c8c1SCy Schubert       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
2194*46d2f618SCy Schubert       43,    44,    45,    46,   328,   329,   117,   338,    51,    52,
2195b7c0c8c1SCy Schubert       53,    10,    10,    10,    57,    58,    59,    60,    61,    62,
2196b7c0c8c1SCy Schubert       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
2197b7c0c8c1SCy Schubert       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
2198b7c0c8c1SCy Schubert       83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
2199*46d2f618SCy Schubert       93,    94,    95,    96,    97,    10,    10,    10,    10,    10,
2200*46d2f618SCy Schubert       10,    10,    10,    10,   107,   108,   109,   110,   111,    10,
2201*46d2f618SCy Schubert      113,   114,   115,    10,    10,   118,   119,   120,   121,   122,
2202b7c0c8c1SCy Schubert      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
2203b7c0c8c1SCy Schubert      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
2204*46d2f618SCy Schubert      143,    47,    40,    10,   147,    10,    10,   150,   151,   152,
2205*46d2f618SCy Schubert      153,   154,   155,   156,    47,   158,   159,   160,   161,   162,
2206*46d2f618SCy Schubert      163,   164,   165,   166,   167,   168,   169,   170,   171,   173,
2207*46d2f618SCy Schubert      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
2208*46d2f618SCy Schubert      184,   185,   186,   187,   188,   189,   190,   191,   192,    10,
2209b7c0c8c1SCy Schubert      193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2210b7c0c8c1SCy Schubert      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2211b7c0c8c1SCy Schubert      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2212b7c0c8c1SCy Schubert      223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
221356850988SCy Schubert      233,   234,   235,   236,   237,    10,   239,    10,   241,   242,
2214b7c0c8c1SCy Schubert      243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2215*46d2f618SCy Schubert      253,   254,   255,   256,   257,   258,   259,    99,   100,   101,
2216*46d2f618SCy Schubert      102,   103,   104,   105,   106,    10,    10,    10,   271,   272,
2217*46d2f618SCy Schubert      273,   274,   275,   276,   277,   278,   279,   280,    47,    10,
2218*46d2f618SCy Schubert        0,    10,    10,    10,    10,    10,    55,    56,    10,    10,
2219*46d2f618SCy Schubert      293,    11,    12,    47,    10,    10,    10,    10,   301,   302,
2220*46d2f618SCy Schubert       10,   304,   305,    10,   307,   308,   309,   310,   311,    10,
2221*46d2f618SCy Schubert       10,   314,   315,   316,   317,   318,   319,   320,   321,   322,
2222*46d2f618SCy Schubert      323,   324,   325,   326,    10,    10,    10,   330,    48,    83,
2223*46d2f618SCy Schubert       84,    10,    10,    10,    54,    10,   339,   340,   341,   342,
2224*46d2f618SCy Schubert       10,    10,    10,   346,   347,   348,   349,   350,   351,   352,
2225*46d2f618SCy Schubert      353,   354,   355,   356,   357,   358,   110,   360,    10,   362,
2226*46d2f618SCy Schubert      363,   364,   365,   366,   367,    10,    47,    10,    49,    50,
2227*46d2f618SCy Schubert       10,    10,    10,    10,    10,   144,    10,   146,    98,    10,
2228*46d2f618SCy Schubert      149,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2229*46d2f618SCy Schubert      296,   297,   298,   299,    10,    10,   116,    10,    10,    10,
2230*46d2f618SCy Schubert      306,   294,    10,   296,   297,   298,   299,   300,    10,    10,
2231*46d2f618SCy Schubert       10,    10,    10,   306,   282,   283,   284,   285,   286,   287,
2232*46d2f618SCy Schubert      288,   289,   290,   291,   292,    10,   332,   333,   334,   335,
2233*46d2f618SCy Schubert      336,   112,    10,    10,    10,    10,    10,    10,    10,   345,
2234*46d2f618SCy Schubert      194,   195,    10,    10,    10,    10,    10,    10,    10,    10,
2235*46d2f618SCy Schubert      343,   344,   172,   261,   262,   263,   264,   265,   266,   267,
2236*46d2f618SCy Schubert      268,   269,   270,    10,   145,    10,    10,   148,    10,    10,
2237*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,   157,    10,    10,    10,
2238*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,   240,    10,    10,    10,
2239*46d2f618SCy Schubert       10,   359,    10,   361,    10,    10,    10,    10,    10,    10,
2240b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2241*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,   238,    10,
2242b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2243b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2244*46d2f618SCy Schubert      260,    10,    10,   312,    10,    10,    10,    10,    10,    10,
2245*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2246*46d2f618SCy Schubert       10,   281,    10,    10,    10,    10,    10,    10,    10,    10,
2247*46d2f618SCy Schubert       10,    10,    10,    10,    10,   295,    10,    10,    10,    10,
2248*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2249*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2250*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,   327,    10,    10,
2251*46d2f618SCy Schubert       10,   331,    10,    10,    10,    10,    10,   337,    10,    10,
2252*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2253*46d2f618SCy Schubert       10,    10,   313,    10,    10,    10,    10,    10,    10,    10,
2254b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2255b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2256b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2257b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2258b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2259b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2260b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2261b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2262b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2263b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2264b7c0c8c1SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
226556850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2266*46d2f618SCy Schubert       10,    10,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2267b7c0c8c1SCy Schubert       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2268b7c0c8c1SCy Schubert       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2269*46d2f618SCy Schubert       -1,    -1,    40,    40,    40,    40,    40
2270b7c0c8c1SCy Schubert };
2271b7c0c8c1SCy Schubert 
2272*46d2f618SCy Schubert   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2273*46d2f618SCy Schubert      symbol of state STATE-NUM.  */
2274b7c0c8c1SCy Schubert static const yytype_int16 yystos[] =
2275b7c0c8c1SCy Schubert {
2276*46d2f618SCy Schubert        0,   369,     0,    11,    12,    48,    54,    98,   116,   172,
2277*46d2f618SCy Schubert      238,   260,   281,   295,   327,   331,   337,   370,   371,   372,
2278*46d2f618SCy Schubert      375,   376,   379,   380,   383,   384,   387,   396,   677,   688,
2279*46d2f618SCy Schubert      711,   715,   723,   736,   759,   373,   377,   381,   385,   388,
2280*46d2f618SCy Schubert      397,   678,   689,   712,   716,   724,   737,   760,    13,    14,
2281*46d2f618SCy Schubert       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2282*46d2f618SCy Schubert       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
2283*46d2f618SCy Schubert       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2284*46d2f618SCy Schubert       45,    46,    51,    52,    53,    57,    58,    59,    60,    61,
2285*46d2f618SCy Schubert       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
2286*46d2f618SCy Schubert       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
2287*46d2f618SCy Schubert       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
2288*46d2f618SCy Schubert       92,    93,    94,    95,    96,    97,   107,   108,   109,   110,
2289*46d2f618SCy Schubert      111,   113,   114,   115,   118,   119,   120,   121,   122,   123,
2290*46d2f618SCy Schubert      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2291*46d2f618SCy Schubert      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
2292*46d2f618SCy Schubert      147,   150,   151,   152,   153,   154,   155,   156,   158,   159,
2293*46d2f618SCy Schubert      160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
2294*46d2f618SCy Schubert      170,   171,   193,   194,   195,   196,   197,   198,   199,   200,
2295*46d2f618SCy Schubert      201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
2296*46d2f618SCy Schubert      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
2297*46d2f618SCy Schubert      221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
2298*46d2f618SCy Schubert      231,   232,   233,   234,   235,   236,   237,   239,   241,   242,
2299*46d2f618SCy Schubert      243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2300*46d2f618SCy Schubert      253,   254,   255,   256,   257,   258,   259,   271,   272,   273,
2301*46d2f618SCy Schubert      274,   275,   276,   277,   278,   279,   280,   293,   301,   302,
2302*46d2f618SCy Schubert      304,   305,   307,   308,   309,   310,   311,   314,   315,   316,
2303*46d2f618SCy Schubert      317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
2304*46d2f618SCy Schubert      330,   339,   340,   341,   342,   346,   347,   348,   349,   350,
2305*46d2f618SCy Schubert      351,   352,   353,   354,   355,   356,   357,   358,   360,   362,
2306*46d2f618SCy Schubert      363,   364,   365,   366,   367,   374,   399,   400,   401,   402,
2307*46d2f618SCy Schubert      403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
2308*46d2f618SCy Schubert      413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
2309*46d2f618SCy Schubert      423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
2310*46d2f618SCy Schubert      433,   434,   435,   436,   437,   438,   439,   440,   441,   442,
2311*46d2f618SCy Schubert      443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
2312*46d2f618SCy Schubert      453,   454,   455,   456,   457,   458,   459,   460,   461,   462,
2313*46d2f618SCy Schubert      463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
2314*46d2f618SCy Schubert      473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
2315*46d2f618SCy Schubert      483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
2316*46d2f618SCy Schubert      493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
2317*46d2f618SCy Schubert      503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
2318*46d2f618SCy Schubert      513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
2319*46d2f618SCy Schubert      523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
2320*46d2f618SCy Schubert      533,   534,   535,   536,   537,   538,   539,   540,   541,   542,
2321*46d2f618SCy Schubert      543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
2322*46d2f618SCy Schubert      553,   554,   555,   556,   557,   558,   559,   560,   561,   562,
2323*46d2f618SCy Schubert      563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
2324*46d2f618SCy Schubert      573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
2325*46d2f618SCy Schubert      583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
2326*46d2f618SCy Schubert      593,   594,   595,   596,   597,   598,   599,   600,   601,   602,
2327*46d2f618SCy Schubert      603,   604,   605,   606,   607,   608,   609,   610,   611,   612,
2328*46d2f618SCy Schubert      613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
2329*46d2f618SCy Schubert      623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
2330*46d2f618SCy Schubert      633,   634,   635,   636,   637,   638,   639,   640,   641,   642,
2331*46d2f618SCy Schubert      643,   644,   719,   720,   721,   722,   752,   753,   754,   755,
2332*46d2f618SCy Schubert      756,   757,   758,    47,    49,    50,   112,   145,   148,   157,
2333*46d2f618SCy Schubert      313,   378,   645,   646,   647,   648,   649,   650,   651,   652,
2334*46d2f618SCy Schubert       47,    55,    56,   144,   146,   149,   312,   382,   653,   654,
2335*46d2f618SCy Schubert      655,   656,   657,   658,   659,    47,    83,    84,   110,   194,
2336*46d2f618SCy Schubert      195,   240,   386,   670,   671,   672,   673,   674,   675,   676,
2337*46d2f618SCy Schubert       47,   294,   296,   297,   298,   299,   300,   306,   343,   344,
2338*46d2f618SCy Schubert      389,   660,   661,   662,   663,   664,   665,   666,   667,   668,
2339*46d2f618SCy Schubert      669,   332,   333,   334,   335,   336,   345,   390,   391,   392,
2340*46d2f618SCy Schubert      393,   394,   395,   398,   660,   661,   662,   663,   664,   667,
2341*46d2f618SCy Schubert       99,   100,   101,   102,   103,   104,   105,   106,   679,   680,
2342*46d2f618SCy Schubert      681,   682,   683,   684,   685,   686,   687,   173,   174,   175,
2343*46d2f618SCy Schubert      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
2344*46d2f618SCy Schubert      186,   187,   188,   189,   190,   191,   192,   690,   691,   692,
2345*46d2f618SCy Schubert      693,   694,   695,   696,   697,   698,   699,   700,   701,   702,
2346*46d2f618SCy Schubert      703,   704,   705,   706,   707,   708,   709,   710,   117,   713,
2347*46d2f618SCy Schubert      714,   338,   717,   718,   261,   262,   263,   264,   265,   266,
2348*46d2f618SCy Schubert      267,   268,   269,   270,   725,   726,   727,   728,   729,   730,
2349*46d2f618SCy Schubert      731,   732,   733,   734,   735,   282,   283,   284,   285,   286,
2350*46d2f618SCy Schubert      287,   288,   289,   290,   291,   292,   359,   361,   738,   739,
2351*46d2f618SCy Schubert      740,   741,   742,   743,   744,   745,   746,   747,   748,   749,
2352*46d2f618SCy Schubert      750,   751,   328,   329,   761,   762,   763,    10,    10,    10,
235356850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235456850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235556850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235656850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235756850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235856850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
235956850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236056850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236156850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236256850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236356850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236456850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236556850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236656850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236756850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236856850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
236956850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237056850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237156850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237256850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237356850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237456850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237556850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237656850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237756850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237856850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
237956850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238056850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238156850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238256850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238356850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238456850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
238556850988SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2386*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2387*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2388*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2389*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2390*46d2f618SCy Schubert       10,    10,    10,    10,    10,    10,    10
239156850988SCy Schubert };
239256850988SCy Schubert 
2393*46d2f618SCy Schubert   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
239456850988SCy Schubert static const yytype_int16 yyr1[] =
239556850988SCy Schubert {
2396*46d2f618SCy Schubert        0,   368,   369,   369,   370,   370,   370,   370,   370,   370,
2397*46d2f618SCy Schubert      370,   370,   370,   370,   370,   370,   370,   370,   371,   372,
2398*46d2f618SCy Schubert      373,   373,   374,   374,   374,   374,   374,   374,   374,   374,
2399*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2400*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2401*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2402*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2403*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2404*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2405*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2406*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2407*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2408*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2409*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2410*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2411*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2412*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2413*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2414*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2415*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2416*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2417*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2418*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2419*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2420*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2421*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2422*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
2423*46d2f618SCy Schubert      374,   374,   374,   374,   374,   374,   374,   374,   374,   375,
2424*46d2f618SCy Schubert      376,   377,   377,   378,   378,   378,   378,   378,   378,   378,
2425*46d2f618SCy Schubert      378,   379,   380,   381,   381,   382,   382,   382,   382,   382,
2426*46d2f618SCy Schubert      382,   382,   383,   384,   385,   385,   386,   386,   386,   386,
2427*46d2f618SCy Schubert      386,   386,   386,   387,   388,   388,   389,   389,   389,   389,
2428*46d2f618SCy Schubert      389,   389,   389,   389,   389,   389,   390,   391,   392,   393,
2429*46d2f618SCy Schubert      394,   395,   396,   397,   397,   398,   398,   398,   398,   398,
2430*46d2f618SCy Schubert      398,   398,   398,   398,   398,   398,   398,   399,   400,   401,
2431*46d2f618SCy Schubert      402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
2432*46d2f618SCy Schubert      412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
2433*46d2f618SCy Schubert      422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
2434*46d2f618SCy Schubert      432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
2435*46d2f618SCy Schubert      442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
2436*46d2f618SCy Schubert      452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
2437*46d2f618SCy Schubert      462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
2438*46d2f618SCy Schubert      472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
2439*46d2f618SCy Schubert      482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
2440*46d2f618SCy Schubert      492,   493,   494,   495,   496,   497,   498,   499,   500,   501,
2441*46d2f618SCy Schubert      502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
2442*46d2f618SCy Schubert      512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
2443*46d2f618SCy Schubert      522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
2444*46d2f618SCy Schubert      532,   533,   534,   535,   536,   537,   538,   539,   540,   541,
2445*46d2f618SCy Schubert      542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
2446*46d2f618SCy Schubert      552,   553,   554,   555,   556,   557,   558,   559,   560,   561,
2447*46d2f618SCy Schubert      562,   563,   564,   565,   566,   567,   568,   569,   570,   571,
2448*46d2f618SCy Schubert      572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
2449*46d2f618SCy Schubert      582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
2450*46d2f618SCy Schubert      592,   593,   594,   595,   596,   597,   598,   599,   600,   601,
2451*46d2f618SCy Schubert      602,   603,   604,   605,   606,   607,   608,   609,   610,   611,
2452*46d2f618SCy Schubert      612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
2453*46d2f618SCy Schubert      622,   623,   624,   625,   626,   627,   628,   629,   630,   631,
2454*46d2f618SCy Schubert      632,   633,   634,   635,   636,   637,   638,   639,   640,   641,
2455*46d2f618SCy Schubert      642,   643,   644,   645,   646,   647,   648,   649,   650,   651,
2456*46d2f618SCy Schubert      652,   653,   654,   655,   656,   657,   658,   659,   660,   661,
2457*46d2f618SCy Schubert      662,   663,   664,   665,   666,   667,   668,   669,   670,   671,
2458*46d2f618SCy Schubert      672,   673,   674,   675,   676,   677,   678,   678,   679,   679,
2459*46d2f618SCy Schubert      679,   679,   679,   679,   679,   679,   680,   681,   682,   683,
2460*46d2f618SCy Schubert      684,   685,   686,   687,   688,   689,   689,   690,   690,   690,
2461*46d2f618SCy Schubert      690,   690,   690,   690,   690,   690,   690,   690,   690,   690,
2462*46d2f618SCy Schubert      690,   690,   690,   690,   690,   690,   690,   691,   692,   693,
2463*46d2f618SCy Schubert      694,   695,   696,   697,   698,   699,   700,   701,   702,   703,
2464*46d2f618SCy Schubert      704,   705,   706,   707,   708,   709,   710,   711,   712,   712,
2465*46d2f618SCy Schubert      713,   714,   715,   716,   716,   717,   718,   719,   720,   721,
2466*46d2f618SCy Schubert      722,   723,   724,   724,   725,   725,   725,   725,   725,   725,
2467*46d2f618SCy Schubert      725,   725,   725,   725,   726,   727,   728,   729,   730,   731,
2468*46d2f618SCy Schubert      732,   733,   734,   735,   736,   737,   737,   738,   738,   738,
2469*46d2f618SCy Schubert      738,   738,   738,   738,   738,   738,   738,   738,   738,   738,
2470*46d2f618SCy Schubert      739,   740,   741,   742,   743,   744,   745,   746,   747,   748,
2471*46d2f618SCy Schubert      749,   750,   751,   752,   753,   754,   755,   756,   757,   758,
2472*46d2f618SCy Schubert      759,   760,   760,   761,   761,   762,   763
2473b7c0c8c1SCy Schubert };
2474b7c0c8c1SCy Schubert 
2475*46d2f618SCy Schubert   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2476b7c0c8c1SCy Schubert static const yytype_int8 yyr2[] =
2477b7c0c8c1SCy Schubert {
2478*46d2f618SCy Schubert        0,     2,     0,     2,     2,     1,     1,     2,     2,     2,
2479*46d2f618SCy Schubert        1,     2,     2,     2,     2,     2,     2,     1,     1,     1,
2480b7c0c8c1SCy Schubert        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2481b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2482b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2483b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2484b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2485b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2486b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2487b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2488b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2489b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2490b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2491b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2492b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2493b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2494b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2495b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2496b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2497b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2498b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2499b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2500b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2501b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2502b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2503b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2504b7c0c8c1SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2505*46d2f618SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2506*46d2f618SCy Schubert        1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2507*46d2f618SCy Schubert        1,     2,     1,     2,     0,     1,     1,     1,     1,     1,
2508*46d2f618SCy Schubert        1,     1,     2,     1,     2,     0,     1,     1,     1,     1,
250956850988SCy Schubert        1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
2510335c7cdaSCy Schubert        1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
251156850988SCy Schubert        2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
251256850988SCy Schubert        1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
2513b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2514b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2515b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2516b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2517b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2518b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2519b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2520b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2521b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2522b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2523b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2524b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2525b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2526b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2527*46d2f618SCy Schubert        2,     2,     2,     2,     3,     3,     2,     2,     2,     2,
2528b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
252956850988SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2530*46d2f618SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2531*46d2f618SCy Schubert        3,     2,     2,     2,     2,     2,     2,     2,     2,     3,
2532*46d2f618SCy Schubert        3,     2,     2,     2,     2,     2,     2,     3,     3,     4,
2533*46d2f618SCy Schubert        4,     4,     3,     3,     4,     4,     3,     3,     2,     2,
253456850988SCy Schubert        2,     2,     2,     2,     2,     3,     3,     2,     2,     2,
253556850988SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2536*46d2f618SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
2537b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2538b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2539*46d2f618SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
2540*46d2f618SCy Schubert        3,     3,     2,     2,     2,     1,     2,     0,     1,     1,
2541*46d2f618SCy Schubert        1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
2542*46d2f618SCy Schubert        2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
2543335c7cdaSCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2544*46d2f618SCy Schubert        1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
2545b7c0c8c1SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2546*46d2f618SCy Schubert        2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
2547*46d2f618SCy Schubert        1,     2,     1,     2,     0,     1,     2,     2,     2,     3,
2548*46d2f618SCy Schubert        3,     1,     2,     0,     1,     1,     1,     1,     1,     1,
254956850988SCy Schubert        1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
2550*46d2f618SCy Schubert        2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
2551*46d2f618SCy Schubert        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2552*46d2f618SCy Schubert        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2553*46d2f618SCy Schubert        2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
2554*46d2f618SCy Schubert        1,     2,     0,     1,     1,     2,     2
2555b7c0c8c1SCy Schubert };
2556b7c0c8c1SCy Schubert 
2557b7c0c8c1SCy Schubert 
2558b7c0c8c1SCy Schubert enum { YYENOMEM = -2 };
2559b7c0c8c1SCy Schubert 
2560b7c0c8c1SCy Schubert #define yyerrok         (yyerrstatus = 0)
2561b7c0c8c1SCy Schubert #define yyclearin       (yychar = YYEMPTY)
2562b7c0c8c1SCy Schubert 
2563b7c0c8c1SCy Schubert #define YYACCEPT        goto yyacceptlab
2564b7c0c8c1SCy Schubert #define YYABORT         goto yyabortlab
2565b7c0c8c1SCy Schubert #define YYERROR         goto yyerrorlab
2566b7c0c8c1SCy Schubert 
2567b7c0c8c1SCy Schubert 
2568b7c0c8c1SCy Schubert #define YYRECOVERING()  (!!yyerrstatus)
2569b7c0c8c1SCy Schubert 
2570b7c0c8c1SCy Schubert #define YYBACKUP(Token, Value)                                    \
2571b7c0c8c1SCy Schubert   do                                                              \
2572b7c0c8c1SCy Schubert     if (yychar == YYEMPTY)                                        \
2573b7c0c8c1SCy Schubert       {                                                           \
2574b7c0c8c1SCy Schubert         yychar = (Token);                                         \
2575b7c0c8c1SCy Schubert         yylval = (Value);                                         \
2576b7c0c8c1SCy Schubert         YYPOPSTACK (yylen);                                       \
2577b7c0c8c1SCy Schubert         yystate = *yyssp;                                         \
2578b7c0c8c1SCy Schubert         goto yybackup;                                            \
2579b7c0c8c1SCy Schubert       }                                                           \
2580b7c0c8c1SCy Schubert     else                                                          \
2581b7c0c8c1SCy Schubert       {                                                           \
2582b7c0c8c1SCy Schubert         yyerror (YY_("syntax error: cannot back up")); \
2583b7c0c8c1SCy Schubert         YYERROR;                                                  \
2584b7c0c8c1SCy Schubert       }                                                           \
2585b7c0c8c1SCy Schubert   while (0)
2586b7c0c8c1SCy Schubert 
2587b7c0c8c1SCy Schubert /* Backward compatibility with an undocumented macro.
2588b7c0c8c1SCy Schubert    Use YYerror or YYUNDEF. */
2589b7c0c8c1SCy Schubert #define YYERRCODE YYUNDEF
2590b7c0c8c1SCy Schubert 
2591b7c0c8c1SCy Schubert 
2592b7c0c8c1SCy Schubert /* Enable debugging if requested.  */
2593b7c0c8c1SCy Schubert #if YYDEBUG
2594b7c0c8c1SCy Schubert 
2595b7c0c8c1SCy Schubert # ifndef YYFPRINTF
2596b7c0c8c1SCy Schubert #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2597b7c0c8c1SCy Schubert #  define YYFPRINTF fprintf
2598b7c0c8c1SCy Schubert # endif
2599b7c0c8c1SCy Schubert 
2600b7c0c8c1SCy Schubert # define YYDPRINTF(Args)                        \
2601b7c0c8c1SCy Schubert do {                                            \
2602b7c0c8c1SCy Schubert   if (yydebug)                                  \
2603b7c0c8c1SCy Schubert     YYFPRINTF Args;                             \
2604b7c0c8c1SCy Schubert } while (0)
2605b7c0c8c1SCy Schubert 
2606*46d2f618SCy Schubert /* This macro is provided for backward compatibility. */
2607*46d2f618SCy Schubert # ifndef YY_LOCATION_PRINT
2608*46d2f618SCy Schubert #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2609*46d2f618SCy Schubert # endif
2610b7c0c8c1SCy Schubert 
2611b7c0c8c1SCy Schubert 
2612b7c0c8c1SCy Schubert # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
2613b7c0c8c1SCy Schubert do {                                                                      \
2614b7c0c8c1SCy Schubert   if (yydebug)                                                            \
2615b7c0c8c1SCy Schubert     {                                                                     \
2616b7c0c8c1SCy Schubert       YYFPRINTF (stderr, "%s ", Title);                                   \
2617b7c0c8c1SCy Schubert       yy_symbol_print (stderr,                                            \
2618b7c0c8c1SCy Schubert                   Kind, Value); \
2619b7c0c8c1SCy Schubert       YYFPRINTF (stderr, "\n");                                           \
2620b7c0c8c1SCy Schubert     }                                                                     \
2621b7c0c8c1SCy Schubert } while (0)
2622b7c0c8c1SCy Schubert 
2623b7c0c8c1SCy Schubert 
2624b7c0c8c1SCy Schubert /*-----------------------------------.
2625b7c0c8c1SCy Schubert | Print this symbol's value on YYO.  |
2626b7c0c8c1SCy Schubert `-----------------------------------*/
2627b7c0c8c1SCy Schubert 
2628b7c0c8c1SCy Schubert static void
2629b7c0c8c1SCy Schubert yy_symbol_value_print (FILE *yyo,
2630b7c0c8c1SCy Schubert                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2631b7c0c8c1SCy Schubert {
2632b7c0c8c1SCy Schubert   FILE *yyoutput = yyo;
2633b7c0c8c1SCy Schubert   YY_USE (yyoutput);
2634b7c0c8c1SCy Schubert   if (!yyvaluep)
2635b7c0c8c1SCy Schubert     return;
2636*46d2f618SCy Schubert # ifdef YYPRINT
2637*46d2f618SCy Schubert   if (yykind < YYNTOKENS)
2638*46d2f618SCy Schubert     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
2639*46d2f618SCy Schubert # endif
2640b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2641b7c0c8c1SCy Schubert   YY_USE (yykind);
2642b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_END
2643b7c0c8c1SCy Schubert }
2644b7c0c8c1SCy Schubert 
2645b7c0c8c1SCy Schubert 
2646b7c0c8c1SCy Schubert /*---------------------------.
2647b7c0c8c1SCy Schubert | Print this symbol on YYO.  |
2648b7c0c8c1SCy Schubert `---------------------------*/
2649b7c0c8c1SCy Schubert 
2650b7c0c8c1SCy Schubert static void
2651b7c0c8c1SCy Schubert yy_symbol_print (FILE *yyo,
2652b7c0c8c1SCy Schubert                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2653b7c0c8c1SCy Schubert {
2654b7c0c8c1SCy Schubert   YYFPRINTF (yyo, "%s %s (",
2655b7c0c8c1SCy Schubert              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2656b7c0c8c1SCy Schubert 
2657b7c0c8c1SCy Schubert   yy_symbol_value_print (yyo, yykind, yyvaluep);
2658b7c0c8c1SCy Schubert   YYFPRINTF (yyo, ")");
2659b7c0c8c1SCy Schubert }
2660b7c0c8c1SCy Schubert 
2661b7c0c8c1SCy Schubert /*------------------------------------------------------------------.
2662b7c0c8c1SCy Schubert | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2663b7c0c8c1SCy Schubert | TOP (included).                                                   |
2664b7c0c8c1SCy Schubert `------------------------------------------------------------------*/
2665b7c0c8c1SCy Schubert 
2666b7c0c8c1SCy Schubert static void
2667b7c0c8c1SCy Schubert yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2668b7c0c8c1SCy Schubert {
2669b7c0c8c1SCy Schubert   YYFPRINTF (stderr, "Stack now");
2670b7c0c8c1SCy Schubert   for (; yybottom <= yytop; yybottom++)
2671b7c0c8c1SCy Schubert     {
2672b7c0c8c1SCy Schubert       int yybot = *yybottom;
2673b7c0c8c1SCy Schubert       YYFPRINTF (stderr, " %d", yybot);
2674b7c0c8c1SCy Schubert     }
2675b7c0c8c1SCy Schubert   YYFPRINTF (stderr, "\n");
2676b7c0c8c1SCy Schubert }
2677b7c0c8c1SCy Schubert 
2678b7c0c8c1SCy Schubert # define YY_STACK_PRINT(Bottom, Top)                            \
2679b7c0c8c1SCy Schubert do {                                                            \
2680b7c0c8c1SCy Schubert   if (yydebug)                                                  \
2681b7c0c8c1SCy Schubert     yy_stack_print ((Bottom), (Top));                           \
2682b7c0c8c1SCy Schubert } while (0)
2683b7c0c8c1SCy Schubert 
2684b7c0c8c1SCy Schubert 
2685b7c0c8c1SCy Schubert /*------------------------------------------------.
2686b7c0c8c1SCy Schubert | Report that the YYRULE is going to be reduced.  |
2687b7c0c8c1SCy Schubert `------------------------------------------------*/
2688b7c0c8c1SCy Schubert 
2689b7c0c8c1SCy Schubert static void
2690b7c0c8c1SCy Schubert yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
2691b7c0c8c1SCy Schubert                  int yyrule)
2692b7c0c8c1SCy Schubert {
2693b7c0c8c1SCy Schubert   int yylno = yyrline[yyrule];
2694b7c0c8c1SCy Schubert   int yynrhs = yyr2[yyrule];
2695b7c0c8c1SCy Schubert   int yyi;
2696b7c0c8c1SCy Schubert   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2697b7c0c8c1SCy Schubert              yyrule - 1, yylno);
2698b7c0c8c1SCy Schubert   /* The symbols being reduced.  */
2699b7c0c8c1SCy Schubert   for (yyi = 0; yyi < yynrhs; yyi++)
2700b7c0c8c1SCy Schubert     {
2701b7c0c8c1SCy Schubert       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2702b7c0c8c1SCy Schubert       yy_symbol_print (stderr,
2703b7c0c8c1SCy Schubert                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2704b7c0c8c1SCy Schubert                        &yyvsp[(yyi + 1) - (yynrhs)]);
2705b7c0c8c1SCy Schubert       YYFPRINTF (stderr, "\n");
2706b7c0c8c1SCy Schubert     }
2707b7c0c8c1SCy Schubert }
2708b7c0c8c1SCy Schubert 
2709b7c0c8c1SCy Schubert # define YY_REDUCE_PRINT(Rule)          \
2710b7c0c8c1SCy Schubert do {                                    \
2711b7c0c8c1SCy Schubert   if (yydebug)                          \
2712b7c0c8c1SCy Schubert     yy_reduce_print (yyssp, yyvsp, Rule); \
2713b7c0c8c1SCy Schubert } while (0)
2714b7c0c8c1SCy Schubert 
2715b7c0c8c1SCy Schubert /* Nonzero means print parse trace.  It is left uninitialized so that
2716b7c0c8c1SCy Schubert    multiple parsers can coexist.  */
2717b7c0c8c1SCy Schubert int yydebug;
2718b7c0c8c1SCy Schubert #else /* !YYDEBUG */
2719b7c0c8c1SCy Schubert # define YYDPRINTF(Args) ((void) 0)
2720b7c0c8c1SCy Schubert # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2721b7c0c8c1SCy Schubert # define YY_STACK_PRINT(Bottom, Top)
2722b7c0c8c1SCy Schubert # define YY_REDUCE_PRINT(Rule)
2723b7c0c8c1SCy Schubert #endif /* !YYDEBUG */
2724b7c0c8c1SCy Schubert 
2725b7c0c8c1SCy Schubert 
2726b7c0c8c1SCy Schubert /* YYINITDEPTH -- initial size of the parser's stacks.  */
2727b7c0c8c1SCy Schubert #ifndef YYINITDEPTH
2728b7c0c8c1SCy Schubert # define YYINITDEPTH 200
2729b7c0c8c1SCy Schubert #endif
2730b7c0c8c1SCy Schubert 
2731b7c0c8c1SCy Schubert /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2732b7c0c8c1SCy Schubert    if the built-in stack extension method is used).
2733b7c0c8c1SCy Schubert 
2734b7c0c8c1SCy Schubert    Do not make this value too large; the results are undefined if
2735b7c0c8c1SCy Schubert    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2736b7c0c8c1SCy Schubert    evaluated with infinite-precision integer arithmetic.  */
2737b7c0c8c1SCy Schubert 
2738b7c0c8c1SCy Schubert #ifndef YYMAXDEPTH
2739b7c0c8c1SCy Schubert # define YYMAXDEPTH 10000
2740b7c0c8c1SCy Schubert #endif
2741b7c0c8c1SCy Schubert 
2742b7c0c8c1SCy Schubert 
2743b7c0c8c1SCy Schubert 
2744b7c0c8c1SCy Schubert 
2745b7c0c8c1SCy Schubert 
2746b7c0c8c1SCy Schubert 
2747b7c0c8c1SCy Schubert /*-----------------------------------------------.
2748b7c0c8c1SCy Schubert | Release the memory associated to this symbol.  |
2749b7c0c8c1SCy Schubert `-----------------------------------------------*/
2750b7c0c8c1SCy Schubert 
2751b7c0c8c1SCy Schubert static void
2752b7c0c8c1SCy Schubert yydestruct (const char *yymsg,
2753b7c0c8c1SCy Schubert             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
2754b7c0c8c1SCy Schubert {
2755b7c0c8c1SCy Schubert   YY_USE (yyvaluep);
2756b7c0c8c1SCy Schubert   if (!yymsg)
2757b7c0c8c1SCy Schubert     yymsg = "Deleting";
2758b7c0c8c1SCy Schubert   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2759b7c0c8c1SCy Schubert 
2760b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2761b7c0c8c1SCy Schubert   YY_USE (yykind);
2762b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_END
2763b7c0c8c1SCy Schubert }
2764b7c0c8c1SCy Schubert 
2765b7c0c8c1SCy Schubert 
2766b7c0c8c1SCy Schubert /* Lookahead token kind.  */
2767b7c0c8c1SCy Schubert int yychar;
2768b7c0c8c1SCy Schubert 
2769b7c0c8c1SCy Schubert /* The semantic value of the lookahead symbol.  */
2770b7c0c8c1SCy Schubert YYSTYPE yylval;
2771b7c0c8c1SCy Schubert /* Number of syntax errors so far.  */
2772b7c0c8c1SCy Schubert int yynerrs;
2773b7c0c8c1SCy Schubert 
2774b7c0c8c1SCy Schubert 
2775b7c0c8c1SCy Schubert 
2776b7c0c8c1SCy Schubert 
2777b7c0c8c1SCy Schubert /*----------.
2778b7c0c8c1SCy Schubert | yyparse.  |
2779b7c0c8c1SCy Schubert `----------*/
2780b7c0c8c1SCy Schubert 
2781b7c0c8c1SCy Schubert int
2782b7c0c8c1SCy Schubert yyparse (void)
2783b7c0c8c1SCy Schubert {
2784b7c0c8c1SCy Schubert     yy_state_fast_t yystate = 0;
2785b7c0c8c1SCy Schubert     /* Number of tokens to shift before error messages enabled.  */
2786b7c0c8c1SCy Schubert     int yyerrstatus = 0;
2787b7c0c8c1SCy Schubert 
2788b7c0c8c1SCy Schubert     /* Refer to the stacks through separate pointers, to allow yyoverflow
2789b7c0c8c1SCy Schubert        to reallocate them elsewhere.  */
2790b7c0c8c1SCy Schubert 
2791b7c0c8c1SCy Schubert     /* Their size.  */
2792b7c0c8c1SCy Schubert     YYPTRDIFF_T yystacksize = YYINITDEPTH;
2793b7c0c8c1SCy Schubert 
2794b7c0c8c1SCy Schubert     /* The state stack: array, bottom, top.  */
2795b7c0c8c1SCy Schubert     yy_state_t yyssa[YYINITDEPTH];
2796b7c0c8c1SCy Schubert     yy_state_t *yyss = yyssa;
2797b7c0c8c1SCy Schubert     yy_state_t *yyssp = yyss;
2798b7c0c8c1SCy Schubert 
2799b7c0c8c1SCy Schubert     /* The semantic value stack: array, bottom, top.  */
2800b7c0c8c1SCy Schubert     YYSTYPE yyvsa[YYINITDEPTH];
2801b7c0c8c1SCy Schubert     YYSTYPE *yyvs = yyvsa;
2802b7c0c8c1SCy Schubert     YYSTYPE *yyvsp = yyvs;
2803b7c0c8c1SCy Schubert 
2804b7c0c8c1SCy Schubert   int yyn;
2805b7c0c8c1SCy Schubert   /* The return value of yyparse.  */
2806b7c0c8c1SCy Schubert   int yyresult;
2807b7c0c8c1SCy Schubert   /* Lookahead symbol kind.  */
2808b7c0c8c1SCy Schubert   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2809b7c0c8c1SCy Schubert   /* The variables used to return semantic value and location from the
2810b7c0c8c1SCy Schubert      action routines.  */
2811b7c0c8c1SCy Schubert   YYSTYPE yyval;
2812b7c0c8c1SCy Schubert 
2813b7c0c8c1SCy Schubert 
2814b7c0c8c1SCy Schubert 
2815b7c0c8c1SCy Schubert #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2816b7c0c8c1SCy Schubert 
2817b7c0c8c1SCy Schubert   /* The number of symbols on the RHS of the reduced rule.
2818b7c0c8c1SCy Schubert      Keep to zero when no symbol should be popped.  */
2819b7c0c8c1SCy Schubert   int yylen = 0;
2820b7c0c8c1SCy Schubert 
2821b7c0c8c1SCy Schubert   YYDPRINTF ((stderr, "Starting parse\n"));
2822b7c0c8c1SCy Schubert 
2823b7c0c8c1SCy Schubert   yychar = YYEMPTY; /* Cause a token to be read.  */
2824b7c0c8c1SCy Schubert   goto yysetstate;
2825b7c0c8c1SCy Schubert 
2826b7c0c8c1SCy Schubert 
2827b7c0c8c1SCy Schubert /*------------------------------------------------------------.
2828b7c0c8c1SCy Schubert | yynewstate -- push a new state, which is found in yystate.  |
2829b7c0c8c1SCy Schubert `------------------------------------------------------------*/
2830b7c0c8c1SCy Schubert yynewstate:
2831b7c0c8c1SCy Schubert   /* In all cases, when you get here, the value and location stacks
2832b7c0c8c1SCy Schubert      have just been pushed.  So pushing a state here evens the stacks.  */
2833b7c0c8c1SCy Schubert   yyssp++;
2834b7c0c8c1SCy Schubert 
2835b7c0c8c1SCy Schubert 
2836b7c0c8c1SCy Schubert /*--------------------------------------------------------------------.
2837b7c0c8c1SCy Schubert | yysetstate -- set current state (the top of the stack) to yystate.  |
2838b7c0c8c1SCy Schubert `--------------------------------------------------------------------*/
2839b7c0c8c1SCy Schubert yysetstate:
2840b7c0c8c1SCy Schubert   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2841b7c0c8c1SCy Schubert   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2842b7c0c8c1SCy Schubert   YY_IGNORE_USELESS_CAST_BEGIN
2843b7c0c8c1SCy Schubert   *yyssp = YY_CAST (yy_state_t, yystate);
2844b7c0c8c1SCy Schubert   YY_IGNORE_USELESS_CAST_END
2845b7c0c8c1SCy Schubert   YY_STACK_PRINT (yyss, yyssp);
2846b7c0c8c1SCy Schubert 
2847b7c0c8c1SCy Schubert   if (yyss + yystacksize - 1 <= yyssp)
2848b7c0c8c1SCy Schubert #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2849*46d2f618SCy Schubert     goto yyexhaustedlab;
2850b7c0c8c1SCy Schubert #else
2851b7c0c8c1SCy Schubert     {
2852b7c0c8c1SCy Schubert       /* Get the current used size of the three stacks, in elements.  */
2853b7c0c8c1SCy Schubert       YYPTRDIFF_T yysize = yyssp - yyss + 1;
2854b7c0c8c1SCy Schubert 
2855b7c0c8c1SCy Schubert # if defined yyoverflow
2856b7c0c8c1SCy Schubert       {
2857b7c0c8c1SCy Schubert         /* Give user a chance to reallocate the stack.  Use copies of
2858b7c0c8c1SCy Schubert            these so that the &'s don't force the real ones into
2859b7c0c8c1SCy Schubert            memory.  */
2860b7c0c8c1SCy Schubert         yy_state_t *yyss1 = yyss;
2861b7c0c8c1SCy Schubert         YYSTYPE *yyvs1 = yyvs;
2862b7c0c8c1SCy Schubert 
2863b7c0c8c1SCy Schubert         /* Each stack pointer address is followed by the size of the
2864b7c0c8c1SCy Schubert            data in use in that stack, in bytes.  This used to be a
2865b7c0c8c1SCy Schubert            conditional around just the two extra args, but that might
2866b7c0c8c1SCy Schubert            be undefined if yyoverflow is a macro.  */
2867b7c0c8c1SCy Schubert         yyoverflow (YY_("memory exhausted"),
2868b7c0c8c1SCy Schubert                     &yyss1, yysize * YYSIZEOF (*yyssp),
2869b7c0c8c1SCy Schubert                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
2870b7c0c8c1SCy Schubert                     &yystacksize);
2871b7c0c8c1SCy Schubert         yyss = yyss1;
2872b7c0c8c1SCy Schubert         yyvs = yyvs1;
2873b7c0c8c1SCy Schubert       }
2874b7c0c8c1SCy Schubert # else /* defined YYSTACK_RELOCATE */
2875b7c0c8c1SCy Schubert       /* Extend the stack our own way.  */
2876b7c0c8c1SCy Schubert       if (YYMAXDEPTH <= yystacksize)
2877*46d2f618SCy Schubert         goto yyexhaustedlab;
2878b7c0c8c1SCy Schubert       yystacksize *= 2;
2879b7c0c8c1SCy Schubert       if (YYMAXDEPTH < yystacksize)
2880b7c0c8c1SCy Schubert         yystacksize = YYMAXDEPTH;
2881b7c0c8c1SCy Schubert 
2882b7c0c8c1SCy Schubert       {
2883b7c0c8c1SCy Schubert         yy_state_t *yyss1 = yyss;
2884b7c0c8c1SCy Schubert         union yyalloc *yyptr =
2885b7c0c8c1SCy Schubert           YY_CAST (union yyalloc *,
2886b7c0c8c1SCy Schubert                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2887b7c0c8c1SCy Schubert         if (! yyptr)
2888*46d2f618SCy Schubert           goto yyexhaustedlab;
2889b7c0c8c1SCy Schubert         YYSTACK_RELOCATE (yyss_alloc, yyss);
2890b7c0c8c1SCy Schubert         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2891b7c0c8c1SCy Schubert #  undef YYSTACK_RELOCATE
2892b7c0c8c1SCy Schubert         if (yyss1 != yyssa)
2893b7c0c8c1SCy Schubert           YYSTACK_FREE (yyss1);
2894b7c0c8c1SCy Schubert       }
2895b7c0c8c1SCy Schubert # endif
2896b7c0c8c1SCy Schubert 
2897b7c0c8c1SCy Schubert       yyssp = yyss + yysize - 1;
2898b7c0c8c1SCy Schubert       yyvsp = yyvs + yysize - 1;
2899b7c0c8c1SCy Schubert 
2900b7c0c8c1SCy Schubert       YY_IGNORE_USELESS_CAST_BEGIN
2901b7c0c8c1SCy Schubert       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2902b7c0c8c1SCy Schubert                   YY_CAST (long, yystacksize)));
2903b7c0c8c1SCy Schubert       YY_IGNORE_USELESS_CAST_END
2904b7c0c8c1SCy Schubert 
2905b7c0c8c1SCy Schubert       if (yyss + yystacksize - 1 <= yyssp)
2906b7c0c8c1SCy Schubert         YYABORT;
2907b7c0c8c1SCy Schubert     }
2908b7c0c8c1SCy Schubert #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2909b7c0c8c1SCy Schubert 
2910b7c0c8c1SCy Schubert   if (yystate == YYFINAL)
2911b7c0c8c1SCy Schubert     YYACCEPT;
2912b7c0c8c1SCy Schubert 
2913b7c0c8c1SCy Schubert   goto yybackup;
2914b7c0c8c1SCy Schubert 
2915b7c0c8c1SCy Schubert 
2916b7c0c8c1SCy Schubert /*-----------.
2917b7c0c8c1SCy Schubert | yybackup.  |
2918b7c0c8c1SCy Schubert `-----------*/
2919b7c0c8c1SCy Schubert yybackup:
2920b7c0c8c1SCy Schubert   /* Do appropriate processing given the current state.  Read a
2921b7c0c8c1SCy Schubert      lookahead token if we need one and don't already have one.  */
2922b7c0c8c1SCy Schubert 
2923b7c0c8c1SCy Schubert   /* First try to decide what to do without reference to lookahead token.  */
2924b7c0c8c1SCy Schubert   yyn = yypact[yystate];
2925b7c0c8c1SCy Schubert   if (yypact_value_is_default (yyn))
2926b7c0c8c1SCy Schubert     goto yydefault;
2927b7c0c8c1SCy Schubert 
2928b7c0c8c1SCy Schubert   /* Not known => get a lookahead token if don't already have one.  */
2929b7c0c8c1SCy Schubert 
2930b7c0c8c1SCy Schubert   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
2931b7c0c8c1SCy Schubert   if (yychar == YYEMPTY)
2932b7c0c8c1SCy Schubert     {
2933b7c0c8c1SCy Schubert       YYDPRINTF ((stderr, "Reading a token\n"));
2934b7c0c8c1SCy Schubert       yychar = yylex ();
2935b7c0c8c1SCy Schubert     }
2936b7c0c8c1SCy Schubert 
2937b7c0c8c1SCy Schubert   if (yychar <= YYEOF)
2938b7c0c8c1SCy Schubert     {
2939b7c0c8c1SCy Schubert       yychar = YYEOF;
2940b7c0c8c1SCy Schubert       yytoken = YYSYMBOL_YYEOF;
2941b7c0c8c1SCy Schubert       YYDPRINTF ((stderr, "Now at end of input.\n"));
2942b7c0c8c1SCy Schubert     }
2943b7c0c8c1SCy Schubert   else if (yychar == YYerror)
2944b7c0c8c1SCy Schubert     {
2945b7c0c8c1SCy Schubert       /* The scanner already issued an error message, process directly
2946b7c0c8c1SCy Schubert          to error recovery.  But do not keep the error token as
2947b7c0c8c1SCy Schubert          lookahead, it is too special and may lead us to an endless
2948b7c0c8c1SCy Schubert          loop in error recovery. */
2949b7c0c8c1SCy Schubert       yychar = YYUNDEF;
2950b7c0c8c1SCy Schubert       yytoken = YYSYMBOL_YYerror;
2951b7c0c8c1SCy Schubert       goto yyerrlab1;
2952b7c0c8c1SCy Schubert     }
2953b7c0c8c1SCy Schubert   else
2954b7c0c8c1SCy Schubert     {
2955b7c0c8c1SCy Schubert       yytoken = YYTRANSLATE (yychar);
2956b7c0c8c1SCy Schubert       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2957b7c0c8c1SCy Schubert     }
2958b7c0c8c1SCy Schubert 
2959b7c0c8c1SCy Schubert   /* If the proper action on seeing token YYTOKEN is to reduce or to
2960b7c0c8c1SCy Schubert      detect an error, take that action.  */
2961b7c0c8c1SCy Schubert   yyn += yytoken;
2962b7c0c8c1SCy Schubert   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2963b7c0c8c1SCy Schubert     goto yydefault;
2964b7c0c8c1SCy Schubert   yyn = yytable[yyn];
2965b7c0c8c1SCy Schubert   if (yyn <= 0)
2966b7c0c8c1SCy Schubert     {
2967b7c0c8c1SCy Schubert       if (yytable_value_is_error (yyn))
2968b7c0c8c1SCy Schubert         goto yyerrlab;
2969b7c0c8c1SCy Schubert       yyn = -yyn;
2970b7c0c8c1SCy Schubert       goto yyreduce;
2971b7c0c8c1SCy Schubert     }
2972b7c0c8c1SCy Schubert 
2973b7c0c8c1SCy Schubert   /* Count tokens shifted since error; after three, turn off error
2974b7c0c8c1SCy Schubert      status.  */
2975b7c0c8c1SCy Schubert   if (yyerrstatus)
2976b7c0c8c1SCy Schubert     yyerrstatus--;
2977b7c0c8c1SCy Schubert 
2978b7c0c8c1SCy Schubert   /* Shift the lookahead token.  */
2979b7c0c8c1SCy Schubert   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2980b7c0c8c1SCy Schubert   yystate = yyn;
2981b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2982b7c0c8c1SCy Schubert   *++yyvsp = yylval;
2983b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_END
2984b7c0c8c1SCy Schubert 
2985b7c0c8c1SCy Schubert   /* Discard the shifted token.  */
2986b7c0c8c1SCy Schubert   yychar = YYEMPTY;
2987b7c0c8c1SCy Schubert   goto yynewstate;
2988b7c0c8c1SCy Schubert 
2989b7c0c8c1SCy Schubert 
2990b7c0c8c1SCy Schubert /*-----------------------------------------------------------.
2991b7c0c8c1SCy Schubert | yydefault -- do the default action for the current state.  |
2992b7c0c8c1SCy Schubert `-----------------------------------------------------------*/
2993b7c0c8c1SCy Schubert yydefault:
2994b7c0c8c1SCy Schubert   yyn = yydefact[yystate];
2995b7c0c8c1SCy Schubert   if (yyn == 0)
2996b7c0c8c1SCy Schubert     goto yyerrlab;
2997b7c0c8c1SCy Schubert   goto yyreduce;
2998b7c0c8c1SCy Schubert 
2999b7c0c8c1SCy Schubert 
3000b7c0c8c1SCy Schubert /*-----------------------------.
3001b7c0c8c1SCy Schubert | yyreduce -- do a reduction.  |
3002b7c0c8c1SCy Schubert `-----------------------------*/
3003b7c0c8c1SCy Schubert yyreduce:
3004b7c0c8c1SCy Schubert   /* yyn is the number of a rule to reduce with.  */
3005b7c0c8c1SCy Schubert   yylen = yyr2[yyn];
3006b7c0c8c1SCy Schubert 
3007b7c0c8c1SCy Schubert   /* If YYLEN is nonzero, implement the default value of the action:
3008b7c0c8c1SCy Schubert      '$$ = $1'.
3009b7c0c8c1SCy Schubert 
3010b7c0c8c1SCy Schubert      Otherwise, the following line sets YYVAL to garbage.
3011b7c0c8c1SCy Schubert      This behavior is undocumented and Bison
3012b7c0c8c1SCy Schubert      users should not rely upon it.  Assigning to YYVAL
3013b7c0c8c1SCy Schubert      unconditionally makes the parser a bit smaller, and it avoids a
3014b7c0c8c1SCy Schubert      GCC warning that YYVAL may be used uninitialized.  */
3015b7c0c8c1SCy Schubert   yyval = yyvsp[1-yylen];
3016b7c0c8c1SCy Schubert 
3017b7c0c8c1SCy Schubert 
3018b7c0c8c1SCy Schubert   YY_REDUCE_PRINT (yyn);
3019b7c0c8c1SCy Schubert   switch (yyn)
3020b7c0c8c1SCy Schubert     {
3021b7c0c8c1SCy Schubert   case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
3022*46d2f618SCy Schubert #line 224 "util/configparser.y"
3023b7c0c8c1SCy Schubert         {
3024b7c0c8c1SCy Schubert 		OUTYY(("\nP(force-toplevel)\n"));
3025b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 0;
3026b7c0c8c1SCy Schubert 	}
3027*46d2f618SCy Schubert #line 3028 "util/configparser.c"
3028b7c0c8c1SCy Schubert     break;
3029b7c0c8c1SCy Schubert 
3030b7c0c8c1SCy Schubert   case 19: /* serverstart: VAR_SERVER  */
3031*46d2f618SCy Schubert #line 231 "util/configparser.y"
3032b7c0c8c1SCy Schubert         {
3033b7c0c8c1SCy Schubert 		OUTYY(("\nP(server:)\n"));
3034b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3035b7c0c8c1SCy Schubert 	}
3036*46d2f618SCy Schubert #line 3037 "util/configparser.c"
3037b7c0c8c1SCy Schubert     break;
3038b7c0c8c1SCy Schubert 
3039*46d2f618SCy Schubert   case 279: /* stub_clause: stubstart contents_stub  */
3040*46d2f618SCy Schubert #line 355 "util/configparser.y"
3041*46d2f618SCy Schubert         {
3042*46d2f618SCy Schubert 		/* stub end */
3043*46d2f618SCy Schubert 		if(cfg_parser->cfg->stubs &&
3044*46d2f618SCy Schubert 			!cfg_parser->cfg->stubs->name)
3045*46d2f618SCy Schubert 			yyerror("stub-zone without name");
3046*46d2f618SCy Schubert 	}
3047*46d2f618SCy Schubert #line 3048 "util/configparser.c"
3048*46d2f618SCy Schubert     break;
3049*46d2f618SCy Schubert 
3050*46d2f618SCy Schubert   case 280: /* stubstart: VAR_STUB_ZONE  */
3051*46d2f618SCy Schubert #line 363 "util/configparser.y"
3052b7c0c8c1SCy Schubert         {
3053b7c0c8c1SCy Schubert 		struct config_stub* s;
3054b7c0c8c1SCy Schubert 		OUTYY(("\nP(stub_zone:)\n"));
3055b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3056b7c0c8c1SCy Schubert 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3057b7c0c8c1SCy Schubert 		if(s) {
3058b7c0c8c1SCy Schubert 			s->next = cfg_parser->cfg->stubs;
3059b7c0c8c1SCy Schubert 			cfg_parser->cfg->stubs = s;
3060b7c0c8c1SCy Schubert 		} else {
3061b7c0c8c1SCy Schubert 			yyerror("out of memory");
3062b7c0c8c1SCy Schubert 		}
3063b7c0c8c1SCy Schubert 	}
3064*46d2f618SCy Schubert #line 3065 "util/configparser.c"
3065b7c0c8c1SCy Schubert     break;
3066b7c0c8c1SCy Schubert 
3067*46d2f618SCy Schubert   case 291: /* forward_clause: forwardstart contents_forward  */
3068*46d2f618SCy Schubert #line 382 "util/configparser.y"
306956850988SCy Schubert         {
3070*46d2f618SCy Schubert 		/* forward end */
3071*46d2f618SCy Schubert 		if(cfg_parser->cfg->forwards &&
3072*46d2f618SCy Schubert 			!cfg_parser->cfg->forwards->name)
3073*46d2f618SCy Schubert 			yyerror("forward-zone without name");
307456850988SCy Schubert 	}
3075*46d2f618SCy Schubert #line 3076 "util/configparser.c"
307656850988SCy Schubert     break;
307756850988SCy Schubert 
3078*46d2f618SCy Schubert   case 292: /* forwardstart: VAR_FORWARD_ZONE  */
3079*46d2f618SCy Schubert #line 390 "util/configparser.y"
3080b7c0c8c1SCy Schubert         {
3081b7c0c8c1SCy Schubert 		struct config_stub* s;
3082b7c0c8c1SCy Schubert 		OUTYY(("\nP(forward_zone:)\n"));
3083b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3084b7c0c8c1SCy Schubert 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3085b7c0c8c1SCy Schubert 		if(s) {
3086b7c0c8c1SCy Schubert 			s->next = cfg_parser->cfg->forwards;
3087b7c0c8c1SCy Schubert 			cfg_parser->cfg->forwards = s;
3088b7c0c8c1SCy Schubert 		} else {
3089b7c0c8c1SCy Schubert 			yyerror("out of memory");
3090b7c0c8c1SCy Schubert 		}
3091b7c0c8c1SCy Schubert 	}
3092*46d2f618SCy Schubert #line 3093 "util/configparser.c"
3093b7c0c8c1SCy Schubert     break;
3094b7c0c8c1SCy Schubert 
3095*46d2f618SCy Schubert   case 302: /* view_clause: viewstart contents_view  */
3096*46d2f618SCy Schubert #line 409 "util/configparser.y"
309756850988SCy Schubert         {
3098*46d2f618SCy Schubert 		/* view end */
3099*46d2f618SCy Schubert 		if(cfg_parser->cfg->views &&
3100*46d2f618SCy Schubert 			!cfg_parser->cfg->views->name)
3101*46d2f618SCy Schubert 			yyerror("view without name");
310256850988SCy Schubert 	}
3103*46d2f618SCy Schubert #line 3104 "util/configparser.c"
310456850988SCy Schubert     break;
310556850988SCy Schubert 
3106*46d2f618SCy Schubert   case 303: /* viewstart: VAR_VIEW  */
3107*46d2f618SCy Schubert #line 417 "util/configparser.y"
3108b7c0c8c1SCy Schubert         {
3109b7c0c8c1SCy Schubert 		struct config_view* s;
3110b7c0c8c1SCy Schubert 		OUTYY(("\nP(view:)\n"));
3111b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3112b7c0c8c1SCy Schubert 		s = (struct config_view*)calloc(1, sizeof(struct config_view));
3113b7c0c8c1SCy Schubert 		if(s) {
3114b7c0c8c1SCy Schubert 			s->next = cfg_parser->cfg->views;
3115b7c0c8c1SCy Schubert 			cfg_parser->cfg->views = s;
3116b7c0c8c1SCy Schubert 		} else {
3117b7c0c8c1SCy Schubert 			yyerror("out of memory");
3118b7c0c8c1SCy Schubert 		}
3119b7c0c8c1SCy Schubert 	}
3120*46d2f618SCy Schubert #line 3121 "util/configparser.c"
3121b7c0c8c1SCy Schubert     break;
3122b7c0c8c1SCy Schubert 
3123*46d2f618SCy Schubert   case 313: /* authstart: VAR_AUTH_ZONE  */
3124*46d2f618SCy Schubert #line 436 "util/configparser.y"
3125b7c0c8c1SCy Schubert         {
3126b7c0c8c1SCy Schubert 		struct config_auth* s;
3127b7c0c8c1SCy Schubert 		OUTYY(("\nP(auth_zone:)\n"));
3128b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3129b7c0c8c1SCy Schubert 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3130b7c0c8c1SCy Schubert 		if(s) {
3131b7c0c8c1SCy Schubert 			s->next = cfg_parser->cfg->auths;
3132b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths = s;
3133b7c0c8c1SCy Schubert 			/* defaults for auth zone */
3134b7c0c8c1SCy Schubert 			s->for_downstream = 1;
3135b7c0c8c1SCy Schubert 			s->for_upstream = 1;
3136b7c0c8c1SCy Schubert 			s->fallback_enabled = 0;
3137b7c0c8c1SCy Schubert 			s->zonemd_check = 0;
3138b7c0c8c1SCy Schubert 			s->zonemd_reject_absence = 0;
3139b7c0c8c1SCy Schubert 			s->isrpz = 0;
3140b7c0c8c1SCy Schubert 		} else {
3141b7c0c8c1SCy Schubert 			yyerror("out of memory");
3142b7c0c8c1SCy Schubert 		}
3143b7c0c8c1SCy Schubert 	}
3144*46d2f618SCy Schubert #line 3145 "util/configparser.c"
3145b7c0c8c1SCy Schubert     break;
3146b7c0c8c1SCy Schubert 
3147*46d2f618SCy Schubert   case 326: /* rpz_tag: VAR_TAGS STRING_ARG  */
3148*46d2f618SCy Schubert #line 464 "util/configparser.y"
3149b7c0c8c1SCy Schubert         {
3150b7c0c8c1SCy Schubert 		uint8_t* bitlist;
3151b7c0c8c1SCy Schubert 		size_t len = 0;
3152b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3153b7c0c8c1SCy Schubert 		bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3154b7c0c8c1SCy Schubert 			&len);
3155b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3156b7c0c8c1SCy Schubert 		if(!bitlist) {
3157b7c0c8c1SCy Schubert 			yyerror("could not parse tags, (define-tag them first)");
3158b7c0c8c1SCy Schubert 		}
3159b7c0c8c1SCy Schubert 		if(bitlist) {
3160b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths->rpz_taglist = bitlist;
3161b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths->rpz_taglistlen = len;
3162b7c0c8c1SCy Schubert 
3163b7c0c8c1SCy Schubert 		}
3164b7c0c8c1SCy Schubert 	}
3165*46d2f618SCy Schubert #line 3166 "util/configparser.c"
3166b7c0c8c1SCy Schubert     break;
3167b7c0c8c1SCy Schubert 
3168*46d2f618SCy Schubert   case 327: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
3169*46d2f618SCy Schubert #line 483 "util/configparser.y"
3170b7c0c8c1SCy Schubert         {
3171b7c0c8c1SCy Schubert 		OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3172b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3173b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3174b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3175b7c0c8c1SCy Schubert 			yyerror("rpz-action-override action: expected nxdomain, "
3176b7c0c8c1SCy Schubert 				"nodata, passthru, drop, cname or disabled");
3177b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
3178b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths->rpz_action_override = NULL;
3179b7c0c8c1SCy Schubert 		}
3180b7c0c8c1SCy Schubert 		else {
3181b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3182b7c0c8c1SCy Schubert 		}
3183b7c0c8c1SCy Schubert 	}
3184*46d2f618SCy Schubert #line 3185 "util/configparser.c"
3185b7c0c8c1SCy Schubert     break;
3186b7c0c8c1SCy Schubert 
3187*46d2f618SCy Schubert   case 328: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
3188*46d2f618SCy Schubert #line 500 "util/configparser.y"
3189b7c0c8c1SCy Schubert         {
3190b7c0c8c1SCy Schubert 		OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3191b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->auths->rpz_cname);
3192b7c0c8c1SCy Schubert 		cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3193b7c0c8c1SCy Schubert 	}
3194*46d2f618SCy Schubert #line 3195 "util/configparser.c"
3195b7c0c8c1SCy Schubert     break;
3196b7c0c8c1SCy Schubert 
3197*46d2f618SCy Schubert   case 329: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
3198*46d2f618SCy Schubert #line 508 "util/configparser.y"
3199b7c0c8c1SCy Schubert         {
3200b7c0c8c1SCy Schubert 		OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3201b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3202b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3203b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3204b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3205b7c0c8c1SCy Schubert 	}
3206*46d2f618SCy Schubert #line 3207 "util/configparser.c"
3207b7c0c8c1SCy Schubert     break;
3208b7c0c8c1SCy Schubert 
3209*46d2f618SCy Schubert   case 330: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
3210*46d2f618SCy Schubert #line 518 "util/configparser.y"
3211b7c0c8c1SCy Schubert         {
3212b7c0c8c1SCy Schubert 		OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3213b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->auths->rpz_log_name);
3214b7c0c8c1SCy Schubert 		cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3215b7c0c8c1SCy Schubert 	}
3216*46d2f618SCy Schubert #line 3217 "util/configparser.c"
3217b7c0c8c1SCy Schubert     break;
3218b7c0c8c1SCy Schubert 
3219*46d2f618SCy Schubert   case 331: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG  */
3220*46d2f618SCy Schubert #line 525 "util/configparser.y"
3221b7c0c8c1SCy Schubert         {
3222b7c0c8c1SCy Schubert 		OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3223b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3224b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3225b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3226b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3227b7c0c8c1SCy Schubert 	}
3228*46d2f618SCy Schubert #line 3229 "util/configparser.c"
3229b7c0c8c1SCy Schubert     break;
3230b7c0c8c1SCy Schubert 
3231*46d2f618SCy Schubert   case 332: /* rpzstart: VAR_RPZ  */
3232*46d2f618SCy Schubert #line 535 "util/configparser.y"
3233b7c0c8c1SCy Schubert         {
3234b7c0c8c1SCy Schubert 		struct config_auth* s;
3235b7c0c8c1SCy Schubert 		OUTYY(("\nP(rpz:)\n"));
3236b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
3237b7c0c8c1SCy Schubert 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3238b7c0c8c1SCy Schubert 		if(s) {
3239b7c0c8c1SCy Schubert 			s->next = cfg_parser->cfg->auths;
3240b7c0c8c1SCy Schubert 			cfg_parser->cfg->auths = s;
3241b7c0c8c1SCy Schubert 			/* defaults for RPZ auth zone */
3242b7c0c8c1SCy Schubert 			s->for_downstream = 0;
3243b7c0c8c1SCy Schubert 			s->for_upstream = 0;
3244b7c0c8c1SCy Schubert 			s->fallback_enabled = 0;
3245b7c0c8c1SCy Schubert 			s->isrpz = 1;
3246b7c0c8c1SCy Schubert 		} else {
3247b7c0c8c1SCy Schubert 			yyerror("out of memory");
3248b7c0c8c1SCy Schubert 		}
3249b7c0c8c1SCy Schubert 	}
3250*46d2f618SCy Schubert #line 3251 "util/configparser.c"
3251b7c0c8c1SCy Schubert     break;
3252b7c0c8c1SCy Schubert 
3253*46d2f618SCy Schubert   case 347: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
3254*46d2f618SCy Schubert #line 560 "util/configparser.y"
3255b7c0c8c1SCy Schubert         {
3256b7c0c8c1SCy Schubert 		OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3257b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3258b7c0c8c1SCy Schubert 			yyerror("number expected");
3259b7c0c8c1SCy Schubert 		else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3260b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3261b7c0c8c1SCy Schubert 	}
3262*46d2f618SCy Schubert #line 3263 "util/configparser.c"
3263b7c0c8c1SCy Schubert     break;
3264b7c0c8c1SCy Schubert 
3265*46d2f618SCy Schubert   case 348: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
3266*46d2f618SCy Schubert #line 569 "util/configparser.y"
3267b7c0c8c1SCy Schubert         {
3268b7c0c8c1SCy Schubert 		OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3269b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3270b7c0c8c1SCy Schubert 			yyerror("number expected");
3271b7c0c8c1SCy Schubert 		else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3272b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3273b7c0c8c1SCy Schubert 	}
3274*46d2f618SCy Schubert #line 3275 "util/configparser.c"
3275b7c0c8c1SCy Schubert     break;
3276b7c0c8c1SCy Schubert 
3277*46d2f618SCy Schubert   case 349: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
3278*46d2f618SCy Schubert #line 578 "util/configparser.y"
3279b7c0c8c1SCy Schubert         {
3280b7c0c8c1SCy Schubert 		OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3281b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3282b7c0c8c1SCy Schubert 			cfg_parser->cfg->stat_interval = 0;
3283b7c0c8c1SCy Schubert 		else if(atoi((yyvsp[0].str)) == 0)
3284b7c0c8c1SCy Schubert 			yyerror("number expected");
3285b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3286b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3287b7c0c8c1SCy Schubert 	}
3288*46d2f618SCy Schubert #line 3289 "util/configparser.c"
3289b7c0c8c1SCy Schubert     break;
3290b7c0c8c1SCy Schubert 
3291*46d2f618SCy Schubert   case 350: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
3292*46d2f618SCy Schubert #line 589 "util/configparser.y"
3293b7c0c8c1SCy Schubert         {
3294b7c0c8c1SCy Schubert 		OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3295b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3296b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3297b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3298b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3299b7c0c8c1SCy Schubert 	}
3300*46d2f618SCy Schubert #line 3301 "util/configparser.c"
3301b7c0c8c1SCy Schubert     break;
3302b7c0c8c1SCy Schubert 
3303*46d2f618SCy Schubert   case 351: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
3304*46d2f618SCy Schubert #line 598 "util/configparser.y"
3305b7c0c8c1SCy Schubert         {
3306b7c0c8c1SCy Schubert 		OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3307b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3308b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3309b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3310b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3311b7c0c8c1SCy Schubert 	}
3312*46d2f618SCy Schubert #line 3313 "util/configparser.c"
3313b7c0c8c1SCy Schubert     break;
3314b7c0c8c1SCy Schubert 
3315*46d2f618SCy Schubert   case 352: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG  */
3316*46d2f618SCy Schubert #line 607 "util/configparser.y"
3317b7c0c8c1SCy Schubert         {
3318b7c0c8c1SCy Schubert 		OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3319b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3320b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3321b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3322b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3323b7c0c8c1SCy Schubert 	}
3324*46d2f618SCy Schubert #line 3325 "util/configparser.c"
3325b7c0c8c1SCy Schubert     break;
3326b7c0c8c1SCy Schubert 
3327*46d2f618SCy Schubert   case 353: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
3328*46d2f618SCy Schubert #line 616 "util/configparser.y"
3329b7c0c8c1SCy Schubert         {
3330b7c0c8c1SCy Schubert 		OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3331b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3332b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3333b7c0c8c1SCy Schubert 		else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3334b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3335b7c0c8c1SCy Schubert 	}
3336*46d2f618SCy Schubert #line 3337 "util/configparser.c"
3337b7c0c8c1SCy Schubert     break;
3338b7c0c8c1SCy Schubert 
3339*46d2f618SCy Schubert   case 354: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
3340*46d2f618SCy Schubert #line 625 "util/configparser.y"
3341b7c0c8c1SCy Schubert         {
3342b7c0c8c1SCy Schubert 		OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3343b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3344b7c0c8c1SCy Schubert 			cfg_parser->cfg->shm_key = 0;
3345b7c0c8c1SCy Schubert 		else if(atoi((yyvsp[0].str)) == 0)
3346b7c0c8c1SCy Schubert 			yyerror("number expected");
3347b7c0c8c1SCy Schubert 		else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3348b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3349b7c0c8c1SCy Schubert 	}
3350*46d2f618SCy Schubert #line 3351 "util/configparser.c"
3351b7c0c8c1SCy Schubert     break;
3352b7c0c8c1SCy Schubert 
3353*46d2f618SCy Schubert   case 355: /* server_port: VAR_PORT STRING_ARG  */
3354*46d2f618SCy Schubert #line 636 "util/configparser.y"
3355b7c0c8c1SCy Schubert         {
3356b7c0c8c1SCy Schubert 		OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3357b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
3358b7c0c8c1SCy Schubert 			yyerror("port number expected");
3359b7c0c8c1SCy Schubert 		else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3360b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3361b7c0c8c1SCy Schubert 	}
3362*46d2f618SCy Schubert #line 3363 "util/configparser.c"
3363b7c0c8c1SCy Schubert     break;
3364b7c0c8c1SCy Schubert 
3365*46d2f618SCy Schubert   case 356: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
3366*46d2f618SCy Schubert #line 645 "util/configparser.y"
3367b7c0c8c1SCy Schubert         {
3368b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3369b7c0c8c1SCy Schubert 		OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3370b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3371b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding client-subnet");
3372b7c0c8c1SCy Schubert 	#else
3373b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3374b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3375b7c0c8c1SCy Schubert 	#endif
3376b7c0c8c1SCy Schubert 	}
3377*46d2f618SCy Schubert #line 3378 "util/configparser.c"
3378b7c0c8c1SCy Schubert     break;
3379b7c0c8c1SCy Schubert 
3380*46d2f618SCy Schubert   case 357: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
3381*46d2f618SCy Schubert #line 657 "util/configparser.y"
3382b7c0c8c1SCy Schubert         {
3383b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3384b7c0c8c1SCy Schubert 		OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3385b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3386b7c0c8c1SCy Schubert 			(yyvsp[0].str)))
3387b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding client-subnet-zone");
3388b7c0c8c1SCy Schubert 	#else
3389b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3390b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3391b7c0c8c1SCy Schubert 	#endif
3392b7c0c8c1SCy Schubert 	}
3393*46d2f618SCy Schubert #line 3394 "util/configparser.c"
3394b7c0c8c1SCy Schubert     break;
3395b7c0c8c1SCy Schubert 
3396*46d2f618SCy Schubert   case 358: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
3397*46d2f618SCy Schubert #line 671 "util/configparser.y"
3398b7c0c8c1SCy Schubert         {
3399b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3400b7c0c8c1SCy Schubert 		OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3401b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3402b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3403b7c0c8c1SCy Schubert 		else
3404b7c0c8c1SCy Schubert 			cfg_parser->cfg->client_subnet_always_forward =
3405b7c0c8c1SCy Schubert 				(strcmp((yyvsp[0].str), "yes")==0);
3406b7c0c8c1SCy Schubert 	#else
3407b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3408b7c0c8c1SCy Schubert 	#endif
3409b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3410b7c0c8c1SCy Schubert 	}
3411*46d2f618SCy Schubert #line 3412 "util/configparser.c"
3412b7c0c8c1SCy Schubert     break;
3413b7c0c8c1SCy Schubert 
3414*46d2f618SCy Schubert   case 359: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
3415*46d2f618SCy Schubert #line 686 "util/configparser.y"
3416b7c0c8c1SCy Schubert         {
3417b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3418b7c0c8c1SCy Schubert 		OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3419b7c0c8c1SCy Schubert 		OUTYY(("P(Deprecated option, ignoring)\n"));
3420b7c0c8c1SCy Schubert 	#else
3421b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3422b7c0c8c1SCy Schubert 	#endif
3423b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3424b7c0c8c1SCy Schubert 	}
3425*46d2f618SCy Schubert #line 3426 "util/configparser.c"
3426b7c0c8c1SCy Schubert     break;
3427b7c0c8c1SCy Schubert 
3428*46d2f618SCy Schubert   case 360: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
3429*46d2f618SCy Schubert #line 697 "util/configparser.y"
3430b7c0c8c1SCy Schubert         {
3431b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3432b7c0c8c1SCy Schubert 		OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3433b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3434b7c0c8c1SCy Schubert 			yyerror("IPv4 subnet length expected");
3435b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 32)
3436b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3437b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3438b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3439b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3440b7c0c8c1SCy Schubert 	#else
3441b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3442b7c0c8c1SCy Schubert 	#endif
3443b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3444b7c0c8c1SCy Schubert 	}
3445*46d2f618SCy Schubert #line 3446 "util/configparser.c"
3446b7c0c8c1SCy Schubert     break;
3447b7c0c8c1SCy Schubert 
3448*46d2f618SCy Schubert   case 361: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
3449*46d2f618SCy Schubert #line 714 "util/configparser.y"
3450b7c0c8c1SCy Schubert         {
3451b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3452b7c0c8c1SCy Schubert 		OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3453b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3454b7c0c8c1SCy Schubert 			yyerror("Ipv6 subnet length expected");
3455b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 128)
3456b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3457b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3458b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3459b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3460b7c0c8c1SCy Schubert 	#else
3461b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3462b7c0c8c1SCy Schubert 	#endif
3463b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3464b7c0c8c1SCy Schubert 	}
3465*46d2f618SCy Schubert #line 3466 "util/configparser.c"
3466b7c0c8c1SCy Schubert     break;
3467b7c0c8c1SCy Schubert 
3468*46d2f618SCy Schubert   case 362: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
3469*46d2f618SCy Schubert #line 731 "util/configparser.y"
3470b7c0c8c1SCy Schubert         {
3471b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3472b7c0c8c1SCy Schubert 		OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3473b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3474b7c0c8c1SCy Schubert 			yyerror("IPv4 subnet length expected");
3475b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 32)
3476b7c0c8c1SCy Schubert 			cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3477b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3478b7c0c8c1SCy Schubert 			cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3479b7c0c8c1SCy Schubert 		else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3480b7c0c8c1SCy Schubert 	#else
3481b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3482b7c0c8c1SCy Schubert 	#endif
3483b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3484b7c0c8c1SCy Schubert 	}
3485*46d2f618SCy Schubert #line 3486 "util/configparser.c"
3486b7c0c8c1SCy Schubert     break;
3487b7c0c8c1SCy Schubert 
3488*46d2f618SCy Schubert   case 363: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
3489*46d2f618SCy Schubert #line 748 "util/configparser.y"
3490b7c0c8c1SCy Schubert         {
3491b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3492b7c0c8c1SCy Schubert 		OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3493b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3494b7c0c8c1SCy Schubert 			yyerror("Ipv6 subnet length expected");
3495b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 128)
3496b7c0c8c1SCy Schubert 			cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3497b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3498b7c0c8c1SCy Schubert 			cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3499b7c0c8c1SCy Schubert 		else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3500b7c0c8c1SCy Schubert 	#else
3501b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3502b7c0c8c1SCy Schubert 	#endif
3503b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3504b7c0c8c1SCy Schubert 	}
3505*46d2f618SCy Schubert #line 3506 "util/configparser.c"
3506b7c0c8c1SCy Schubert     break;
3507b7c0c8c1SCy Schubert 
3508*46d2f618SCy Schubert   case 364: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
3509*46d2f618SCy Schubert #line 765 "util/configparser.y"
3510b7c0c8c1SCy Schubert         {
3511b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3512b7c0c8c1SCy Schubert 		OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3513b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3514b7c0c8c1SCy Schubert 			yyerror("IPv4 ECS tree size expected");
3515b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3516b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3517b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3518b7c0c8c1SCy Schubert 	#else
3519b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3520b7c0c8c1SCy Schubert 	#endif
3521b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3522b7c0c8c1SCy Schubert 	}
3523*46d2f618SCy Schubert #line 3524 "util/configparser.c"
3524b7c0c8c1SCy Schubert     break;
3525b7c0c8c1SCy Schubert 
3526*46d2f618SCy Schubert   case 365: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
3527*46d2f618SCy Schubert #line 780 "util/configparser.y"
3528b7c0c8c1SCy Schubert         {
3529b7c0c8c1SCy Schubert 	#ifdef CLIENT_SUBNET
3530b7c0c8c1SCy Schubert 		OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3531b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3532b7c0c8c1SCy Schubert 			yyerror("IPv6 ECS tree size expected");
3533b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
3534b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3535b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3536b7c0c8c1SCy Schubert 	#else
3537b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3538b7c0c8c1SCy Schubert 	#endif
3539b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3540b7c0c8c1SCy Schubert 	}
3541*46d2f618SCy Schubert #line 3542 "util/configparser.c"
3542b7c0c8c1SCy Schubert     break;
3543b7c0c8c1SCy Schubert 
3544*46d2f618SCy Schubert   case 366: /* server_interface: VAR_INTERFACE STRING_ARG  */
3545*46d2f618SCy Schubert #line 795 "util/configparser.y"
3546b7c0c8c1SCy Schubert         {
3547b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3548b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->num_ifs == 0)
3549b7c0c8c1SCy Schubert 			cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3550b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3551b7c0c8c1SCy Schubert 				(cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3552b7c0c8c1SCy Schubert 		if(!cfg_parser->cfg->ifs)
3553b7c0c8c1SCy Schubert 			yyerror("out of memory");
3554b7c0c8c1SCy Schubert 		else
3555b7c0c8c1SCy Schubert 			cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3556b7c0c8c1SCy Schubert 	}
3557*46d2f618SCy Schubert #line 3558 "util/configparser.c"
3558b7c0c8c1SCy Schubert     break;
3559b7c0c8c1SCy Schubert 
3560*46d2f618SCy Schubert   case 367: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
3561*46d2f618SCy Schubert #line 808 "util/configparser.y"
3562b7c0c8c1SCy Schubert         {
3563b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3564b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->num_out_ifs == 0)
3565b7c0c8c1SCy Schubert 			cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3566b7c0c8c1SCy Schubert 		else cfg_parser->cfg->out_ifs = realloc(
3567b7c0c8c1SCy Schubert 			cfg_parser->cfg->out_ifs,
3568b7c0c8c1SCy Schubert 			(cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3569b7c0c8c1SCy Schubert 		if(!cfg_parser->cfg->out_ifs)
3570b7c0c8c1SCy Schubert 			yyerror("out of memory");
3571b7c0c8c1SCy Schubert 		else
3572b7c0c8c1SCy Schubert 			cfg_parser->cfg->out_ifs[
3573b7c0c8c1SCy Schubert 				cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3574b7c0c8c1SCy Schubert 	}
3575*46d2f618SCy Schubert #line 3576 "util/configparser.c"
3576b7c0c8c1SCy Schubert     break;
3577b7c0c8c1SCy Schubert 
3578*46d2f618SCy Schubert   case 368: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
3579*46d2f618SCy Schubert #line 823 "util/configparser.y"
3580b7c0c8c1SCy Schubert         {
3581b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3582b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
3583b7c0c8c1SCy Schubert 			yyerror("number expected");
3584b7c0c8c1SCy Schubert 		else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3585b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3586b7c0c8c1SCy Schubert 	}
3587*46d2f618SCy Schubert #line 3588 "util/configparser.c"
3588b7c0c8c1SCy Schubert     break;
3589b7c0c8c1SCy Schubert 
3590*46d2f618SCy Schubert   case 369: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
3591*46d2f618SCy Schubert #line 832 "util/configparser.y"
3592b7c0c8c1SCy Schubert         {
3593b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3594b7c0c8c1SCy Schubert 		if(!cfg_mark_ports((yyvsp[0].str), 1,
3595b7c0c8c1SCy Schubert 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3596b7c0c8c1SCy Schubert 			yyerror("port number or range (\"low-high\") expected");
3597b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3598b7c0c8c1SCy Schubert 	}
3599*46d2f618SCy Schubert #line 3600 "util/configparser.c"
3600b7c0c8c1SCy Schubert     break;
3601b7c0c8c1SCy Schubert 
3602*46d2f618SCy Schubert   case 370: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
3603*46d2f618SCy Schubert #line 841 "util/configparser.y"
3604b7c0c8c1SCy Schubert         {
3605b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3606b7c0c8c1SCy Schubert 		if(!cfg_mark_ports((yyvsp[0].str), 0,
3607b7c0c8c1SCy Schubert 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3608b7c0c8c1SCy Schubert 			yyerror("port number or range (\"low-high\") expected");
3609b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3610b7c0c8c1SCy Schubert 	}
3611*46d2f618SCy Schubert #line 3612 "util/configparser.c"
3612b7c0c8c1SCy Schubert     break;
3613b7c0c8c1SCy Schubert 
3614*46d2f618SCy Schubert   case 371: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
3615*46d2f618SCy Schubert #line 850 "util/configparser.y"
3616b7c0c8c1SCy Schubert         {
3617b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3618b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3619b7c0c8c1SCy Schubert 			yyerror("number expected");
3620b7c0c8c1SCy Schubert 		else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3621b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3622b7c0c8c1SCy Schubert 	}
3623*46d2f618SCy Schubert #line 3624 "util/configparser.c"
3624b7c0c8c1SCy Schubert     break;
3625b7c0c8c1SCy Schubert 
3626*46d2f618SCy Schubert   case 372: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
3627*46d2f618SCy Schubert #line 859 "util/configparser.y"
3628b7c0c8c1SCy Schubert         {
3629b7c0c8c1SCy Schubert 		OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3630b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3631b7c0c8c1SCy Schubert 			yyerror("number expected");
3632b7c0c8c1SCy Schubert 		else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3633b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3634b7c0c8c1SCy Schubert 	}
3635*46d2f618SCy Schubert #line 3636 "util/configparser.c"
3636b7c0c8c1SCy Schubert     break;
3637b7c0c8c1SCy Schubert 
3638*46d2f618SCy Schubert   case 373: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
3639*46d2f618SCy Schubert #line 868 "util/configparser.y"
3640b7c0c8c1SCy Schubert         {
3641b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3642b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3643b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3644b7c0c8c1SCy Schubert 		else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3645b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3646b7c0c8c1SCy Schubert 	}
3647*46d2f618SCy Schubert #line 3648 "util/configparser.c"
3648b7c0c8c1SCy Schubert     break;
3649b7c0c8c1SCy Schubert 
3650*46d2f618SCy Schubert   case 374: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG  */
3651*46d2f618SCy Schubert #line 877 "util/configparser.y"
3652b7c0c8c1SCy Schubert         {
3653b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3654b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->if_automatic_ports);
3655b7c0c8c1SCy Schubert 		cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3656b7c0c8c1SCy Schubert 	}
3657*46d2f618SCy Schubert #line 3658 "util/configparser.c"
3658b7c0c8c1SCy Schubert     break;
3659b7c0c8c1SCy Schubert 
3660*46d2f618SCy Schubert   case 375: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
3661*46d2f618SCy Schubert #line 884 "util/configparser.y"
3662b7c0c8c1SCy Schubert         {
3663b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3664b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3665b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3666b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3667b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3668b7c0c8c1SCy Schubert 	}
3669*46d2f618SCy Schubert #line 3670 "util/configparser.c"
3670b7c0c8c1SCy Schubert     break;
3671b7c0c8c1SCy Schubert 
3672*46d2f618SCy Schubert   case 376: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
3673*46d2f618SCy Schubert #line 893 "util/configparser.y"
3674b7c0c8c1SCy Schubert         {
3675b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3676b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3677b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3678b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3679b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3680b7c0c8c1SCy Schubert 	}
3681*46d2f618SCy Schubert #line 3682 "util/configparser.c"
3682b7c0c8c1SCy Schubert     break;
3683b7c0c8c1SCy Schubert 
3684*46d2f618SCy Schubert   case 377: /* server_do_nat64: VAR_DO_NAT64 STRING_ARG  */
3685*46d2f618SCy Schubert #line 902 "util/configparser.y"
3686b7c0c8c1SCy Schubert         {
3687b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3688b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3689b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3690b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3691b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3692b7c0c8c1SCy Schubert 	}
3693*46d2f618SCy Schubert #line 3694 "util/configparser.c"
3694b7c0c8c1SCy Schubert     break;
3695b7c0c8c1SCy Schubert 
3696*46d2f618SCy Schubert   case 378: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
3697*46d2f618SCy Schubert #line 911 "util/configparser.y"
3698b7c0c8c1SCy Schubert         {
3699b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3700b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3701b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3702b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3703b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3704b7c0c8c1SCy Schubert 	}
3705*46d2f618SCy Schubert #line 3706 "util/configparser.c"
3706b7c0c8c1SCy Schubert     break;
3707b7c0c8c1SCy Schubert 
3708*46d2f618SCy Schubert   case 379: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
3709*46d2f618SCy Schubert #line 920 "util/configparser.y"
3710b7c0c8c1SCy Schubert         {
3711b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3712b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3713b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3714b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3715b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3716b7c0c8c1SCy Schubert 	}
3717*46d2f618SCy Schubert #line 3718 "util/configparser.c"
3718b7c0c8c1SCy Schubert     break;
3719b7c0c8c1SCy Schubert 
3720*46d2f618SCy Schubert   case 380: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
3721*46d2f618SCy Schubert #line 929 "util/configparser.y"
3722b7c0c8c1SCy Schubert         {
3723b7c0c8c1SCy Schubert 		OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3724b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3725b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3726b7c0c8c1SCy Schubert 		else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3727b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3728b7c0c8c1SCy Schubert 	}
3729*46d2f618SCy Schubert #line 3730 "util/configparser.c"
3730b7c0c8c1SCy Schubert     break;
3731b7c0c8c1SCy Schubert 
3732*46d2f618SCy Schubert   case 381: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
3733*46d2f618SCy Schubert #line 938 "util/configparser.y"
3734b7c0c8c1SCy Schubert         {
3735b7c0c8c1SCy Schubert 		OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3736b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3737b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3738b7c0c8c1SCy Schubert 		else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3739b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3740b7c0c8c1SCy Schubert 	}
3741*46d2f618SCy Schubert #line 3742 "util/configparser.c"
3742b7c0c8c1SCy Schubert     break;
3743b7c0c8c1SCy Schubert 
3744*46d2f618SCy Schubert   case 382: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
3745*46d2f618SCy Schubert #line 947 "util/configparser.y"
3746b7c0c8c1SCy Schubert         {
3747b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3748b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3749b7c0c8c1SCy Schubert 				yyerror("number expected");
3750b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3751b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3752b7c0c8c1SCy Schubert 	}
3753*46d2f618SCy Schubert #line 3754 "util/configparser.c"
3754b7c0c8c1SCy Schubert     break;
3755b7c0c8c1SCy Schubert 
3756*46d2f618SCy Schubert   case 383: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
3757*46d2f618SCy Schubert #line 956 "util/configparser.y"
3758b7c0c8c1SCy Schubert         {
3759b7c0c8c1SCy Schubert 		OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3760b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3761b7c0c8c1SCy Schubert 			yyerror("number expected");
3762b7c0c8c1SCy Schubert 		else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3763b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3764b7c0c8c1SCy Schubert 	}
3765*46d2f618SCy Schubert #line 3766 "util/configparser.c"
3766b7c0c8c1SCy Schubert     break;
3767b7c0c8c1SCy Schubert 
3768*46d2f618SCy Schubert   case 384: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
3769*46d2f618SCy Schubert #line 965 "util/configparser.y"
3770b7c0c8c1SCy Schubert         {
3771b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3772b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3773b7c0c8c1SCy Schubert 			yyerror("number expected");
3774b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 120000)
3775b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_idle_timeout = 120000;
3776b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3777b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_idle_timeout = 1;
3778b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3779b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3780b7c0c8c1SCy Schubert 	}
3781*46d2f618SCy Schubert #line 3782 "util/configparser.c"
3782b7c0c8c1SCy Schubert     break;
3783b7c0c8c1SCy Schubert 
3784*46d2f618SCy Schubert   case 385: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
3785*46d2f618SCy Schubert #line 978 "util/configparser.y"
3786b7c0c8c1SCy Schubert         {
3787b7c0c8c1SCy Schubert 		OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
3788b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3789b7c0c8c1SCy Schubert 			yyerror("number expected");
3790b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3791b7c0c8c1SCy Schubert 			cfg_parser->cfg->max_reuse_tcp_queries = 0;
3792b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
3793b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3794b7c0c8c1SCy Schubert 	}
3795*46d2f618SCy Schubert #line 3796 "util/configparser.c"
3796b7c0c8c1SCy Schubert     break;
3797b7c0c8c1SCy Schubert 
3798*46d2f618SCy Schubert   case 386: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
3799*46d2f618SCy Schubert #line 989 "util/configparser.y"
3800b7c0c8c1SCy Schubert         {
3801b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
3802b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3803b7c0c8c1SCy Schubert 			yyerror("number expected");
3804b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3805b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_reuse_timeout = 0;
3806b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
3807b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3808b7c0c8c1SCy Schubert 	}
3809*46d2f618SCy Schubert #line 3810 "util/configparser.c"
3810b7c0c8c1SCy Schubert     break;
3811b7c0c8c1SCy Schubert 
3812*46d2f618SCy Schubert   case 387: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG  */
3813*46d2f618SCy Schubert #line 1000 "util/configparser.y"
3814b7c0c8c1SCy Schubert         {
3815b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
3816b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3817b7c0c8c1SCy Schubert 			yyerror("number expected");
3818b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3819b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_auth_query_timeout = 0;
3820b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
3821b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3822b7c0c8c1SCy Schubert 	}
3823*46d2f618SCy Schubert #line 3824 "util/configparser.c"
3824b7c0c8c1SCy Schubert     break;
3825b7c0c8c1SCy Schubert 
3826*46d2f618SCy Schubert   case 388: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
3827*46d2f618SCy Schubert #line 1011 "util/configparser.y"
3828b7c0c8c1SCy Schubert         {
3829b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3830b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3831b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3832b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3833b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3834b7c0c8c1SCy Schubert 	}
3835*46d2f618SCy Schubert #line 3836 "util/configparser.c"
3836b7c0c8c1SCy Schubert     break;
3837b7c0c8c1SCy Schubert 
3838*46d2f618SCy Schubert   case 389: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
3839*46d2f618SCy Schubert #line 1020 "util/configparser.y"
3840b7c0c8c1SCy Schubert         {
3841b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3842b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3843b7c0c8c1SCy Schubert 			yyerror("number expected");
3844b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 6553500)
3845b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3846b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3847b7c0c8c1SCy Schubert 			cfg_parser->cfg->tcp_keepalive_timeout = 0;
3848b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3849b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3850b7c0c8c1SCy Schubert 	}
3851*46d2f618SCy Schubert #line 3852 "util/configparser.c"
3852b7c0c8c1SCy Schubert     break;
3853b7c0c8c1SCy Schubert 
3854*46d2f618SCy Schubert   case 390: /* server_sock_queue_timeout: VAR_SOCK_QUEUE_TIMEOUT STRING_ARG  */
3855*46d2f618SCy Schubert #line 1033 "util/configparser.y"
3856b7c0c8c1SCy Schubert         {
3857b7c0c8c1SCy Schubert 		OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
3858b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3859b7c0c8c1SCy Schubert 			yyerror("number expected");
3860b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 6553500)
3861b7c0c8c1SCy Schubert 			cfg_parser->cfg->sock_queue_timeout = 6553500;
3862b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 1)
3863b7c0c8c1SCy Schubert 			cfg_parser->cfg->sock_queue_timeout = 0;
3864b7c0c8c1SCy Schubert 		else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
3865b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3866b7c0c8c1SCy Schubert 	}
3867*46d2f618SCy Schubert #line 3868 "util/configparser.c"
3868b7c0c8c1SCy Schubert     break;
3869b7c0c8c1SCy Schubert 
3870*46d2f618SCy Schubert   case 391: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
3871*46d2f618SCy Schubert #line 1046 "util/configparser.y"
3872b7c0c8c1SCy Schubert         {
3873b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3874b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3875b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3876b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3877b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3878b7c0c8c1SCy Schubert 	}
3879*46d2f618SCy Schubert #line 3880 "util/configparser.c"
3880b7c0c8c1SCy Schubert     break;
3881b7c0c8c1SCy Schubert 
3882*46d2f618SCy Schubert   case 392: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
3883*46d2f618SCy Schubert #line 1055 "util/configparser.y"
3884b7c0c8c1SCy Schubert         {
3885b7c0c8c1SCy Schubert 		OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3886b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3887b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3888b7c0c8c1SCy Schubert 		else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3889b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3890b7c0c8c1SCy Schubert 	}
3891*46d2f618SCy Schubert #line 3892 "util/configparser.c"
3892b7c0c8c1SCy Schubert     break;
3893b7c0c8c1SCy Schubert 
3894*46d2f618SCy Schubert   case 393: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
3895*46d2f618SCy Schubert #line 1064 "util/configparser.y"
3896b7c0c8c1SCy Schubert         {
3897b7c0c8c1SCy Schubert 		OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3898b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3899b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3900b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3901b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3902b7c0c8c1SCy Schubert 	}
3903*46d2f618SCy Schubert #line 3904 "util/configparser.c"
3904b7c0c8c1SCy Schubert     break;
3905b7c0c8c1SCy Schubert 
3906*46d2f618SCy Schubert   case 394: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
3907*46d2f618SCy Schubert #line 1073 "util/configparser.y"
3908b7c0c8c1SCy Schubert         {
3909b7c0c8c1SCy Schubert 		OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3910b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->ssl_service_key);
3911b7c0c8c1SCy Schubert 		cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3912b7c0c8c1SCy Schubert 	}
3913*46d2f618SCy Schubert #line 3914 "util/configparser.c"
3914b7c0c8c1SCy Schubert     break;
3915b7c0c8c1SCy Schubert 
3916*46d2f618SCy Schubert   case 395: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
3917*46d2f618SCy Schubert #line 1080 "util/configparser.y"
3918b7c0c8c1SCy Schubert         {
3919b7c0c8c1SCy Schubert 		OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3920b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->ssl_service_pem);
3921b7c0c8c1SCy Schubert 		cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3922b7c0c8c1SCy Schubert 	}
3923*46d2f618SCy Schubert #line 3924 "util/configparser.c"
3924b7c0c8c1SCy Schubert     break;
3925b7c0c8c1SCy Schubert 
3926*46d2f618SCy Schubert   case 396: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
3927*46d2f618SCy Schubert #line 1087 "util/configparser.y"
3928b7c0c8c1SCy Schubert         {
3929b7c0c8c1SCy Schubert 		OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3930b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
3931b7c0c8c1SCy Schubert 			yyerror("port number expected");
3932b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3933b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3934b7c0c8c1SCy Schubert 	}
3935*46d2f618SCy Schubert #line 3936 "util/configparser.c"
3936b7c0c8c1SCy Schubert     break;
3937b7c0c8c1SCy Schubert 
3938*46d2f618SCy Schubert   case 397: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
3939*46d2f618SCy Schubert #line 1096 "util/configparser.y"
3940b7c0c8c1SCy Schubert         {
3941b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3942b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->tls_cert_bundle);
3943b7c0c8c1SCy Schubert 		cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3944b7c0c8c1SCy Schubert 	}
3945*46d2f618SCy Schubert #line 3946 "util/configparser.c"
3946b7c0c8c1SCy Schubert     break;
3947b7c0c8c1SCy Schubert 
3948*46d2f618SCy Schubert   case 398: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
3949*46d2f618SCy Schubert #line 1103 "util/configparser.y"
3950b7c0c8c1SCy Schubert         {
3951b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
3952b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3953b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
3954b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
3955b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
3956b7c0c8c1SCy Schubert 	}
3957*46d2f618SCy Schubert #line 3958 "util/configparser.c"
3958b7c0c8c1SCy Schubert     break;
3959b7c0c8c1SCy Schubert 
3960*46d2f618SCy Schubert   case 399: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
3961*46d2f618SCy Schubert #line 1112 "util/configparser.y"
3962b7c0c8c1SCy Schubert         {
3963b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
3964b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
3965b7c0c8c1SCy Schubert 			(yyvsp[0].str)))
3966b7c0c8c1SCy Schubert 			yyerror("out of memory");
3967b7c0c8c1SCy Schubert 	}
3968*46d2f618SCy Schubert #line 3969 "util/configparser.c"
3969b7c0c8c1SCy Schubert     break;
3970b7c0c8c1SCy Schubert 
3971*46d2f618SCy Schubert   case 400: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
3972*46d2f618SCy Schubert #line 1120 "util/configparser.y"
3973b7c0c8c1SCy Schubert         {
3974b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
3975b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->tls_ciphers);
3976b7c0c8c1SCy Schubert 		cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
3977b7c0c8c1SCy Schubert 	}
3978*46d2f618SCy Schubert #line 3979 "util/configparser.c"
3979b7c0c8c1SCy Schubert     break;
3980b7c0c8c1SCy Schubert 
3981*46d2f618SCy Schubert   case 401: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
3982*46d2f618SCy Schubert #line 1127 "util/configparser.y"
3983b7c0c8c1SCy Schubert         {
3984b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
3985b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->tls_ciphersuites);
3986b7c0c8c1SCy Schubert 		cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
3987b7c0c8c1SCy Schubert 	}
3988*46d2f618SCy Schubert #line 3989 "util/configparser.c"
3989b7c0c8c1SCy Schubert     break;
3990b7c0c8c1SCy Schubert 
3991*46d2f618SCy Schubert   case 402: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
3992*46d2f618SCy Schubert #line 1134 "util/configparser.y"
3993b7c0c8c1SCy Schubert         {
3994b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
3995b7c0c8c1SCy Schubert 		if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
3996b7c0c8c1SCy Schubert 			(yyvsp[0].str)))
3997b7c0c8c1SCy Schubert 			yyerror("out of memory");
3998b7c0c8c1SCy Schubert 	}
3999*46d2f618SCy Schubert #line 4000 "util/configparser.c"
4000b7c0c8c1SCy Schubert     break;
4001b7c0c8c1SCy Schubert 
4002*46d2f618SCy Schubert   case 403: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
4003*46d2f618SCy Schubert #line 1142 "util/configparser.y"
4004b7c0c8c1SCy Schubert         {
4005b7c0c8c1SCy Schubert 		OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4006b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4007b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4008b7c0c8c1SCy Schubert 		else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4009b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4010b7c0c8c1SCy Schubert 	}
4011*46d2f618SCy Schubert #line 4012 "util/configparser.c"
4012b7c0c8c1SCy Schubert     break;
4013b7c0c8c1SCy Schubert 
4014*46d2f618SCy Schubert   case 404: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
4015*46d2f618SCy Schubert #line 1151 "util/configparser.y"
4016b7c0c8c1SCy Schubert         {
4017b7c0c8c1SCy Schubert 		OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4018b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4019b7c0c8c1SCy Schubert 			yyerror("port number expected");
4020b7c0c8c1SCy Schubert 		else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4021b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4022b7c0c8c1SCy Schubert 	}
4023*46d2f618SCy Schubert #line 4024 "util/configparser.c"
4024b7c0c8c1SCy Schubert     break;
4025b7c0c8c1SCy Schubert 
4026*46d2f618SCy Schubert   case 405: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
4027*46d2f618SCy Schubert #line 1159 "util/configparser.y"
4028b7c0c8c1SCy Schubert         {
4029b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4030b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->http_endpoint);
4031b7c0c8c1SCy Schubert 		if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4032b7c0c8c1SCy Schubert 			cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4033b7c0c8c1SCy Schubert 			if(!cfg_parser->cfg->http_endpoint)
4034b7c0c8c1SCy Schubert 				yyerror("out of memory");
4035b7c0c8c1SCy Schubert 			cfg_parser->cfg->http_endpoint[0] = '/';
4036b7c0c8c1SCy Schubert 			memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4037b7c0c8c1SCy Schubert 				strlen((yyvsp[0].str))+1);
4038b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
4039b7c0c8c1SCy Schubert 		} else {
4040b7c0c8c1SCy Schubert 			cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4041b7c0c8c1SCy Schubert 		}
4042b7c0c8c1SCy Schubert 	}
4043*46d2f618SCy Schubert #line 4044 "util/configparser.c"
4044b7c0c8c1SCy Schubert     break;
4045b7c0c8c1SCy Schubert 
4046*46d2f618SCy Schubert   case 406: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
4047*46d2f618SCy Schubert #line 1175 "util/configparser.y"
4048b7c0c8c1SCy Schubert         {
4049b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4050b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4051b7c0c8c1SCy Schubert 			yyerror("number expected");
4052b7c0c8c1SCy Schubert 		else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4053b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4054b7c0c8c1SCy Schubert 	}
4055*46d2f618SCy Schubert #line 4056 "util/configparser.c"
4056b7c0c8c1SCy Schubert     break;
4057b7c0c8c1SCy Schubert 
4058*46d2f618SCy Schubert   case 407: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
4059*46d2f618SCy Schubert #line 1183 "util/configparser.y"
4060b7c0c8c1SCy Schubert         {
4061b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4062b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str),
4063b7c0c8c1SCy Schubert 			&cfg_parser->cfg->http_query_buffer_size))
4064b7c0c8c1SCy Schubert 			yyerror("memory size expected");
4065b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4066b7c0c8c1SCy Schubert 	}
4067*46d2f618SCy Schubert #line 4068 "util/configparser.c"
4068b7c0c8c1SCy Schubert     break;
4069b7c0c8c1SCy Schubert 
4070*46d2f618SCy Schubert   case 408: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
4071*46d2f618SCy Schubert #line 1191 "util/configparser.y"
4072b7c0c8c1SCy Schubert         {
4073b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4074b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str),
4075b7c0c8c1SCy Schubert 			&cfg_parser->cfg->http_response_buffer_size))
4076b7c0c8c1SCy Schubert 			yyerror("memory size expected");
4077b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4078b7c0c8c1SCy Schubert 	}
4079*46d2f618SCy Schubert #line 4080 "util/configparser.c"
4080b7c0c8c1SCy Schubert     break;
4081b7c0c8c1SCy Schubert 
4082*46d2f618SCy Schubert   case 409: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
4083*46d2f618SCy Schubert #line 1199 "util/configparser.y"
4084b7c0c8c1SCy Schubert         {
4085b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4086b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4087b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4088b7c0c8c1SCy Schubert 		else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4089b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4090b7c0c8c1SCy Schubert 	}
4091*46d2f618SCy Schubert #line 4092 "util/configparser.c"
4092b7c0c8c1SCy Schubert     break;
4093b7c0c8c1SCy Schubert 
4094*46d2f618SCy Schubert   case 410: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
4095*46d2f618SCy Schubert #line 1207 "util/configparser.y"
4096b7c0c8c1SCy Schubert         {
4097b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4098b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4099b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4100b7c0c8c1SCy Schubert 		else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4101b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4102b7c0c8c1SCy Schubert 	}
4103*46d2f618SCy Schubert #line 4104 "util/configparser.c"
4104b7c0c8c1SCy Schubert     break;
4105b7c0c8c1SCy Schubert 
4106*46d2f618SCy Schubert   case 411: /* server_quic_port: VAR_QUIC_PORT STRING_ARG  */
4107*46d2f618SCy Schubert #line 1215 "util/configparser.y"
4108*46d2f618SCy Schubert         {
4109*46d2f618SCy Schubert 		OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4110*46d2f618SCy Schubert #ifndef HAVE_NGTCP2
4111*46d2f618SCy Schubert 		log_warn("%s:%d: Unbound is not compiled with "
4112*46d2f618SCy Schubert 			"ngtcp2. This is required to use DNS "
4113*46d2f618SCy Schubert 			"over QUIC.", cfg_parser->filename, cfg_parser->line);
4114*46d2f618SCy Schubert #endif
4115*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4116*46d2f618SCy Schubert 			yyerror("port number expected");
4117*46d2f618SCy Schubert 		else cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4118*46d2f618SCy Schubert 		free((yyvsp[0].str));
4119*46d2f618SCy Schubert 	}
4120*46d2f618SCy Schubert #line 4121 "util/configparser.c"
4121*46d2f618SCy Schubert     break;
4122*46d2f618SCy Schubert 
4123*46d2f618SCy Schubert   case 412: /* server_quic_size: VAR_QUIC_SIZE STRING_ARG  */
4124*46d2f618SCy Schubert #line 1228 "util/configparser.y"
4125*46d2f618SCy Schubert         {
4126*46d2f618SCy Schubert 		OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4127*46d2f618SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4128*46d2f618SCy Schubert 			yyerror("memory size expected");
4129*46d2f618SCy Schubert 		free((yyvsp[0].str));
4130*46d2f618SCy Schubert 	}
4131*46d2f618SCy Schubert #line 4132 "util/configparser.c"
4132*46d2f618SCy Schubert     break;
4133*46d2f618SCy Schubert 
4134*46d2f618SCy Schubert   case 413: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
4135*46d2f618SCy Schubert #line 1235 "util/configparser.y"
4136b7c0c8c1SCy Schubert         {
4137b7c0c8c1SCy Schubert 		OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4138b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4139b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4140b7c0c8c1SCy Schubert 		else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4141b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4142b7c0c8c1SCy Schubert 	}
4143*46d2f618SCy Schubert #line 4144 "util/configparser.c"
4144b7c0c8c1SCy Schubert     break;
4145b7c0c8c1SCy Schubert 
4146*46d2f618SCy Schubert   case 414: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
4147*46d2f618SCy Schubert #line 1244 "util/configparser.y"
4148b7c0c8c1SCy Schubert         {
4149b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4150b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4151b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4152b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4153b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4154b7c0c8c1SCy Schubert 	}
4155*46d2f618SCy Schubert #line 4156 "util/configparser.c"
4156b7c0c8c1SCy Schubert     break;
4157b7c0c8c1SCy Schubert 
4158*46d2f618SCy Schubert   case 415: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
4159*46d2f618SCy Schubert #line 1253 "util/configparser.y"
4160b7c0c8c1SCy Schubert         {
4161b7c0c8c1SCy Schubert 		OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4162b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4163b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4164b7c0c8c1SCy Schubert 		else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4165b7c0c8c1SCy Schubert #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4166b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") == 0)
4167b7c0c8c1SCy Schubert 			yyerror("no syslog services are available. "
4168b7c0c8c1SCy Schubert 				"(reconfigure and compile to add)");
4169b7c0c8c1SCy Schubert #endif
4170b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4171b7c0c8c1SCy Schubert 	}
4172*46d2f618SCy Schubert #line 4173 "util/configparser.c"
4173b7c0c8c1SCy Schubert     break;
4174b7c0c8c1SCy Schubert 
4175*46d2f618SCy Schubert   case 416: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
4176*46d2f618SCy Schubert #line 1267 "util/configparser.y"
4177b7c0c8c1SCy Schubert         {
4178b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4179b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4180b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4181b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4182b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4183b7c0c8c1SCy Schubert 	}
4184*46d2f618SCy Schubert #line 4185 "util/configparser.c"
4185b7c0c8c1SCy Schubert     break;
4186b7c0c8c1SCy Schubert 
4187*46d2f618SCy Schubert   case 417: /* server_log_time_iso: VAR_LOG_TIME_ISO STRING_ARG  */
4188*46d2f618SCy Schubert #line 1276 "util/configparser.y"
4189*46d2f618SCy Schubert         {
4190*46d2f618SCy Schubert 		OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4191*46d2f618SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4192*46d2f618SCy Schubert 			yyerror("expected yes or no.");
4193*46d2f618SCy Schubert 		else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4194*46d2f618SCy Schubert 		free((yyvsp[0].str));
4195*46d2f618SCy Schubert 	}
4196*46d2f618SCy Schubert #line 4197 "util/configparser.c"
4197*46d2f618SCy Schubert     break;
4198*46d2f618SCy Schubert 
4199*46d2f618SCy Schubert   case 418: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
4200*46d2f618SCy Schubert #line 1285 "util/configparser.y"
4201b7c0c8c1SCy Schubert         {
4202b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4203b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4204b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4205b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4206b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4207b7c0c8c1SCy Schubert 	}
4208*46d2f618SCy Schubert #line 4209 "util/configparser.c"
4209b7c0c8c1SCy Schubert     break;
4210b7c0c8c1SCy Schubert 
4211*46d2f618SCy Schubert   case 419: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
4212*46d2f618SCy Schubert #line 1294 "util/configparser.y"
4213b7c0c8c1SCy Schubert         {
4214b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4215b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4216b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4217b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4218b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4219b7c0c8c1SCy Schubert 	}
4220*46d2f618SCy Schubert #line 4221 "util/configparser.c"
4221b7c0c8c1SCy Schubert     break;
4222b7c0c8c1SCy Schubert 
4223*46d2f618SCy Schubert   case 420: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
4224*46d2f618SCy Schubert #line 1303 "util/configparser.y"
4225b7c0c8c1SCy Schubert         {
4226b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4227b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4228b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4229b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4230b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4231b7c0c8c1SCy Schubert 	}
4232*46d2f618SCy Schubert #line 4233 "util/configparser.c"
4233b7c0c8c1SCy Schubert     break;
4234b7c0c8c1SCy Schubert 
4235*46d2f618SCy Schubert   case 421: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
4236*46d2f618SCy Schubert #line 1312 "util/configparser.y"
4237b7c0c8c1SCy Schubert         {
4238b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4239b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4240b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4241b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4242b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4243b7c0c8c1SCy Schubert 	}
4244*46d2f618SCy Schubert #line 4245 "util/configparser.c"
4245b7c0c8c1SCy Schubert     break;
4246b7c0c8c1SCy Schubert 
4247*46d2f618SCy Schubert   case 422: /* server_log_destaddr: VAR_LOG_DESTADDR STRING_ARG  */
4248*46d2f618SCy Schubert #line 1321 "util/configparser.y"
4249b7c0c8c1SCy Schubert         {
4250b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4251b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4252b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4253b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4254b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4255b7c0c8c1SCy Schubert 	}
4256*46d2f618SCy Schubert #line 4257 "util/configparser.c"
4257b7c0c8c1SCy Schubert     break;
4258b7c0c8c1SCy Schubert 
4259*46d2f618SCy Schubert   case 423: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
4260*46d2f618SCy Schubert #line 1330 "util/configparser.y"
4261b7c0c8c1SCy Schubert         {
4262b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4263b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4264b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4265b7c0c8c1SCy Schubert 		else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4266b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4267b7c0c8c1SCy Schubert 	}
4268*46d2f618SCy Schubert #line 4269 "util/configparser.c"
4269b7c0c8c1SCy Schubert     break;
4270b7c0c8c1SCy Schubert 
4271*46d2f618SCy Schubert   case 424: /* server_chroot: VAR_CHROOT STRING_ARG  */
4272*46d2f618SCy Schubert #line 1339 "util/configparser.y"
4273b7c0c8c1SCy Schubert         {
4274b7c0c8c1SCy Schubert 		OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4275b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->chrootdir);
4276b7c0c8c1SCy Schubert 		cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4277b7c0c8c1SCy Schubert 	}
4278*46d2f618SCy Schubert #line 4279 "util/configparser.c"
4279b7c0c8c1SCy Schubert     break;
4280b7c0c8c1SCy Schubert 
4281*46d2f618SCy Schubert   case 425: /* server_username: VAR_USERNAME STRING_ARG  */
4282*46d2f618SCy Schubert #line 1346 "util/configparser.y"
4283b7c0c8c1SCy Schubert         {
4284b7c0c8c1SCy Schubert 		OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4285b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->username);
4286b7c0c8c1SCy Schubert 		cfg_parser->cfg->username = (yyvsp[0].str);
4287b7c0c8c1SCy Schubert 	}
4288*46d2f618SCy Schubert #line 4289 "util/configparser.c"
4289b7c0c8c1SCy Schubert     break;
4290b7c0c8c1SCy Schubert 
4291*46d2f618SCy Schubert   case 426: /* server_directory: VAR_DIRECTORY STRING_ARG  */
4292*46d2f618SCy Schubert #line 1353 "util/configparser.y"
4293b7c0c8c1SCy Schubert         {
4294b7c0c8c1SCy Schubert 		OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4295b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->directory);
4296b7c0c8c1SCy Schubert 		cfg_parser->cfg->directory = (yyvsp[0].str);
4297b7c0c8c1SCy Schubert 		/* change there right away for includes relative to this */
4298b7c0c8c1SCy Schubert 		if((yyvsp[0].str)[0]) {
4299b7c0c8c1SCy Schubert 			char* d;
4300b7c0c8c1SCy Schubert #ifdef UB_ON_WINDOWS
4301b7c0c8c1SCy Schubert 			w_config_adjust_directory(cfg_parser->cfg);
4302b7c0c8c1SCy Schubert #endif
4303b7c0c8c1SCy Schubert 			d = cfg_parser->cfg->directory;
4304b7c0c8c1SCy Schubert 			/* adjust directory if we have already chroot,
4305b7c0c8c1SCy Schubert 			 * like, we reread after sighup */
4306b7c0c8c1SCy Schubert 			if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4307b7c0c8c1SCy Schubert 				strncmp(d, cfg_parser->chroot, strlen(
4308b7c0c8c1SCy Schubert 				cfg_parser->chroot)) == 0)
4309b7c0c8c1SCy Schubert 				d += strlen(cfg_parser->chroot);
4310b7c0c8c1SCy Schubert 			if(d[0]) {
4311b7c0c8c1SCy Schubert 				if(chdir(d))
4312b7c0c8c1SCy Schubert 				log_err("cannot chdir to directory: %s (%s)",
4313b7c0c8c1SCy Schubert 					d, strerror(errno));
4314b7c0c8c1SCy Schubert 			}
4315b7c0c8c1SCy Schubert 		}
4316b7c0c8c1SCy Schubert 	}
4317*46d2f618SCy Schubert #line 4318 "util/configparser.c"
4318b7c0c8c1SCy Schubert     break;
4319b7c0c8c1SCy Schubert 
4320*46d2f618SCy Schubert   case 427: /* server_logfile: VAR_LOGFILE STRING_ARG  */
4321*46d2f618SCy Schubert #line 1379 "util/configparser.y"
4322b7c0c8c1SCy Schubert         {
4323b7c0c8c1SCy Schubert 		OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4324b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->logfile);
4325b7c0c8c1SCy Schubert 		cfg_parser->cfg->logfile = (yyvsp[0].str);
4326b7c0c8c1SCy Schubert 		cfg_parser->cfg->use_syslog = 0;
4327b7c0c8c1SCy Schubert 	}
4328*46d2f618SCy Schubert #line 4329 "util/configparser.c"
4329b7c0c8c1SCy Schubert     break;
4330b7c0c8c1SCy Schubert 
4331*46d2f618SCy Schubert   case 428: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
4332*46d2f618SCy Schubert #line 1387 "util/configparser.y"
4333b7c0c8c1SCy Schubert         {
4334b7c0c8c1SCy Schubert 		OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4335b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->pidfile);
4336b7c0c8c1SCy Schubert 		cfg_parser->cfg->pidfile = (yyvsp[0].str);
4337b7c0c8c1SCy Schubert 	}
4338*46d2f618SCy Schubert #line 4339 "util/configparser.c"
4339b7c0c8c1SCy Schubert     break;
4340b7c0c8c1SCy Schubert 
4341*46d2f618SCy Schubert   case 429: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
4342*46d2f618SCy Schubert #line 1394 "util/configparser.y"
4343b7c0c8c1SCy Schubert         {
4344b7c0c8c1SCy Schubert 		OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4345b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4346b7c0c8c1SCy Schubert 			yyerror("out of memory");
4347b7c0c8c1SCy Schubert 	}
4348*46d2f618SCy Schubert #line 4349 "util/configparser.c"
4349b7c0c8c1SCy Schubert     break;
4350b7c0c8c1SCy Schubert 
4351*46d2f618SCy Schubert   case 430: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
4352*46d2f618SCy Schubert #line 1401 "util/configparser.y"
4353b7c0c8c1SCy Schubert         {
4354b7c0c8c1SCy Schubert 		OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4355b7c0c8c1SCy Schubert 		log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4356b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4357b7c0c8c1SCy Schubert 	}
4358*46d2f618SCy Schubert #line 4359 "util/configparser.c"
4359b7c0c8c1SCy Schubert     break;
4360b7c0c8c1SCy Schubert 
4361*46d2f618SCy Schubert   case 431: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
4362*46d2f618SCy Schubert #line 1408 "util/configparser.y"
4363b7c0c8c1SCy Schubert         {
4364b7c0c8c1SCy Schubert 		OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4365b7c0c8c1SCy Schubert 		log_warn("option dlv-anchor ignored: DLV is decommissioned");
4366b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4367b7c0c8c1SCy Schubert 	}
4368*46d2f618SCy Schubert #line 4369 "util/configparser.c"
4369b7c0c8c1SCy Schubert     break;
4370b7c0c8c1SCy Schubert 
4371*46d2f618SCy Schubert   case 432: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
4372*46d2f618SCy Schubert #line 1415 "util/configparser.y"
4373b7c0c8c1SCy Schubert         {
4374b7c0c8c1SCy Schubert 		OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4375b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4376b7c0c8c1SCy Schubert 			auto_trust_anchor_file_list, (yyvsp[0].str)))
4377b7c0c8c1SCy Schubert 			yyerror("out of memory");
4378b7c0c8c1SCy Schubert 	}
4379*46d2f618SCy Schubert #line 4380 "util/configparser.c"
4380b7c0c8c1SCy Schubert     break;
4381b7c0c8c1SCy Schubert 
4382*46d2f618SCy Schubert   case 433: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
4383*46d2f618SCy Schubert #line 1423 "util/configparser.y"
4384b7c0c8c1SCy Schubert         {
4385b7c0c8c1SCy Schubert 		OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4386b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4387b7c0c8c1SCy Schubert 			trust_anchor_file_list, (yyvsp[0].str)))
4388b7c0c8c1SCy Schubert 			yyerror("out of memory");
4389b7c0c8c1SCy Schubert 	}
4390*46d2f618SCy Schubert #line 4391 "util/configparser.c"
4391b7c0c8c1SCy Schubert     break;
4392b7c0c8c1SCy Schubert 
4393*46d2f618SCy Schubert   case 434: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
4394*46d2f618SCy Schubert #line 1431 "util/configparser.y"
4395b7c0c8c1SCy Schubert         {
4396b7c0c8c1SCy Schubert 		OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4397b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4398b7c0c8c1SCy Schubert 			trusted_keys_file_list, (yyvsp[0].str)))
4399b7c0c8c1SCy Schubert 			yyerror("out of memory");
4400b7c0c8c1SCy Schubert 	}
4401*46d2f618SCy Schubert #line 4402 "util/configparser.c"
4402b7c0c8c1SCy Schubert     break;
4403b7c0c8c1SCy Schubert 
4404*46d2f618SCy Schubert   case 435: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
4405*46d2f618SCy Schubert #line 1439 "util/configparser.y"
4406b7c0c8c1SCy Schubert         {
4407b7c0c8c1SCy Schubert 		OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4408b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4409b7c0c8c1SCy Schubert 			yyerror("out of memory");
4410b7c0c8c1SCy Schubert 	}
4411*46d2f618SCy Schubert #line 4412 "util/configparser.c"
4412b7c0c8c1SCy Schubert     break;
4413b7c0c8c1SCy Schubert 
4414*46d2f618SCy Schubert   case 436: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
4415*46d2f618SCy Schubert #line 1446 "util/configparser.y"
4416b7c0c8c1SCy Schubert         {
4417b7c0c8c1SCy Schubert 		OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4418b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4419b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4420b7c0c8c1SCy Schubert 		else
4421b7c0c8c1SCy Schubert 			cfg_parser->cfg->trust_anchor_signaling =
4422b7c0c8c1SCy Schubert 				(strcmp((yyvsp[0].str), "yes")==0);
4423b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4424b7c0c8c1SCy Schubert 	}
4425*46d2f618SCy Schubert #line 4426 "util/configparser.c"
4426b7c0c8c1SCy Schubert     break;
4427b7c0c8c1SCy Schubert 
4428*46d2f618SCy Schubert   case 437: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
4429*46d2f618SCy Schubert #line 1457 "util/configparser.y"
4430b7c0c8c1SCy Schubert         {
4431b7c0c8c1SCy Schubert 		OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4432b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4433b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4434b7c0c8c1SCy Schubert 		else
4435b7c0c8c1SCy Schubert 			cfg_parser->cfg->root_key_sentinel =
4436b7c0c8c1SCy Schubert 				(strcmp((yyvsp[0].str), "yes")==0);
4437b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4438b7c0c8c1SCy Schubert 	}
4439*46d2f618SCy Schubert #line 4440 "util/configparser.c"
4440b7c0c8c1SCy Schubert     break;
4441b7c0c8c1SCy Schubert 
4442*46d2f618SCy Schubert   case 438: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
4443*46d2f618SCy Schubert #line 1468 "util/configparser.y"
4444b7c0c8c1SCy Schubert         {
4445b7c0c8c1SCy Schubert 		OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4446b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4447b7c0c8c1SCy Schubert 			yyerror("out of memory");
4448b7c0c8c1SCy Schubert 	}
4449*46d2f618SCy Schubert #line 4450 "util/configparser.c"
4450b7c0c8c1SCy Schubert     break;
4451b7c0c8c1SCy Schubert 
4452*46d2f618SCy Schubert   case 439: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
4453*46d2f618SCy Schubert #line 1475 "util/configparser.y"
4454b7c0c8c1SCy Schubert         {
4455b7c0c8c1SCy Schubert 		OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4456b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4457b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4458b7c0c8c1SCy Schubert 		else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4459b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4460b7c0c8c1SCy Schubert 	}
4461*46d2f618SCy Schubert #line 4462 "util/configparser.c"
4462b7c0c8c1SCy Schubert     break;
4463b7c0c8c1SCy Schubert 
4464*46d2f618SCy Schubert   case 440: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
4465*46d2f618SCy Schubert #line 1484 "util/configparser.y"
4466b7c0c8c1SCy Schubert         {
4467b7c0c8c1SCy Schubert 		OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4468b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4469b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4470b7c0c8c1SCy Schubert 		else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4471b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4472b7c0c8c1SCy Schubert 	}
4473*46d2f618SCy Schubert #line 4474 "util/configparser.c"
4474b7c0c8c1SCy Schubert     break;
4475b7c0c8c1SCy Schubert 
4476*46d2f618SCy Schubert   case 441: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
4477*46d2f618SCy Schubert #line 1493 "util/configparser.y"
4478b7c0c8c1SCy Schubert         {
4479b7c0c8c1SCy Schubert 		OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4480b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4481b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4482b7c0c8c1SCy Schubert 		else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4483b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4484b7c0c8c1SCy Schubert 	}
4485*46d2f618SCy Schubert #line 4486 "util/configparser.c"
4486b7c0c8c1SCy Schubert     break;
4487b7c0c8c1SCy Schubert 
4488*46d2f618SCy Schubert   case 442: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
4489*46d2f618SCy Schubert #line 1502 "util/configparser.y"
4490b7c0c8c1SCy Schubert         {
4491b7c0c8c1SCy Schubert 		OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4492b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4493b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4494b7c0c8c1SCy Schubert 		else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4495b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4496b7c0c8c1SCy Schubert 	}
4497*46d2f618SCy Schubert #line 4498 "util/configparser.c"
4498b7c0c8c1SCy Schubert     break;
4499b7c0c8c1SCy Schubert 
4500*46d2f618SCy Schubert   case 443: /* server_identity: VAR_IDENTITY STRING_ARG  */
4501*46d2f618SCy Schubert #line 1511 "util/configparser.y"
4502b7c0c8c1SCy Schubert         {
4503b7c0c8c1SCy Schubert 		OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4504b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->identity);
4505b7c0c8c1SCy Schubert 		cfg_parser->cfg->identity = (yyvsp[0].str);
4506b7c0c8c1SCy Schubert 	}
4507*46d2f618SCy Schubert #line 4508 "util/configparser.c"
4508b7c0c8c1SCy Schubert     break;
4509b7c0c8c1SCy Schubert 
4510*46d2f618SCy Schubert   case 444: /* server_version: VAR_VERSION STRING_ARG  */
4511*46d2f618SCy Schubert #line 1518 "util/configparser.y"
4512b7c0c8c1SCy Schubert         {
4513b7c0c8c1SCy Schubert 		OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4514b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->version);
4515b7c0c8c1SCy Schubert 		cfg_parser->cfg->version = (yyvsp[0].str);
4516b7c0c8c1SCy Schubert 	}
4517*46d2f618SCy Schubert #line 4518 "util/configparser.c"
4518b7c0c8c1SCy Schubert     break;
4519b7c0c8c1SCy Schubert 
4520*46d2f618SCy Schubert   case 445: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
4521*46d2f618SCy Schubert #line 1525 "util/configparser.y"
4522b7c0c8c1SCy Schubert         {
4523b7c0c8c1SCy Schubert 		OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4524b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->http_user_agent);
4525b7c0c8c1SCy Schubert 		cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4526b7c0c8c1SCy Schubert 	}
4527*46d2f618SCy Schubert #line 4528 "util/configparser.c"
4528b7c0c8c1SCy Schubert     break;
4529b7c0c8c1SCy Schubert 
4530*46d2f618SCy Schubert   case 446: /* server_nsid: VAR_NSID STRING_ARG  */
4531*46d2f618SCy Schubert #line 1532 "util/configparser.y"
4532b7c0c8c1SCy Schubert         {
4533b7c0c8c1SCy Schubert 		OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4534b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->nsid_cfg_str);
4535b7c0c8c1SCy Schubert 		cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4536b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->nsid);
4537b7c0c8c1SCy Schubert 		cfg_parser->cfg->nsid = NULL;
4538b7c0c8c1SCy Schubert 		cfg_parser->cfg->nsid_len = 0;
4539b7c0c8c1SCy Schubert 		if (*(yyvsp[0].str) == 0)
4540b7c0c8c1SCy Schubert 			; /* pass; empty string is not setting nsid */
4541b7c0c8c1SCy Schubert 		else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4542b7c0c8c1SCy Schubert 					(yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4543b7c0c8c1SCy Schubert 			yyerror("the NSID must be either a hex string or an "
4544b7c0c8c1SCy Schubert 			    "ascii character string prepended with ascii_.");
4545b7c0c8c1SCy Schubert 	}
4546*46d2f618SCy Schubert #line 4547 "util/configparser.c"
4547b7c0c8c1SCy Schubert     break;
4548b7c0c8c1SCy Schubert 
4549*46d2f618SCy Schubert   case 447: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
4550*46d2f618SCy Schubert #line 1548 "util/configparser.y"
4551b7c0c8c1SCy Schubert         {
4552b7c0c8c1SCy Schubert 		OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4553b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4554b7c0c8c1SCy Schubert 			yyerror("buffer size expected");
4555b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4556b7c0c8c1SCy Schubert 	}
4557*46d2f618SCy Schubert #line 4558 "util/configparser.c"
4558b7c0c8c1SCy Schubert     break;
4559b7c0c8c1SCy Schubert 
4560*46d2f618SCy Schubert   case 448: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
4561*46d2f618SCy Schubert #line 1556 "util/configparser.y"
4562b7c0c8c1SCy Schubert         {
4563b7c0c8c1SCy Schubert 		OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4564b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4565b7c0c8c1SCy Schubert 			yyerror("buffer size expected");
4566b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4567b7c0c8c1SCy Schubert 	}
4568*46d2f618SCy Schubert #line 4569 "util/configparser.c"
4569b7c0c8c1SCy Schubert     break;
4570b7c0c8c1SCy Schubert 
4571*46d2f618SCy Schubert   case 449: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
4572*46d2f618SCy Schubert #line 1564 "util/configparser.y"
4573b7c0c8c1SCy Schubert         {
4574b7c0c8c1SCy Schubert 		OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4575b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4576b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4577b7c0c8c1SCy Schubert 		else cfg_parser->cfg->so_reuseport =
4578b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4579b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4580b7c0c8c1SCy Schubert 	}
4581*46d2f618SCy Schubert #line 4582 "util/configparser.c"
4582b7c0c8c1SCy Schubert     break;
4583b7c0c8c1SCy Schubert 
4584*46d2f618SCy Schubert   case 450: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
4585*46d2f618SCy Schubert #line 1574 "util/configparser.y"
4586b7c0c8c1SCy Schubert         {
4587b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4588b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4589b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4590b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_transparent =
4591b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4592b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4593b7c0c8c1SCy Schubert 	}
4594*46d2f618SCy Schubert #line 4595 "util/configparser.c"
4595b7c0c8c1SCy Schubert     break;
4596b7c0c8c1SCy Schubert 
4597*46d2f618SCy Schubert   case 451: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
4598*46d2f618SCy Schubert #line 1584 "util/configparser.y"
4599b7c0c8c1SCy Schubert         {
4600b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4601b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4602b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4603b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_freebind =
4604b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4605b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4606b7c0c8c1SCy Schubert 	}
4607*46d2f618SCy Schubert #line 4608 "util/configparser.c"
4608b7c0c8c1SCy Schubert     break;
4609b7c0c8c1SCy Schubert 
4610*46d2f618SCy Schubert   case 452: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
4611*46d2f618SCy Schubert #line 1594 "util/configparser.y"
4612b7c0c8c1SCy Schubert         {
4613b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4614b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4615b7c0c8c1SCy Schubert 			yyerror("number expected");
4616b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 63)
4617b7c0c8c1SCy Schubert 			yyerror("value too large (max 63)");
4618b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 0)
4619b7c0c8c1SCy Schubert 			yyerror("value too small (min 0)");
4620b7c0c8c1SCy Schubert 		else
4621b7c0c8c1SCy Schubert 			cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4622b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4623b7c0c8c1SCy Schubert 	}
4624*46d2f618SCy Schubert #line 4625 "util/configparser.c"
4625b7c0c8c1SCy Schubert     break;
4626b7c0c8c1SCy Schubert 
4627*46d2f618SCy Schubert   case 453: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
4628*46d2f618SCy Schubert #line 1608 "util/configparser.y"
4629b7c0c8c1SCy Schubert         {
4630b7c0c8c1SCy Schubert 		OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4631b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4632b7c0c8c1SCy Schubert 			yyerror("memory size expected");
4633b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4634b7c0c8c1SCy Schubert 	}
4635*46d2f618SCy Schubert #line 4636 "util/configparser.c"
4636b7c0c8c1SCy Schubert     break;
4637b7c0c8c1SCy Schubert 
4638*46d2f618SCy Schubert   case 454: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
4639*46d2f618SCy Schubert #line 1616 "util/configparser.y"
4640b7c0c8c1SCy Schubert         {
4641b7c0c8c1SCy Schubert 		OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4642b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4643b7c0c8c1SCy Schubert 			yyerror("number expected");
4644b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 12)
4645b7c0c8c1SCy Schubert 			yyerror("edns buffer size too small");
4646b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) > 65535)
4647b7c0c8c1SCy Schubert 			cfg_parser->cfg->edns_buffer_size = 65535;
4648b7c0c8c1SCy Schubert 		else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4649b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4650b7c0c8c1SCy Schubert 	}
4651*46d2f618SCy Schubert #line 4652 "util/configparser.c"
4652b7c0c8c1SCy Schubert     break;
4653b7c0c8c1SCy Schubert 
4654*46d2f618SCy Schubert   case 455: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
4655*46d2f618SCy Schubert #line 1629 "util/configparser.y"
4656b7c0c8c1SCy Schubert         {
4657b7c0c8c1SCy Schubert 		OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4658b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4659b7c0c8c1SCy Schubert 			yyerror("number expected");
4660b7c0c8c1SCy Schubert 		else if (atoi((yyvsp[0].str)) < 4096)
4661b7c0c8c1SCy Schubert 			yyerror("message buffer size too small (use 4096)");
4662b7c0c8c1SCy Schubert 		else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4663b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4664b7c0c8c1SCy Schubert 	}
4665*46d2f618SCy Schubert #line 4666 "util/configparser.c"
4666b7c0c8c1SCy Schubert     break;
4667b7c0c8c1SCy Schubert 
4668*46d2f618SCy Schubert   case 456: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
4669*46d2f618SCy Schubert #line 1640 "util/configparser.y"
4670b7c0c8c1SCy Schubert         {
4671b7c0c8c1SCy Schubert 		OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4672b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4673b7c0c8c1SCy Schubert 			yyerror("memory size expected");
4674b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4675b7c0c8c1SCy Schubert 	}
4676*46d2f618SCy Schubert #line 4677 "util/configparser.c"
4677b7c0c8c1SCy Schubert     break;
4678b7c0c8c1SCy Schubert 
4679*46d2f618SCy Schubert   case 457: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
4680*46d2f618SCy Schubert #line 1648 "util/configparser.y"
4681b7c0c8c1SCy Schubert         {
4682b7c0c8c1SCy Schubert 		OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4683b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
4684b7c0c8c1SCy Schubert 			yyerror("number expected");
4685b7c0c8c1SCy Schubert 		} else {
4686b7c0c8c1SCy Schubert 			cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4687b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4688b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
4689b7c0c8c1SCy Schubert 		}
4690b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4691b7c0c8c1SCy Schubert 	}
4692*46d2f618SCy Schubert #line 4693 "util/configparser.c"
4693b7c0c8c1SCy Schubert     break;
4694b7c0c8c1SCy Schubert 
4695*46d2f618SCy Schubert   case 458: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
4696*46d2f618SCy Schubert #line 1661 "util/configparser.y"
4697b7c0c8c1SCy Schubert         {
4698b7c0c8c1SCy Schubert 		OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4699b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4700b7c0c8c1SCy Schubert 			yyerror("number expected");
4701b7c0c8c1SCy Schubert 		else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4702b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4703b7c0c8c1SCy Schubert 	}
4704*46d2f618SCy Schubert #line 4705 "util/configparser.c"
4705b7c0c8c1SCy Schubert     break;
4706b7c0c8c1SCy Schubert 
4707*46d2f618SCy Schubert   case 459: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
4708*46d2f618SCy Schubert #line 1670 "util/configparser.y"
4709b7c0c8c1SCy Schubert         {
4710b7c0c8c1SCy Schubert 		OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4711b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4712b7c0c8c1SCy Schubert 			yyerror("number expected");
4713b7c0c8c1SCy Schubert 		else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4714b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4715b7c0c8c1SCy Schubert 	}
4716*46d2f618SCy Schubert #line 4717 "util/configparser.c"
4717b7c0c8c1SCy Schubert     break;
4718b7c0c8c1SCy Schubert 
4719*46d2f618SCy Schubert   case 460: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
4720*46d2f618SCy Schubert #line 1679 "util/configparser.y"
4721b7c0c8c1SCy Schubert         {
4722b7c0c8c1SCy Schubert 		OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4723b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4724b7c0c8c1SCy Schubert 			yyerror("number expected");
4725b7c0c8c1SCy Schubert 		else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4726b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4727b7c0c8c1SCy Schubert 	}
4728*46d2f618SCy Schubert #line 4729 "util/configparser.c"
4729b7c0c8c1SCy Schubert     break;
4730b7c0c8c1SCy Schubert 
4731*46d2f618SCy Schubert   case 461: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
4732*46d2f618SCy Schubert #line 1688 "util/configparser.y"
4733b7c0c8c1SCy Schubert         {
4734b7c0c8c1SCy Schubert 		OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4735b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4736b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4737b7c0c8c1SCy Schubert 		else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4738b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4739b7c0c8c1SCy Schubert 	}
4740*46d2f618SCy Schubert #line 4741 "util/configparser.c"
4741b7c0c8c1SCy Schubert     break;
4742b7c0c8c1SCy Schubert 
4743*46d2f618SCy Schubert   case 462: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
4744*46d2f618SCy Schubert #line 1697 "util/configparser.y"
4745b7c0c8c1SCy Schubert         {
4746b7c0c8c1SCy Schubert 		OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4747b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4748b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4749b7c0c8c1SCy Schubert 		else cfg_parser->cfg->unblock_lan_zones =
4750b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4751b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4752b7c0c8c1SCy Schubert 	}
4753*46d2f618SCy Schubert #line 4754 "util/configparser.c"
4754b7c0c8c1SCy Schubert     break;
4755b7c0c8c1SCy Schubert 
4756*46d2f618SCy Schubert   case 463: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
4757*46d2f618SCy Schubert #line 1707 "util/configparser.y"
4758b7c0c8c1SCy Schubert         {
4759b7c0c8c1SCy Schubert 		OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4760b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4761b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4762b7c0c8c1SCy Schubert 		else cfg_parser->cfg->insecure_lan_zones =
4763b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4764b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4765b7c0c8c1SCy Schubert 	}
4766*46d2f618SCy Schubert #line 4767 "util/configparser.c"
4767b7c0c8c1SCy Schubert     break;
4768b7c0c8c1SCy Schubert 
4769*46d2f618SCy Schubert   case 464: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
4770*46d2f618SCy Schubert #line 1717 "util/configparser.y"
4771b7c0c8c1SCy Schubert         {
4772b7c0c8c1SCy Schubert 		OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4773b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4774b7c0c8c1SCy Schubert 			yyerror("memory size expected");
4775b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4776b7c0c8c1SCy Schubert 	}
4777*46d2f618SCy Schubert #line 4778 "util/configparser.c"
4778b7c0c8c1SCy Schubert     break;
4779b7c0c8c1SCy Schubert 
4780*46d2f618SCy Schubert   case 465: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
4781*46d2f618SCy Schubert #line 1725 "util/configparser.y"
4782b7c0c8c1SCy Schubert         {
4783b7c0c8c1SCy Schubert 		OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4784b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
4785b7c0c8c1SCy Schubert 			yyerror("number expected");
4786b7c0c8c1SCy Schubert 		} else {
4787b7c0c8c1SCy Schubert 			cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4788b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4789b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
4790b7c0c8c1SCy Schubert 		}
4791b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4792b7c0c8c1SCy Schubert 	}
4793*46d2f618SCy Schubert #line 4794 "util/configparser.c"
4794b7c0c8c1SCy Schubert     break;
4795b7c0c8c1SCy Schubert 
4796*46d2f618SCy Schubert   case 466: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
4797*46d2f618SCy Schubert #line 1738 "util/configparser.y"
4798b7c0c8c1SCy Schubert         {
4799b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4800b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4801b7c0c8c1SCy Schubert 			yyerror("number expected");
4802b7c0c8c1SCy Schubert 		else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4803b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4804b7c0c8c1SCy Schubert 	}
4805*46d2f618SCy Schubert #line 4806 "util/configparser.c"
4806b7c0c8c1SCy Schubert     break;
4807b7c0c8c1SCy Schubert 
4808*46d2f618SCy Schubert   case 467: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
4809*46d2f618SCy Schubert #line 1747 "util/configparser.y"
4810b7c0c8c1SCy Schubert         {
4811b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4812b7c0c8c1SCy Schubert 		verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4813b7c0c8c1SCy Schubert 			"removed, use infra-host-ttl)", (yyvsp[0].str));
4814b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4815b7c0c8c1SCy Schubert 	}
4816*46d2f618SCy Schubert #line 4817 "util/configparser.c"
4817b7c0c8c1SCy Schubert     break;
4818b7c0c8c1SCy Schubert 
4819*46d2f618SCy Schubert   case 468: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
4820*46d2f618SCy Schubert #line 1755 "util/configparser.y"
4821b7c0c8c1SCy Schubert         {
4822b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4823b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
4824b7c0c8c1SCy Schubert 			yyerror("number expected");
4825b7c0c8c1SCy Schubert 		else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4826b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4827b7c0c8c1SCy Schubert 	}
4828*46d2f618SCy Schubert #line 4829 "util/configparser.c"
4829b7c0c8c1SCy Schubert     break;
4830b7c0c8c1SCy Schubert 
4831*46d2f618SCy Schubert   case 469: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
4832*46d2f618SCy Schubert #line 1764 "util/configparser.y"
4833b7c0c8c1SCy Schubert         {
4834b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4835b7c0c8c1SCy Schubert 		verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4836b7c0c8c1SCy Schubert 			"(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4837b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4838b7c0c8c1SCy Schubert 	}
4839*46d2f618SCy Schubert #line 4840 "util/configparser.c"
4840b7c0c8c1SCy Schubert     break;
4841b7c0c8c1SCy Schubert 
4842*46d2f618SCy Schubert   case 470: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
4843*46d2f618SCy Schubert #line 1772 "util/configparser.y"
4844b7c0c8c1SCy Schubert         {
4845b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4846b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
4847b7c0c8c1SCy Schubert 			yyerror("number expected");
4848b7c0c8c1SCy Schubert 		} else {
4849b7c0c8c1SCy Schubert 			cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4850b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4851b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
4852b7c0c8c1SCy Schubert 		}
4853b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4854b7c0c8c1SCy Schubert 	}
4855*46d2f618SCy Schubert #line 4856 "util/configparser.c"
4856b7c0c8c1SCy Schubert     break;
4857b7c0c8c1SCy Schubert 
4858*46d2f618SCy Schubert   case 471: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
4859*46d2f618SCy Schubert #line 1785 "util/configparser.y"
4860b7c0c8c1SCy Schubert         {
4861b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4862b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4863b7c0c8c1SCy Schubert 			yyerror("number expected");
4864b7c0c8c1SCy Schubert 		else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4865b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4866b7c0c8c1SCy Schubert 	}
4867*46d2f618SCy Schubert #line 4868 "util/configparser.c"
4868b7c0c8c1SCy Schubert     break;
4869b7c0c8c1SCy Schubert 
4870*46d2f618SCy Schubert   case 472: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG  */
4871*46d2f618SCy Schubert #line 1794 "util/configparser.y"
4872b7c0c8c1SCy Schubert         {
4873b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4874b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4875b7c0c8c1SCy Schubert 			yyerror("number expected");
4876b7c0c8c1SCy Schubert 		else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4877b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4878b7c0c8c1SCy Schubert 	}
4879*46d2f618SCy Schubert #line 4880 "util/configparser.c"
4880b7c0c8c1SCy Schubert     break;
4881b7c0c8c1SCy Schubert 
4882*46d2f618SCy Schubert   case 473: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
4883*46d2f618SCy Schubert #line 1803 "util/configparser.y"
4884b7c0c8c1SCy Schubert         {
4885b7c0c8c1SCy Schubert 		OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4886b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4887b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4888b7c0c8c1SCy Schubert 		else cfg_parser->cfg->infra_keep_probing =
4889b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4890b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4891b7c0c8c1SCy Schubert 	}
4892*46d2f618SCy Schubert #line 4893 "util/configparser.c"
4893b7c0c8c1SCy Schubert     break;
4894b7c0c8c1SCy Schubert 
4895*46d2f618SCy Schubert   case 474: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
4896*46d2f618SCy Schubert #line 1813 "util/configparser.y"
4897b7c0c8c1SCy Schubert         {
4898b7c0c8c1SCy Schubert 		OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4899b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->target_fetch_policy);
4900b7c0c8c1SCy Schubert 		cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4901b7c0c8c1SCy Schubert 	}
4902*46d2f618SCy Schubert #line 4903 "util/configparser.c"
4903b7c0c8c1SCy Schubert     break;
4904b7c0c8c1SCy Schubert 
4905*46d2f618SCy Schubert   case 475: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
4906*46d2f618SCy Schubert #line 1820 "util/configparser.y"
4907b7c0c8c1SCy Schubert         {
4908b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4909b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4910b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4911b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_short_bufsize =
4912b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4913b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4914b7c0c8c1SCy Schubert 	}
4915*46d2f618SCy Schubert #line 4916 "util/configparser.c"
4916b7c0c8c1SCy Schubert     break;
4917b7c0c8c1SCy Schubert 
4918*46d2f618SCy Schubert   case 476: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
4919*46d2f618SCy Schubert #line 1830 "util/configparser.y"
4920b7c0c8c1SCy Schubert         {
4921b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
4922b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4923b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4924b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_large_queries =
4925b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4926b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4927b7c0c8c1SCy Schubert 	}
4928*46d2f618SCy Schubert #line 4929 "util/configparser.c"
4929b7c0c8c1SCy Schubert     break;
4930b7c0c8c1SCy Schubert 
4931*46d2f618SCy Schubert   case 477: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
4932*46d2f618SCy Schubert #line 1840 "util/configparser.y"
4933b7c0c8c1SCy Schubert         {
4934b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
4935b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4936b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4937b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_glue =
4938b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4939b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4940b7c0c8c1SCy Schubert 	}
4941*46d2f618SCy Schubert #line 4942 "util/configparser.c"
4942b7c0c8c1SCy Schubert     break;
4943b7c0c8c1SCy Schubert 
4944*46d2f618SCy Schubert   case 478: /* server_harden_unverified_glue: VAR_HARDEN_UNVERIFIED_GLUE STRING_ARG  */
4945*46d2f618SCy Schubert #line 1850 "util/configparser.y"
4946*46d2f618SCy Schubert        {
4947*46d2f618SCy Schubert                OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
4948*46d2f618SCy Schubert                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4949*46d2f618SCy Schubert                        yyerror("expected yes or no.");
4950*46d2f618SCy Schubert                else cfg_parser->cfg->harden_unverified_glue =
4951*46d2f618SCy Schubert                        (strcmp((yyvsp[0].str), "yes")==0);
4952*46d2f618SCy Schubert                free((yyvsp[0].str));
4953*46d2f618SCy Schubert        }
4954*46d2f618SCy Schubert #line 4955 "util/configparser.c"
4955*46d2f618SCy Schubert     break;
4956*46d2f618SCy Schubert 
4957*46d2f618SCy Schubert   case 479: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
4958*46d2f618SCy Schubert #line 1860 "util/configparser.y"
4959b7c0c8c1SCy Schubert         {
4960b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
4961b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4962b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4963b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_dnssec_stripped =
4964b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4965b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4966b7c0c8c1SCy Schubert 	}
4967*46d2f618SCy Schubert #line 4968 "util/configparser.c"
4968b7c0c8c1SCy Schubert     break;
4969b7c0c8c1SCy Schubert 
4970*46d2f618SCy Schubert   case 480: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
4971*46d2f618SCy Schubert #line 1870 "util/configparser.y"
4972b7c0c8c1SCy Schubert         {
4973b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
4974b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4975b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4976b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_below_nxdomain =
4977b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4978b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4979b7c0c8c1SCy Schubert 	}
4980*46d2f618SCy Schubert #line 4981 "util/configparser.c"
4981b7c0c8c1SCy Schubert     break;
4982b7c0c8c1SCy Schubert 
4983*46d2f618SCy Schubert   case 481: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
4984*46d2f618SCy Schubert #line 1880 "util/configparser.y"
4985b7c0c8c1SCy Schubert         {
4986b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
4987b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4988b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
4989b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_referral_path =
4990b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
4991b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
4992b7c0c8c1SCy Schubert 	}
4993*46d2f618SCy Schubert #line 4994 "util/configparser.c"
4994b7c0c8c1SCy Schubert     break;
4995b7c0c8c1SCy Schubert 
4996*46d2f618SCy Schubert   case 482: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
4997*46d2f618SCy Schubert #line 1890 "util/configparser.y"
4998b7c0c8c1SCy Schubert         {
4999b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5000b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5001b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5002b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_algo_downgrade =
5003b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5004b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5005b7c0c8c1SCy Schubert 	}
5006*46d2f618SCy Schubert #line 5007 "util/configparser.c"
5007b7c0c8c1SCy Schubert     break;
5008b7c0c8c1SCy Schubert 
5009*46d2f618SCy Schubert   case 483: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG  */
5010*46d2f618SCy Schubert #line 1900 "util/configparser.y"
5011b7c0c8c1SCy Schubert         {
5012b7c0c8c1SCy Schubert 		OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5013b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5014b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5015b7c0c8c1SCy Schubert 		else cfg_parser->cfg->harden_unknown_additional =
5016b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5017b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5018b7c0c8c1SCy Schubert 	}
5019*46d2f618SCy Schubert #line 5020 "util/configparser.c"
5020b7c0c8c1SCy Schubert     break;
5021b7c0c8c1SCy Schubert 
5022*46d2f618SCy Schubert   case 484: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
5023*46d2f618SCy Schubert #line 1910 "util/configparser.y"
5024b7c0c8c1SCy Schubert         {
5025b7c0c8c1SCy Schubert 		OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5026b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5027b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5028b7c0c8c1SCy Schubert 		else cfg_parser->cfg->use_caps_bits_for_id =
5029b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5030b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5031b7c0c8c1SCy Schubert 	}
5032*46d2f618SCy Schubert #line 5033 "util/configparser.c"
5033b7c0c8c1SCy Schubert     break;
5034b7c0c8c1SCy Schubert 
5035*46d2f618SCy Schubert   case 485: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
5036*46d2f618SCy Schubert #line 1920 "util/configparser.y"
5037b7c0c8c1SCy Schubert         {
5038b7c0c8c1SCy Schubert 		OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5039b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5040b7c0c8c1SCy Schubert 			yyerror("out of memory");
5041b7c0c8c1SCy Schubert 	}
5042*46d2f618SCy Schubert #line 5043 "util/configparser.c"
5043b7c0c8c1SCy Schubert     break;
5044b7c0c8c1SCy Schubert 
5045*46d2f618SCy Schubert   case 486: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
5046*46d2f618SCy Schubert #line 1927 "util/configparser.y"
5047b7c0c8c1SCy Schubert         {
5048b7c0c8c1SCy Schubert 		OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5049b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5050b7c0c8c1SCy Schubert 			yyerror("out of memory");
5051b7c0c8c1SCy Schubert 	}
5052*46d2f618SCy Schubert #line 5053 "util/configparser.c"
5053b7c0c8c1SCy Schubert     break;
5054b7c0c8c1SCy Schubert 
5055*46d2f618SCy Schubert   case 487: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
5056*46d2f618SCy Schubert #line 1934 "util/configparser.y"
5057b7c0c8c1SCy Schubert         {
5058b7c0c8c1SCy Schubert 		OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5059b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5060b7c0c8c1SCy Schubert 			yyerror("out of memory");
5061b7c0c8c1SCy Schubert 	}
5062*46d2f618SCy Schubert #line 5063 "util/configparser.c"
5063b7c0c8c1SCy Schubert     break;
5064b7c0c8c1SCy Schubert 
5065*46d2f618SCy Schubert   case 488: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
5066*46d2f618SCy Schubert #line 1941 "util/configparser.y"
5067b7c0c8c1SCy Schubert         {
5068b7c0c8c1SCy Schubert 		OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5069b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5070b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5071b7c0c8c1SCy Schubert 		else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5072b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5073b7c0c8c1SCy Schubert 	}
5074*46d2f618SCy Schubert #line 5075 "util/configparser.c"
5075b7c0c8c1SCy Schubert     break;
5076b7c0c8c1SCy Schubert 
5077*46d2f618SCy Schubert   case 489: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
5078*46d2f618SCy Schubert #line 1950 "util/configparser.y"
5079b7c0c8c1SCy Schubert         {
5080b7c0c8c1SCy Schubert 		OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5081b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5082b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5083b7c0c8c1SCy Schubert 		else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5084b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5085b7c0c8c1SCy Schubert 	}
5086*46d2f618SCy Schubert #line 5087 "util/configparser.c"
5087b7c0c8c1SCy Schubert     break;
5088b7c0c8c1SCy Schubert 
5089*46d2f618SCy Schubert   case 490: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
5090*46d2f618SCy Schubert #line 1959 "util/configparser.y"
5091b7c0c8c1SCy Schubert         {
5092b7c0c8c1SCy Schubert 		OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5093b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5094b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5095b7c0c8c1SCy Schubert 		else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5096b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5097b7c0c8c1SCy Schubert 	}
5098*46d2f618SCy Schubert #line 5099 "util/configparser.c"
5099b7c0c8c1SCy Schubert     break;
5100b7c0c8c1SCy Schubert 
5101*46d2f618SCy Schubert   case 491: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
5102*46d2f618SCy Schubert #line 1968 "util/configparser.y"
5103b7c0c8c1SCy Schubert         {
5104b7c0c8c1SCy Schubert 		OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5105b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5106b7c0c8c1SCy Schubert 			yyerror("number expected");
5107b7c0c8c1SCy Schubert 		else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5108b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5109b7c0c8c1SCy Schubert 	}
5110*46d2f618SCy Schubert #line 5111 "util/configparser.c"
5111b7c0c8c1SCy Schubert     break;
5112b7c0c8c1SCy Schubert 
5113*46d2f618SCy Schubert   case 492: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
5114*46d2f618SCy Schubert #line 1977 "util/configparser.y"
5115b7c0c8c1SCy Schubert         {
5116b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5117b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5118b7c0c8c1SCy Schubert 			yyerror("out of memory");
5119b7c0c8c1SCy Schubert 	}
5120*46d2f618SCy Schubert #line 5121 "util/configparser.c"
5121b7c0c8c1SCy Schubert     break;
5122b7c0c8c1SCy Schubert 
5123*46d2f618SCy Schubert   case 493: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
5124*46d2f618SCy Schubert #line 1984 "util/configparser.y"
5125b7c0c8c1SCy Schubert         {
5126b7c0c8c1SCy Schubert 		OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5127b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5128b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5129b7c0c8c1SCy Schubert 		else cfg_parser->cfg->donotquery_localhost =
5130b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5131b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5132b7c0c8c1SCy Schubert 	}
5133*46d2f618SCy Schubert #line 5134 "util/configparser.c"
5134b7c0c8c1SCy Schubert     break;
5135b7c0c8c1SCy Schubert 
5136*46d2f618SCy Schubert   case 494: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
5137*46d2f618SCy Schubert #line 1994 "util/configparser.y"
5138b7c0c8c1SCy Schubert         {
5139b7c0c8c1SCy Schubert 		OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5140b7c0c8c1SCy Schubert 		validate_acl_action((yyvsp[0].str));
5141b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5142b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding acl");
5143b7c0c8c1SCy Schubert 	}
5144*46d2f618SCy Schubert #line 5145 "util/configparser.c"
5145b7c0c8c1SCy Schubert     break;
5146b7c0c8c1SCy Schubert 
5147*46d2f618SCy Schubert   case 495: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG  */
5148*46d2f618SCy Schubert #line 2002 "util/configparser.y"
5149b7c0c8c1SCy Schubert         {
5150b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5151b7c0c8c1SCy Schubert 		validate_acl_action((yyvsp[0].str));
5152b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(
5153b7c0c8c1SCy Schubert 			&cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5154b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding acl");
5155b7c0c8c1SCy Schubert 	}
5156*46d2f618SCy Schubert #line 5157 "util/configparser.c"
5157b7c0c8c1SCy Schubert     break;
5158b7c0c8c1SCy Schubert 
5159*46d2f618SCy Schubert   case 496: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
5160*46d2f618SCy Schubert #line 2011 "util/configparser.y"
5161b7c0c8c1SCy Schubert         {
5162b7c0c8c1SCy Schubert 		OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5163b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->module_conf);
5164b7c0c8c1SCy Schubert 		cfg_parser->cfg->module_conf = (yyvsp[0].str);
5165b7c0c8c1SCy Schubert 	}
5166*46d2f618SCy Schubert #line 5167 "util/configparser.c"
5167b7c0c8c1SCy Schubert     break;
5168b7c0c8c1SCy Schubert 
5169*46d2f618SCy Schubert   case 497: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
5170*46d2f618SCy Schubert #line 2018 "util/configparser.y"
5171b7c0c8c1SCy Schubert         {
5172b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5173b7c0c8c1SCy Schubert 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5174b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_date_override = 0;
5175b7c0c8c1SCy Schubert 		} else if(strlen((yyvsp[0].str)) == 14) {
5176b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_date_override =
5177b7c0c8c1SCy Schubert 				cfg_convert_timeval((yyvsp[0].str));
5178b7c0c8c1SCy Schubert 			if(!cfg_parser->cfg->val_date_override)
5179b7c0c8c1SCy Schubert 				yyerror("bad date/time specification");
5180b7c0c8c1SCy Schubert 		} else {
5181b7c0c8c1SCy Schubert 			if(atoi((yyvsp[0].str)) == 0)
5182b7c0c8c1SCy Schubert 				yyerror("number expected");
5183b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5184b7c0c8c1SCy Schubert 		}
5185b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5186b7c0c8c1SCy Schubert 	}
5187*46d2f618SCy Schubert #line 5188 "util/configparser.c"
5188b7c0c8c1SCy Schubert     break;
5189b7c0c8c1SCy Schubert 
5190*46d2f618SCy Schubert   case 498: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
5191*46d2f618SCy Schubert #line 2036 "util/configparser.y"
5192b7c0c8c1SCy Schubert         {
5193b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5194b7c0c8c1SCy Schubert 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5195b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_sig_skew_min = 0;
5196b7c0c8c1SCy Schubert 		} else {
5197b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5198b7c0c8c1SCy Schubert 			if(!cfg_parser->cfg->val_sig_skew_min)
5199b7c0c8c1SCy Schubert 				yyerror("number expected");
5200b7c0c8c1SCy Schubert 		}
5201b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5202b7c0c8c1SCy Schubert 	}
5203*46d2f618SCy Schubert #line 5204 "util/configparser.c"
5204b7c0c8c1SCy Schubert     break;
5205b7c0c8c1SCy Schubert 
5206*46d2f618SCy Schubert   case 499: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
5207*46d2f618SCy Schubert #line 2049 "util/configparser.y"
5208b7c0c8c1SCy Schubert         {
5209b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5210b7c0c8c1SCy Schubert 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5211b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_sig_skew_max = 0;
5212b7c0c8c1SCy Schubert 		} else {
5213b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5214b7c0c8c1SCy Schubert 			if(!cfg_parser->cfg->val_sig_skew_max)
5215b7c0c8c1SCy Schubert 				yyerror("number expected");
5216b7c0c8c1SCy Schubert 		}
5217b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5218b7c0c8c1SCy Schubert 	}
5219*46d2f618SCy Schubert #line 5220 "util/configparser.c"
5220b7c0c8c1SCy Schubert     break;
5221b7c0c8c1SCy Schubert 
5222*46d2f618SCy Schubert   case 500: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
5223*46d2f618SCy Schubert #line 2062 "util/configparser.y"
5224b7c0c8c1SCy Schubert         {
5225b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5226b7c0c8c1SCy Schubert 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5227b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_max_restart = 0;
5228b7c0c8c1SCy Schubert 		} else {
5229b7c0c8c1SCy Schubert 			cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5230b7c0c8c1SCy Schubert 			if(!cfg_parser->cfg->val_max_restart)
5231b7c0c8c1SCy Schubert 				yyerror("number expected");
5232b7c0c8c1SCy Schubert 		}
5233b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5234b7c0c8c1SCy Schubert 	}
5235*46d2f618SCy Schubert #line 5236 "util/configparser.c"
5236b7c0c8c1SCy Schubert     break;
5237b7c0c8c1SCy Schubert 
5238*46d2f618SCy Schubert   case 501: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
5239*46d2f618SCy Schubert #line 2075 "util/configparser.y"
5240b7c0c8c1SCy Schubert         {
5241b7c0c8c1SCy Schubert 		OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5242b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5243b7c0c8c1SCy Schubert 			yyerror("number expected");
5244b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5245b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5246b7c0c8c1SCy Schubert 	}
5247*46d2f618SCy Schubert #line 5248 "util/configparser.c"
5248b7c0c8c1SCy Schubert     break;
5249b7c0c8c1SCy Schubert 
5250*46d2f618SCy Schubert   case 502: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
5251*46d2f618SCy Schubert #line 2084 "util/configparser.y"
5252b7c0c8c1SCy Schubert         {
5253b7c0c8c1SCy Schubert 		OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5254b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5255b7c0c8c1SCy Schubert 			yyerror("number expected");
5256b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5257b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5258b7c0c8c1SCy Schubert 	}
5259*46d2f618SCy Schubert #line 5260 "util/configparser.c"
5260b7c0c8c1SCy Schubert     break;
5261b7c0c8c1SCy Schubert 
5262*46d2f618SCy Schubert   case 503: /* server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG  */
5263*46d2f618SCy Schubert #line 2093 "util/configparser.y"
5264335c7cdaSCy Schubert         {
5265335c7cdaSCy Schubert 		OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5266335c7cdaSCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5267335c7cdaSCy Schubert 			yyerror("number expected");
5268335c7cdaSCy Schubert 		else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5269335c7cdaSCy Schubert 		free((yyvsp[0].str));
5270335c7cdaSCy Schubert 	}
5271*46d2f618SCy Schubert #line 5272 "util/configparser.c"
5272335c7cdaSCy Schubert     break;
5273335c7cdaSCy Schubert 
5274*46d2f618SCy Schubert   case 504: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
5275*46d2f618SCy Schubert #line 2102 "util/configparser.y"
5276b7c0c8c1SCy Schubert         {
5277b7c0c8c1SCy Schubert 		OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5278b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5279b7c0c8c1SCy Schubert 			yyerror("number expected");
5280b7c0c8c1SCy Schubert 		else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5281b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5282b7c0c8c1SCy Schubert 	}
5283*46d2f618SCy Schubert #line 5284 "util/configparser.c"
5284b7c0c8c1SCy Schubert     break;
5285b7c0c8c1SCy Schubert 
5286*46d2f618SCy Schubert   case 505: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
5287*46d2f618SCy Schubert #line 2111 "util/configparser.y"
5288b7c0c8c1SCy Schubert         {
5289b7c0c8c1SCy Schubert 		OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5290b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5291b7c0c8c1SCy Schubert 			yyerror("number expected");
5292b7c0c8c1SCy Schubert 		else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5293b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5294b7c0c8c1SCy Schubert 	}
5295*46d2f618SCy Schubert #line 5296 "util/configparser.c"
5296b7c0c8c1SCy Schubert     break;
5297b7c0c8c1SCy Schubert 
5298*46d2f618SCy Schubert   case 506: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
5299*46d2f618SCy Schubert #line 2120 "util/configparser.y"
5300b7c0c8c1SCy Schubert         {
5301b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5302b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5303b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5304b7c0c8c1SCy Schubert 		else cfg_parser->cfg->val_clean_additional =
5305b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5306b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5307b7c0c8c1SCy Schubert 	}
5308*46d2f618SCy Schubert #line 5309 "util/configparser.c"
5309b7c0c8c1SCy Schubert     break;
5310b7c0c8c1SCy Schubert 
5311*46d2f618SCy Schubert   case 507: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
5312*46d2f618SCy Schubert #line 2130 "util/configparser.y"
5313b7c0c8c1SCy Schubert         {
5314b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5315b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5316b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5317b7c0c8c1SCy Schubert 		else cfg_parser->cfg->val_permissive_mode =
5318b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5319b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5320b7c0c8c1SCy Schubert 	}
5321*46d2f618SCy Schubert #line 5322 "util/configparser.c"
5322b7c0c8c1SCy Schubert     break;
5323b7c0c8c1SCy Schubert 
5324*46d2f618SCy Schubert   case 508: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
5325*46d2f618SCy Schubert #line 2140 "util/configparser.y"
5326b7c0c8c1SCy Schubert         {
5327b7c0c8c1SCy Schubert 		OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5328b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5329b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5330b7c0c8c1SCy Schubert 		else
5331b7c0c8c1SCy Schubert 			cfg_parser->cfg->aggressive_nsec =
5332b7c0c8c1SCy Schubert 				(strcmp((yyvsp[0].str), "yes")==0);
5333b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5334b7c0c8c1SCy Schubert 	}
5335*46d2f618SCy Schubert #line 5336 "util/configparser.c"
5336b7c0c8c1SCy Schubert     break;
5337b7c0c8c1SCy Schubert 
5338*46d2f618SCy Schubert   case 509: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
5339*46d2f618SCy Schubert #line 2151 "util/configparser.y"
5340b7c0c8c1SCy Schubert         {
5341b7c0c8c1SCy Schubert 		OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5342b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5343b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5344b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5345b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5346b7c0c8c1SCy Schubert 	}
5347*46d2f618SCy Schubert #line 5348 "util/configparser.c"
5348b7c0c8c1SCy Schubert     break;
5349b7c0c8c1SCy Schubert 
5350*46d2f618SCy Schubert   case 510: /* server_disable_edns_do: VAR_DISABLE_EDNS_DO STRING_ARG  */
5351*46d2f618SCy Schubert #line 2160 "util/configparser.y"
5352b7c0c8c1SCy Schubert         {
5353b7c0c8c1SCy Schubert 		OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5354b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5355b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5356b7c0c8c1SCy Schubert 		else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5357b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5358b7c0c8c1SCy Schubert 	}
5359*46d2f618SCy Schubert #line 5360 "util/configparser.c"
5360b7c0c8c1SCy Schubert     break;
5361b7c0c8c1SCy Schubert 
5362*46d2f618SCy Schubert   case 511: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
5363*46d2f618SCy Schubert #line 2169 "util/configparser.y"
5364b7c0c8c1SCy Schubert         {
5365b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5366b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5367b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5368b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5369b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5370b7c0c8c1SCy Schubert 	}
5371*46d2f618SCy Schubert #line 5372 "util/configparser.c"
5372b7c0c8c1SCy Schubert     break;
5373b7c0c8c1SCy Schubert 
5374*46d2f618SCy Schubert   case 512: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
5375*46d2f618SCy Schubert #line 2178 "util/configparser.y"
5376b7c0c8c1SCy Schubert         {
5377b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5378b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5379b7c0c8c1SCy Schubert 			yyerror("number expected");
5380b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5381b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5382b7c0c8c1SCy Schubert 	}
5383*46d2f618SCy Schubert #line 5384 "util/configparser.c"
5384b7c0c8c1SCy Schubert     break;
5385b7c0c8c1SCy Schubert 
5386*46d2f618SCy Schubert   case 513: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
5387*46d2f618SCy Schubert #line 2187 "util/configparser.y"
5388b7c0c8c1SCy Schubert         {
5389b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5390b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5391b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5392b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5393b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5394b7c0c8c1SCy Schubert 	}
5395*46d2f618SCy Schubert #line 5396 "util/configparser.c"
5396b7c0c8c1SCy Schubert     break;
5397b7c0c8c1SCy Schubert 
5398*46d2f618SCy Schubert   case 514: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
5399*46d2f618SCy Schubert #line 2196 "util/configparser.y"
5400b7c0c8c1SCy Schubert         {
5401b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5402b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5403b7c0c8c1SCy Schubert 			yyerror("number expected");
5404b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5405b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5406b7c0c8c1SCy Schubert 	}
5407*46d2f618SCy Schubert #line 5408 "util/configparser.c"
5408b7c0c8c1SCy Schubert     break;
5409b7c0c8c1SCy Schubert 
5410*46d2f618SCy Schubert   case 515: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
5411*46d2f618SCy Schubert #line 2205 "util/configparser.y"
5412b7c0c8c1SCy Schubert         {
5413b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5414b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5415b7c0c8c1SCy Schubert 			yyerror("number expected");
5416b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5417b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5418b7c0c8c1SCy Schubert 	}
5419*46d2f618SCy Schubert #line 5420 "util/configparser.c"
5420b7c0c8c1SCy Schubert     break;
5421b7c0c8c1SCy Schubert 
5422*46d2f618SCy Schubert   case 516: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG  */
5423*46d2f618SCy Schubert #line 2214 "util/configparser.y"
5424b7c0c8c1SCy Schubert         {
5425b7c0c8c1SCy Schubert 		OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5426b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5427b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5428b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5429b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5430b7c0c8c1SCy Schubert 	}
5431*46d2f618SCy Schubert #line 5432 "util/configparser.c"
5432b7c0c8c1SCy Schubert     break;
5433b7c0c8c1SCy Schubert 
5434*46d2f618SCy Schubert   case 517: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
5435*46d2f618SCy Schubert #line 2223 "util/configparser.y"
5436b7c0c8c1SCy Schubert         {
5437b7c0c8c1SCy Schubert 		OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5438b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5439b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5440b7c0c8c1SCy Schubert 		else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5441b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5442b7c0c8c1SCy Schubert 	}
5443*46d2f618SCy Schubert #line 5444 "util/configparser.c"
5444b7c0c8c1SCy Schubert     break;
5445b7c0c8c1SCy Schubert 
5446*46d2f618SCy Schubert   case 518: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
5447*46d2f618SCy Schubert #line 2232 "util/configparser.y"
5448b7c0c8c1SCy Schubert         {
5449b7c0c8c1SCy Schubert 		OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5450b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5451b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5452b7c0c8c1SCy Schubert #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5453b7c0c8c1SCy Schubert 		else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5454b7c0c8c1SCy Schubert 		if(fake_dsa)
5455b7c0c8c1SCy Schubert 			log_warn("test option fake_dsa is enabled");
5456b7c0c8c1SCy Schubert #endif
5457b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5458b7c0c8c1SCy Schubert 	}
5459*46d2f618SCy Schubert #line 5460 "util/configparser.c"
5460b7c0c8c1SCy Schubert     break;
5461b7c0c8c1SCy Schubert 
5462*46d2f618SCy Schubert   case 519: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
5463*46d2f618SCy Schubert #line 2245 "util/configparser.y"
5464b7c0c8c1SCy Schubert         {
5465b7c0c8c1SCy Schubert 		OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5466b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5467b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5468b7c0c8c1SCy Schubert #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5469b7c0c8c1SCy Schubert 		else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5470b7c0c8c1SCy Schubert 		if(fake_sha1)
5471b7c0c8c1SCy Schubert 			log_warn("test option fake_sha1 is enabled");
5472b7c0c8c1SCy Schubert #endif
5473b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5474b7c0c8c1SCy Schubert 	}
5475*46d2f618SCy Schubert #line 5476 "util/configparser.c"
5476b7c0c8c1SCy Schubert     break;
5477b7c0c8c1SCy Schubert 
5478*46d2f618SCy Schubert   case 520: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
5479*46d2f618SCy Schubert #line 2258 "util/configparser.y"
5480b7c0c8c1SCy Schubert         {
5481b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5482b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5483b7c0c8c1SCy Schubert 			yyerror("number expected");
5484b7c0c8c1SCy Schubert 		else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5485b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5486b7c0c8c1SCy Schubert 	}
5487*46d2f618SCy Schubert #line 5488 "util/configparser.c"
5488b7c0c8c1SCy Schubert     break;
5489b7c0c8c1SCy Schubert 
5490*46d2f618SCy Schubert   case 521: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
5491*46d2f618SCy Schubert #line 2267 "util/configparser.y"
5492b7c0c8c1SCy Schubert         {
5493b7c0c8c1SCy Schubert 		OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5494b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->val_nsec3_key_iterations);
5495b7c0c8c1SCy Schubert 		cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5496b7c0c8c1SCy Schubert 	}
5497*46d2f618SCy Schubert #line 5498 "util/configparser.c"
5498b7c0c8c1SCy Schubert     break;
5499b7c0c8c1SCy Schubert 
5500*46d2f618SCy Schubert   case 522: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
5501*46d2f618SCy Schubert #line 2274 "util/configparser.y"
5502b7c0c8c1SCy Schubert         {
5503b7c0c8c1SCy Schubert 		OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5504b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5505b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5506b7c0c8c1SCy Schubert 		else	cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5507b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5508b7c0c8c1SCy Schubert 	}
5509*46d2f618SCy Schubert #line 5510 "util/configparser.c"
5510b7c0c8c1SCy Schubert     break;
5511b7c0c8c1SCy Schubert 
5512*46d2f618SCy Schubert   case 523: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
5513*46d2f618SCy Schubert #line 2283 "util/configparser.y"
5514b7c0c8c1SCy Schubert         {
5515b7c0c8c1SCy Schubert 		OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5516b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5517b7c0c8c1SCy Schubert 			yyerror("number expected");
5518b7c0c8c1SCy Schubert 		else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5519b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5520b7c0c8c1SCy Schubert 	}
5521*46d2f618SCy Schubert #line 5522 "util/configparser.c"
5522b7c0c8c1SCy Schubert     break;
5523b7c0c8c1SCy Schubert 
5524*46d2f618SCy Schubert   case 524: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
5525*46d2f618SCy Schubert #line 2292 "util/configparser.y"
5526b7c0c8c1SCy Schubert         {
5527b7c0c8c1SCy Schubert 		OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5528b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5529b7c0c8c1SCy Schubert 			yyerror("number expected");
5530b7c0c8c1SCy Schubert 		else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5531b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5532b7c0c8c1SCy Schubert 	}
5533*46d2f618SCy Schubert #line 5534 "util/configparser.c"
5534b7c0c8c1SCy Schubert     break;
5535b7c0c8c1SCy Schubert 
5536*46d2f618SCy Schubert   case 525: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
5537*46d2f618SCy Schubert #line 2301 "util/configparser.y"
5538b7c0c8c1SCy Schubert         {
5539b7c0c8c1SCy Schubert 		OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5540b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5541b7c0c8c1SCy Schubert 			yyerror("number expected");
5542b7c0c8c1SCy Schubert 		else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5543b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5544b7c0c8c1SCy Schubert 	}
5545*46d2f618SCy Schubert #line 5546 "util/configparser.c"
5546b7c0c8c1SCy Schubert     break;
5547b7c0c8c1SCy Schubert 
5548*46d2f618SCy Schubert   case 526: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
5549*46d2f618SCy Schubert #line 2310 "util/configparser.y"
5550b7c0c8c1SCy Schubert         {
5551b7c0c8c1SCy Schubert 		OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5552b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5553b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5554b7c0c8c1SCy Schubert 		else cfg_parser->cfg->permit_small_holddown =
5555b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5556b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5557b7c0c8c1SCy Schubert 	}
5558*46d2f618SCy Schubert #line 5559 "util/configparser.c"
5559b7c0c8c1SCy Schubert     break;
5560b7c0c8c1SCy Schubert 
5561*46d2f618SCy Schubert   case 527: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
5562*46d2f618SCy Schubert #line 2320 "util/configparser.y"
5563b7c0c8c1SCy Schubert         {
5564b7c0c8c1SCy Schubert 		OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5565b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5566b7c0c8c1SCy Schubert 			yyerror("memory size expected");
5567b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5568b7c0c8c1SCy Schubert 	}
5569*46d2f618SCy Schubert #line 5570 "util/configparser.c"
5570b7c0c8c1SCy Schubert     break;
5571b7c0c8c1SCy Schubert 
5572*46d2f618SCy Schubert   case 528: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
5573*46d2f618SCy Schubert #line 2328 "util/configparser.y"
5574b7c0c8c1SCy Schubert         {
5575b7c0c8c1SCy Schubert 		OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5576b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
5577b7c0c8c1SCy Schubert 			yyerror("number expected");
5578b7c0c8c1SCy Schubert 		} else {
5579b7c0c8c1SCy Schubert 			cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5580b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5581b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
5582b7c0c8c1SCy Schubert 		}
5583b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5584b7c0c8c1SCy Schubert 	}
5585*46d2f618SCy Schubert #line 5586 "util/configparser.c"
5586b7c0c8c1SCy Schubert     break;
5587b7c0c8c1SCy Schubert 
5588*46d2f618SCy Schubert   case 529: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
5589*46d2f618SCy Schubert #line 2341 "util/configparser.y"
5590b7c0c8c1SCy Schubert         {
5591b7c0c8c1SCy Schubert 		OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5592b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5593b7c0c8c1SCy Schubert 			yyerror("memory size expected");
5594b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5595b7c0c8c1SCy Schubert 	}
5596*46d2f618SCy Schubert #line 5597 "util/configparser.c"
5597b7c0c8c1SCy Schubert     break;
5598b7c0c8c1SCy Schubert 
5599*46d2f618SCy Schubert   case 530: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
5600*46d2f618SCy Schubert #line 2349 "util/configparser.y"
5601b7c0c8c1SCy Schubert         {
5602b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5603b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5604b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5605b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5606b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
5607b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
5608b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "block_a")!=0
5609b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
5610b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5611b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
5612b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_deny")!=0
5613b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_null")!=0
5614b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "noview")!=0
5615b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5616b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
5617b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
5618b7c0c8c1SCy Schubert 			yyerror("local-zone type: expected static, deny, "
5619b7c0c8c1SCy Schubert 				"refuse, redirect, transparent, "
5620b7c0c8c1SCy Schubert 				"typetransparent, inform, inform_deny, "
5621b7c0c8c1SCy Schubert 				"inform_redirect, always_transparent, block_a,"
5622b7c0c8c1SCy Schubert 				"always_refuse, always_nxdomain, "
5623b7c0c8c1SCy Schubert 				"always_nodata, always_deny, always_null, "
5624b7c0c8c1SCy Schubert 				"noview, nodefault or ipset");
5625b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5626b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5627b7c0c8c1SCy Schubert 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5628b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5629b7c0c8c1SCy Schubert 				local_zones_nodefault, (yyvsp[-1].str)))
5630b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
5631b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5632b7c0c8c1SCy Schubert #ifdef USE_IPSET
5633b7c0c8c1SCy Schubert 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
5634b7c0c8c1SCy Schubert 			size_t len = strlen((yyvsp[-1].str));
5635b7c0c8c1SCy Schubert 			/* Make sure to add the trailing dot.
5636b7c0c8c1SCy Schubert 			 * These are str compared to domain names. */
5637b7c0c8c1SCy Schubert 			if((yyvsp[-1].str)[len-1] != '.') {
5638b7c0c8c1SCy Schubert 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5639b7c0c8c1SCy Schubert 					fatal_exit("out of memory adding local-zone");
5640b7c0c8c1SCy Schubert 				}
5641b7c0c8c1SCy Schubert 				(yyvsp[-1].str)[len] = '.';
5642b7c0c8c1SCy Schubert 				(yyvsp[-1].str)[len+1] = 0;
5643b7c0c8c1SCy Schubert 			}
5644b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5645b7c0c8c1SCy Schubert 				local_zones_ipset, (yyvsp[-1].str)))
5646b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
5647b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5648b7c0c8c1SCy Schubert #endif
5649b7c0c8c1SCy Schubert 		} else {
5650b7c0c8c1SCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5651b7c0c8c1SCy Schubert 				(yyvsp[-1].str), (yyvsp[0].str)))
5652b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
5653b7c0c8c1SCy Schubert 		}
5654b7c0c8c1SCy Schubert 	}
5655*46d2f618SCy Schubert #line 5656 "util/configparser.c"
5656b7c0c8c1SCy Schubert     break;
5657b7c0c8c1SCy Schubert 
5658*46d2f618SCy Schubert   case 531: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
5659*46d2f618SCy Schubert #line 2405 "util/configparser.y"
5660b7c0c8c1SCy Schubert         {
5661b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5662b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5663b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding local-data");
5664b7c0c8c1SCy Schubert 	}
5665*46d2f618SCy Schubert #line 5666 "util/configparser.c"
5666b7c0c8c1SCy Schubert     break;
5667b7c0c8c1SCy Schubert 
5668*46d2f618SCy Schubert   case 532: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
5669*46d2f618SCy Schubert #line 2412 "util/configparser.y"
5670b7c0c8c1SCy Schubert         {
5671b7c0c8c1SCy Schubert 		char* ptr;
5672b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5673b7c0c8c1SCy Schubert 		ptr = cfg_ptr_reverse((yyvsp[0].str));
5674b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5675b7c0c8c1SCy Schubert 		if(ptr) {
5676b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5677b7c0c8c1SCy Schubert 				local_data, ptr))
5678b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-data");
5679b7c0c8c1SCy Schubert 		} else {
5680b7c0c8c1SCy Schubert 			yyerror("local-data-ptr could not be reversed");
5681b7c0c8c1SCy Schubert 		}
5682b7c0c8c1SCy Schubert 	}
5683*46d2f618SCy Schubert #line 5684 "util/configparser.c"
5684b7c0c8c1SCy Schubert     break;
5685b7c0c8c1SCy Schubert 
5686*46d2f618SCy Schubert   case 533: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
5687*46d2f618SCy Schubert #line 2427 "util/configparser.y"
5688b7c0c8c1SCy Schubert         {
5689b7c0c8c1SCy Schubert 		OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5690b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5691b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5692b7c0c8c1SCy Schubert 		else cfg_parser->cfg->minimal_responses =
5693b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5694b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5695b7c0c8c1SCy Schubert 	}
5696*46d2f618SCy Schubert #line 5697 "util/configparser.c"
5697b7c0c8c1SCy Schubert     break;
5698b7c0c8c1SCy Schubert 
5699*46d2f618SCy Schubert   case 534: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
5700*46d2f618SCy Schubert #line 2437 "util/configparser.y"
5701b7c0c8c1SCy Schubert         {
5702b7c0c8c1SCy Schubert 		OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5703b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5704b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5705b7c0c8c1SCy Schubert 		else cfg_parser->cfg->rrset_roundrobin =
5706b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
5707b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5708b7c0c8c1SCy Schubert 	}
5709*46d2f618SCy Schubert #line 5710 "util/configparser.c"
5710b7c0c8c1SCy Schubert     break;
5711b7c0c8c1SCy Schubert 
5712*46d2f618SCy Schubert   case 535: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
5713*46d2f618SCy Schubert #line 2447 "util/configparser.y"
5714b7c0c8c1SCy Schubert         {
5715b7c0c8c1SCy Schubert 		OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5716b7c0c8c1SCy Schubert 		cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5717b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5718b7c0c8c1SCy Schubert 	}
5719*46d2f618SCy Schubert #line 5720 "util/configparser.c"
5720b7c0c8c1SCy Schubert     break;
5721b7c0c8c1SCy Schubert 
5722*46d2f618SCy Schubert   case 536: /* server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG  */
5723*46d2f618SCy Schubert #line 2454 "util/configparser.y"
5724335c7cdaSCy Schubert         {
5725335c7cdaSCy Schubert 		OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
5726335c7cdaSCy Schubert 		cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
5727335c7cdaSCy Schubert 		free((yyvsp[0].str));
5728335c7cdaSCy Schubert 	}
5729*46d2f618SCy Schubert #line 5730 "util/configparser.c"
5730335c7cdaSCy Schubert     break;
5731335c7cdaSCy Schubert 
5732*46d2f618SCy Schubert   case 537: /* server_wait_limit: VAR_WAIT_LIMIT STRING_ARG  */
5733*46d2f618SCy Schubert #line 2461 "util/configparser.y"
5734335c7cdaSCy Schubert         {
5735335c7cdaSCy Schubert 		OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
5736335c7cdaSCy Schubert 		cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
5737335c7cdaSCy Schubert 		free((yyvsp[0].str));
5738335c7cdaSCy Schubert 	}
5739*46d2f618SCy Schubert #line 5740 "util/configparser.c"
5740335c7cdaSCy Schubert     break;
5741335c7cdaSCy Schubert 
5742*46d2f618SCy Schubert   case 538: /* server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG  */
5743*46d2f618SCy Schubert #line 2468 "util/configparser.y"
5744335c7cdaSCy Schubert         {
5745335c7cdaSCy Schubert 		OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
5746335c7cdaSCy Schubert 		cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
5747335c7cdaSCy Schubert 		free((yyvsp[0].str));
5748335c7cdaSCy Schubert 	}
5749*46d2f618SCy Schubert #line 5750 "util/configparser.c"
5750335c7cdaSCy Schubert     break;
5751335c7cdaSCy Schubert 
5752*46d2f618SCy Schubert   case 539: /* server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG  */
5753*46d2f618SCy Schubert #line 2475 "util/configparser.y"
5754335c7cdaSCy Schubert         {
5755335c7cdaSCy Schubert 		OUTYY(("P(server_wait_limit_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5756335c7cdaSCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5757335c7cdaSCy Schubert 			yyerror("number expected");
5758335c7cdaSCy Schubert 			free((yyvsp[-1].str));
5759335c7cdaSCy Schubert 			free((yyvsp[0].str));
5760335c7cdaSCy Schubert 		} else {
5761335c7cdaSCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5762335c7cdaSCy Schubert 				wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5763335c7cdaSCy Schubert 				fatal_exit("out of memory adding "
5764335c7cdaSCy Schubert 					"wait-limit-netblock");
5765335c7cdaSCy Schubert 		}
5766335c7cdaSCy Schubert 	}
5767*46d2f618SCy Schubert #line 5768 "util/configparser.c"
5768335c7cdaSCy Schubert     break;
5769335c7cdaSCy Schubert 
5770*46d2f618SCy Schubert   case 540: /* server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG  */
5771*46d2f618SCy Schubert #line 2490 "util/configparser.y"
5772335c7cdaSCy Schubert         {
5773335c7cdaSCy Schubert 		OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5774335c7cdaSCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5775335c7cdaSCy Schubert 			yyerror("number expected");
5776335c7cdaSCy Schubert 			free((yyvsp[-1].str));
5777335c7cdaSCy Schubert 			free((yyvsp[0].str));
5778335c7cdaSCy Schubert 		} else {
5779335c7cdaSCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5780335c7cdaSCy Schubert 				wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5781335c7cdaSCy Schubert 				fatal_exit("out of memory adding "
5782335c7cdaSCy Schubert 					"wait-limit-cookie-netblock");
5783335c7cdaSCy Schubert 		}
5784335c7cdaSCy Schubert 	}
5785*46d2f618SCy Schubert #line 5786 "util/configparser.c"
5786335c7cdaSCy Schubert     break;
5787335c7cdaSCy Schubert 
5788*46d2f618SCy Schubert   case 541: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
5789*46d2f618SCy Schubert #line 2505 "util/configparser.y"
5790b7c0c8c1SCy Schubert         {
5791b7c0c8c1SCy Schubert 		OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5792b7c0c8c1SCy Schubert 		cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5793b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5794b7c0c8c1SCy Schubert 	}
5795*46d2f618SCy Schubert #line 5796 "util/configparser.c"
5796b7c0c8c1SCy Schubert     break;
5797b7c0c8c1SCy Schubert 
5798*46d2f618SCy Schubert   case 542: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
5799*46d2f618SCy Schubert #line 2512 "util/configparser.y"
5800b7c0c8c1SCy Schubert         {
5801b7c0c8c1SCy Schubert 		OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5802b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dns64_prefix);
5803b7c0c8c1SCy Schubert 		cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5804b7c0c8c1SCy Schubert 	}
5805*46d2f618SCy Schubert #line 5806 "util/configparser.c"
5806b7c0c8c1SCy Schubert     break;
5807b7c0c8c1SCy Schubert 
5808*46d2f618SCy Schubert   case 543: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
5809*46d2f618SCy Schubert #line 2519 "util/configparser.y"
5810b7c0c8c1SCy Schubert         {
5811b7c0c8c1SCy Schubert 		OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5812b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5813b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
5814b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5815b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5816b7c0c8c1SCy Schubert 	}
5817*46d2f618SCy Schubert #line 5818 "util/configparser.c"
5818b7c0c8c1SCy Schubert     break;
5819b7c0c8c1SCy Schubert 
5820*46d2f618SCy Schubert   case 544: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
5821*46d2f618SCy Schubert #line 2528 "util/configparser.y"
5822b7c0c8c1SCy Schubert         {
5823b7c0c8c1SCy Schubert 		OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5824b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5825b7c0c8c1SCy Schubert 			(yyvsp[0].str)))
5826b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding dns64-ignore-aaaa");
5827b7c0c8c1SCy Schubert 	}
5828*46d2f618SCy Schubert #line 5829 "util/configparser.c"
5829b7c0c8c1SCy Schubert     break;
5830b7c0c8c1SCy Schubert 
5831*46d2f618SCy Schubert   case 545: /* server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG  */
5832*46d2f618SCy Schubert #line 2536 "util/configparser.y"
5833b7c0c8c1SCy Schubert         {
5834b7c0c8c1SCy Schubert 		OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5835b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->nat64_prefix);
5836b7c0c8c1SCy Schubert 		cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5837b7c0c8c1SCy Schubert 	}
5838*46d2f618SCy Schubert #line 5839 "util/configparser.c"
5839b7c0c8c1SCy Schubert     break;
5840b7c0c8c1SCy Schubert 
5841*46d2f618SCy Schubert   case 546: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
5842*46d2f618SCy Schubert #line 2543 "util/configparser.y"
5843b7c0c8c1SCy Schubert         {
5844b7c0c8c1SCy Schubert 		char* p, *s = (yyvsp[0].str);
5845b7c0c8c1SCy Schubert 		OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5846b7c0c8c1SCy Schubert 		while((p=strsep(&s, " \t\n")) != NULL) {
5847b7c0c8c1SCy Schubert 			if(*p) {
5848b7c0c8c1SCy Schubert 				if(!config_add_tag(cfg_parser->cfg, p))
5849b7c0c8c1SCy Schubert 					yyerror("could not define-tag, "
5850b7c0c8c1SCy Schubert 						"out of memory");
5851b7c0c8c1SCy Schubert 			}
5852b7c0c8c1SCy Schubert 		}
5853b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5854b7c0c8c1SCy Schubert 	}
5855*46d2f618SCy Schubert #line 5856 "util/configparser.c"
5856b7c0c8c1SCy Schubert     break;
5857b7c0c8c1SCy Schubert 
5858*46d2f618SCy Schubert   case 547: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
5859*46d2f618SCy Schubert #line 2557 "util/configparser.y"
5860b7c0c8c1SCy Schubert         {
5861b7c0c8c1SCy Schubert 		size_t len = 0;
5862b7c0c8c1SCy Schubert 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5863b7c0c8c1SCy Schubert 			&len);
5864b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5865b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5866b7c0c8c1SCy Schubert 		if(!bitlist) {
5867b7c0c8c1SCy Schubert 			yyerror("could not parse tags, (define-tag them first)");
5868b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5869b7c0c8c1SCy Schubert 		}
5870b7c0c8c1SCy Schubert 		if(bitlist) {
5871b7c0c8c1SCy Schubert 			if(!cfg_strbytelist_insert(
5872b7c0c8c1SCy Schubert 				&cfg_parser->cfg->local_zone_tags,
5873b7c0c8c1SCy Schubert 				(yyvsp[-1].str), bitlist, len)) {
5874b7c0c8c1SCy Schubert 				yyerror("out of memory");
5875b7c0c8c1SCy Schubert 				free((yyvsp[-1].str));
5876b7c0c8c1SCy Schubert 			}
5877b7c0c8c1SCy Schubert 		}
5878b7c0c8c1SCy Schubert 	}
5879*46d2f618SCy Schubert #line 5880 "util/configparser.c"
5880b7c0c8c1SCy Schubert     break;
5881b7c0c8c1SCy Schubert 
5882*46d2f618SCy Schubert   case 548: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
5883*46d2f618SCy Schubert #line 2578 "util/configparser.y"
5884b7c0c8c1SCy Schubert         {
5885b7c0c8c1SCy Schubert 		size_t len = 0;
5886b7c0c8c1SCy Schubert 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5887b7c0c8c1SCy Schubert 			&len);
5888b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5889b7c0c8c1SCy Schubert 		OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5890b7c0c8c1SCy Schubert 		if(!bitlist) {
5891b7c0c8c1SCy Schubert 			yyerror("could not parse tags, (define-tag them first)");
5892b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5893b7c0c8c1SCy Schubert 		}
5894b7c0c8c1SCy Schubert 		if(bitlist) {
5895b7c0c8c1SCy Schubert 			if(!cfg_strbytelist_insert(
5896b7c0c8c1SCy Schubert 				&cfg_parser->cfg->acl_tags,
5897b7c0c8c1SCy Schubert 				(yyvsp[-1].str), bitlist, len)) {
5898b7c0c8c1SCy Schubert 				yyerror("out of memory");
5899b7c0c8c1SCy Schubert 				free((yyvsp[-1].str));
5900b7c0c8c1SCy Schubert 			}
5901b7c0c8c1SCy Schubert 		}
5902b7c0c8c1SCy Schubert 	}
5903*46d2f618SCy Schubert #line 5904 "util/configparser.c"
5904b7c0c8c1SCy Schubert     break;
5905b7c0c8c1SCy Schubert 
5906*46d2f618SCy Schubert   case 549: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
5907*46d2f618SCy Schubert #line 2599 "util/configparser.y"
5908b7c0c8c1SCy Schubert         {
5909b7c0c8c1SCy Schubert 		OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5910b7c0c8c1SCy Schubert 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5911b7c0c8c1SCy Schubert 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5912b7c0c8c1SCy Schubert 			yyerror("out of memory");
5913b7c0c8c1SCy Schubert 			free((yyvsp[-2].str));
5914b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5915b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5916b7c0c8c1SCy Schubert 		}
5917b7c0c8c1SCy Schubert 	}
5918*46d2f618SCy Schubert #line 5919 "util/configparser.c"
5919b7c0c8c1SCy Schubert     break;
5920b7c0c8c1SCy Schubert 
5921*46d2f618SCy Schubert   case 550: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
5922*46d2f618SCy Schubert #line 2611 "util/configparser.y"
5923b7c0c8c1SCy Schubert         {
5924b7c0c8c1SCy Schubert 		OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5925b7c0c8c1SCy Schubert 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5926b7c0c8c1SCy Schubert 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5927b7c0c8c1SCy Schubert 			yyerror("out of memory");
5928b7c0c8c1SCy Schubert 			free((yyvsp[-2].str));
5929b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5930b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5931b7c0c8c1SCy Schubert 		}
5932b7c0c8c1SCy Schubert 	}
5933*46d2f618SCy Schubert #line 5934 "util/configparser.c"
5934b7c0c8c1SCy Schubert     break;
5935b7c0c8c1SCy Schubert 
5936*46d2f618SCy Schubert   case 551: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
5937*46d2f618SCy Schubert #line 2623 "util/configparser.y"
5938b7c0c8c1SCy Schubert         {
5939b7c0c8c1SCy Schubert 		OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5940b7c0c8c1SCy Schubert 		if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5941b7c0c8c1SCy Schubert 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5942b7c0c8c1SCy Schubert 			yyerror("out of memory");
5943b7c0c8c1SCy Schubert 			free((yyvsp[-2].str));
5944b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5945b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5946b7c0c8c1SCy Schubert 		}
5947b7c0c8c1SCy Schubert 	}
5948*46d2f618SCy Schubert #line 5949 "util/configparser.c"
5949b7c0c8c1SCy Schubert     break;
5950b7c0c8c1SCy Schubert 
5951*46d2f618SCy Schubert   case 552: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
5952*46d2f618SCy Schubert #line 2635 "util/configparser.y"
5953b7c0c8c1SCy Schubert         {
5954b7c0c8c1SCy Schubert 		OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5955b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
5956b7c0c8c1SCy Schubert 			(yyvsp[-1].str), (yyvsp[0].str))) {
5957b7c0c8c1SCy Schubert 			yyerror("out of memory");
5958b7c0c8c1SCy Schubert 		}
5959b7c0c8c1SCy Schubert 	}
5960*46d2f618SCy Schubert #line 5961 "util/configparser.c"
5961b7c0c8c1SCy Schubert     break;
5962b7c0c8c1SCy Schubert 
5963*46d2f618SCy Schubert   case 553: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG  */
5964*46d2f618SCy Schubert #line 2644 "util/configparser.y"
5965b7c0c8c1SCy Schubert         {
5966b7c0c8c1SCy Schubert 		size_t len = 0;
5967b7c0c8c1SCy Schubert 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5968b7c0c8c1SCy Schubert 			&len);
5969b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
5970b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
5971b7c0c8c1SCy Schubert 		if(!bitlist) {
5972b7c0c8c1SCy Schubert 			yyerror("could not parse tags, (define-tag them first)");
5973b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5974b7c0c8c1SCy Schubert 		}
5975b7c0c8c1SCy Schubert 		if(bitlist) {
5976b7c0c8c1SCy Schubert 			if(!cfg_strbytelist_insert(
5977b7c0c8c1SCy Schubert 				&cfg_parser->cfg->interface_tags,
5978b7c0c8c1SCy Schubert 				(yyvsp[-1].str), bitlist, len)) {
5979b7c0c8c1SCy Schubert 				yyerror("out of memory");
5980b7c0c8c1SCy Schubert 				free((yyvsp[-1].str));
5981b7c0c8c1SCy Schubert 			}
5982b7c0c8c1SCy Schubert 		}
5983b7c0c8c1SCy Schubert 	}
5984*46d2f618SCy Schubert #line 5985 "util/configparser.c"
5985b7c0c8c1SCy Schubert     break;
5986b7c0c8c1SCy Schubert 
5987*46d2f618SCy Schubert   case 554: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
5988*46d2f618SCy Schubert #line 2665 "util/configparser.y"
5989b7c0c8c1SCy Schubert         {
5990b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5991b7c0c8c1SCy Schubert 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
5992b7c0c8c1SCy Schubert 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5993b7c0c8c1SCy Schubert 			yyerror("out of memory");
5994b7c0c8c1SCy Schubert 			free((yyvsp[-2].str));
5995b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
5996b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
5997b7c0c8c1SCy Schubert 		}
5998b7c0c8c1SCy Schubert 	}
5999*46d2f618SCy Schubert #line 6000 "util/configparser.c"
6000b7c0c8c1SCy Schubert     break;
6001b7c0c8c1SCy Schubert 
6002*46d2f618SCy Schubert   case 555: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
6003*46d2f618SCy Schubert #line 2677 "util/configparser.y"
6004b7c0c8c1SCy Schubert         {
6005b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6006b7c0c8c1SCy Schubert 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6007b7c0c8c1SCy Schubert 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6008b7c0c8c1SCy Schubert 			yyerror("out of memory");
6009b7c0c8c1SCy Schubert 			free((yyvsp[-2].str));
6010b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
6011b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6012b7c0c8c1SCy Schubert 		}
6013b7c0c8c1SCy Schubert 	}
6014*46d2f618SCy Schubert #line 6015 "util/configparser.c"
6015b7c0c8c1SCy Schubert     break;
6016b7c0c8c1SCy Schubert 
6017*46d2f618SCy Schubert   case 556: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG  */
6018*46d2f618SCy Schubert #line 2689 "util/configparser.y"
6019b7c0c8c1SCy Schubert         {
6020b7c0c8c1SCy Schubert 		OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6021b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6022b7c0c8c1SCy Schubert 			(yyvsp[-1].str), (yyvsp[0].str))) {
6023b7c0c8c1SCy Schubert 			yyerror("out of memory");
6024b7c0c8c1SCy Schubert 		}
6025b7c0c8c1SCy Schubert 	}
6026*46d2f618SCy Schubert #line 6027 "util/configparser.c"
6027b7c0c8c1SCy Schubert     break;
6028b7c0c8c1SCy Schubert 
6029*46d2f618SCy Schubert   case 557: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
6030*46d2f618SCy Schubert #line 2698 "util/configparser.y"
6031b7c0c8c1SCy Schubert         {
6032b7c0c8c1SCy Schubert 		size_t len = 0;
6033b7c0c8c1SCy Schubert 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6034b7c0c8c1SCy Schubert 			&len);
6035b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6036b7c0c8c1SCy Schubert 		OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6037b7c0c8c1SCy Schubert 		if(!bitlist) {
6038b7c0c8c1SCy Schubert 			yyerror("could not parse tags, (define-tag them first)");
6039b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
6040b7c0c8c1SCy Schubert 		}
6041b7c0c8c1SCy Schubert 		if(bitlist) {
6042b7c0c8c1SCy Schubert 			if(!cfg_strbytelist_insert(
6043b7c0c8c1SCy Schubert 				&cfg_parser->cfg->respip_tags,
6044b7c0c8c1SCy Schubert 				(yyvsp[-1].str), bitlist, len)) {
6045b7c0c8c1SCy Schubert 				yyerror("out of memory");
6046b7c0c8c1SCy Schubert 				free((yyvsp[-1].str));
6047b7c0c8c1SCy Schubert 			}
6048b7c0c8c1SCy Schubert 		}
6049b7c0c8c1SCy Schubert 	}
6050*46d2f618SCy Schubert #line 6051 "util/configparser.c"
6051b7c0c8c1SCy Schubert     break;
6052b7c0c8c1SCy Schubert 
6053*46d2f618SCy Schubert   case 558: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
6054*46d2f618SCy Schubert #line 2719 "util/configparser.y"
6055b7c0c8c1SCy Schubert         {
6056b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6057b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6058b7c0c8c1SCy Schubert 			yyerror("number expected");
6059b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6060b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6061b7c0c8c1SCy Schubert 	}
6062*46d2f618SCy Schubert #line 6063 "util/configparser.c"
6063b7c0c8c1SCy Schubert     break;
6064b7c0c8c1SCy Schubert 
6065*46d2f618SCy Schubert   case 559: /* server_ip_ratelimit_cookie: VAR_IP_RATELIMIT_COOKIE STRING_ARG  */
6066*46d2f618SCy Schubert #line 2728 "util/configparser.y"
6067b7c0c8c1SCy Schubert         {
6068b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6069b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6070b7c0c8c1SCy Schubert 			yyerror("number expected");
6071b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6072b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6073b7c0c8c1SCy Schubert 	}
6074*46d2f618SCy Schubert #line 6075 "util/configparser.c"
6075b7c0c8c1SCy Schubert     break;
6076b7c0c8c1SCy Schubert 
6077*46d2f618SCy Schubert   case 560: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
6078*46d2f618SCy Schubert #line 2737 "util/configparser.y"
6079b7c0c8c1SCy Schubert         {
6080b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6081b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6082b7c0c8c1SCy Schubert 			yyerror("number expected");
6083b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6084b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6085b7c0c8c1SCy Schubert 	}
6086*46d2f618SCy Schubert #line 6087 "util/configparser.c"
6087b7c0c8c1SCy Schubert     break;
6088b7c0c8c1SCy Schubert 
6089*46d2f618SCy Schubert   case 561: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
6090*46d2f618SCy Schubert #line 2746 "util/configparser.y"
6091b7c0c8c1SCy Schubert         {
6092b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6093b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6094b7c0c8c1SCy Schubert 			yyerror("memory size expected");
6095b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6096b7c0c8c1SCy Schubert 	}
6097*46d2f618SCy Schubert #line 6098 "util/configparser.c"
6098b7c0c8c1SCy Schubert     break;
6099b7c0c8c1SCy Schubert 
6100*46d2f618SCy Schubert   case 562: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
6101*46d2f618SCy Schubert #line 2754 "util/configparser.y"
6102b7c0c8c1SCy Schubert         {
6103b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6104b7c0c8c1SCy Schubert 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6105b7c0c8c1SCy Schubert 			yyerror("memory size expected");
6106b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6107b7c0c8c1SCy Schubert 	}
6108*46d2f618SCy Schubert #line 6109 "util/configparser.c"
6109b7c0c8c1SCy Schubert     break;
6110b7c0c8c1SCy Schubert 
6111*46d2f618SCy Schubert   case 563: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
6112*46d2f618SCy Schubert #line 2762 "util/configparser.y"
6113b7c0c8c1SCy Schubert         {
6114b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6115b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
6116b7c0c8c1SCy Schubert 			yyerror("number expected");
6117b7c0c8c1SCy Schubert 		} else {
6118b7c0c8c1SCy Schubert 			cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6119b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6120b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
6121b7c0c8c1SCy Schubert 		}
6122b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6123b7c0c8c1SCy Schubert 	}
6124*46d2f618SCy Schubert #line 6125 "util/configparser.c"
6125b7c0c8c1SCy Schubert     break;
6126b7c0c8c1SCy Schubert 
6127*46d2f618SCy Schubert   case 564: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
6128*46d2f618SCy Schubert #line 2775 "util/configparser.y"
6129b7c0c8c1SCy Schubert         {
6130b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6131b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0) {
6132b7c0c8c1SCy Schubert 			yyerror("number expected");
6133b7c0c8c1SCy Schubert 		} else {
6134b7c0c8c1SCy Schubert 			cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6135b7c0c8c1SCy Schubert 			if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6136b7c0c8c1SCy Schubert 				yyerror("must be a power of 2");
6137b7c0c8c1SCy Schubert 		}
6138b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6139b7c0c8c1SCy Schubert 	}
6140*46d2f618SCy Schubert #line 6141 "util/configparser.c"
6141b7c0c8c1SCy Schubert     break;
6142b7c0c8c1SCy Schubert 
6143*46d2f618SCy Schubert   case 565: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
6144*46d2f618SCy Schubert #line 2788 "util/configparser.y"
6145b7c0c8c1SCy Schubert         {
6146b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6147b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6148b7c0c8c1SCy Schubert 			yyerror("number expected");
6149b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
6150b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6151b7c0c8c1SCy Schubert 		} else {
6152b7c0c8c1SCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6153b7c0c8c1SCy Schubert 				ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6154b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding "
6155b7c0c8c1SCy Schubert 					"ratelimit-for-domain");
6156b7c0c8c1SCy Schubert 		}
6157b7c0c8c1SCy Schubert 	}
6158*46d2f618SCy Schubert #line 6159 "util/configparser.c"
6159b7c0c8c1SCy Schubert     break;
6160b7c0c8c1SCy Schubert 
6161*46d2f618SCy Schubert   case 566: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
6162*46d2f618SCy Schubert #line 2803 "util/configparser.y"
6163b7c0c8c1SCy Schubert         {
6164b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6165b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6166b7c0c8c1SCy Schubert 			yyerror("number expected");
6167b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
6168b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6169b7c0c8c1SCy Schubert 		} else {
6170b7c0c8c1SCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6171b7c0c8c1SCy Schubert 				ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6172b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding "
6173b7c0c8c1SCy Schubert 					"ratelimit-below-domain");
6174b7c0c8c1SCy Schubert 		}
6175b7c0c8c1SCy Schubert 	}
6176*46d2f618SCy Schubert #line 6177 "util/configparser.c"
6177b7c0c8c1SCy Schubert     break;
6178b7c0c8c1SCy Schubert 
6179*46d2f618SCy Schubert   case 567: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
6180*46d2f618SCy Schubert #line 2818 "util/configparser.y"
6181b7c0c8c1SCy Schubert         {
6182b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6183b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6184b7c0c8c1SCy Schubert 			yyerror("number expected");
6185b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6186b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6187b7c0c8c1SCy Schubert 	}
6188*46d2f618SCy Schubert #line 6189 "util/configparser.c"
6189b7c0c8c1SCy Schubert     break;
6190b7c0c8c1SCy Schubert 
6191*46d2f618SCy Schubert   case 568: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
6192*46d2f618SCy Schubert #line 2827 "util/configparser.y"
6193b7c0c8c1SCy Schubert         {
6194b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6195b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6196b7c0c8c1SCy Schubert 			yyerror("number expected");
6197b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6198b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6199b7c0c8c1SCy Schubert 	}
6200*46d2f618SCy Schubert #line 6201 "util/configparser.c"
6201b7c0c8c1SCy Schubert     break;
6202b7c0c8c1SCy Schubert 
6203*46d2f618SCy Schubert   case 569: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
6204*46d2f618SCy Schubert #line 2836 "util/configparser.y"
6205b7c0c8c1SCy Schubert         {
6206b7c0c8c1SCy Schubert 		OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6207b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6208b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6209b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ip_ratelimit_backoff =
6210b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6211b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6212b7c0c8c1SCy Schubert 	}
6213*46d2f618SCy Schubert #line 6214 "util/configparser.c"
6214b7c0c8c1SCy Schubert     break;
6215b7c0c8c1SCy Schubert 
6216*46d2f618SCy Schubert   case 570: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
6217*46d2f618SCy Schubert #line 2846 "util/configparser.y"
6218b7c0c8c1SCy Schubert         {
6219b7c0c8c1SCy Schubert 		OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6220b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6221b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6222b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ratelimit_backoff =
6223b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6224b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6225b7c0c8c1SCy Schubert 	}
6226*46d2f618SCy Schubert #line 6227 "util/configparser.c"
6227b7c0c8c1SCy Schubert     break;
6228b7c0c8c1SCy Schubert 
6229*46d2f618SCy Schubert   case 571: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
6230*46d2f618SCy Schubert #line 2856 "util/configparser.y"
6231b7c0c8c1SCy Schubert         {
6232b7c0c8c1SCy Schubert 		OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6233b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6234b7c0c8c1SCy Schubert 			yyerror("number expected");
6235b7c0c8c1SCy Schubert 		else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6236b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6237b7c0c8c1SCy Schubert 	}
6238*46d2f618SCy Schubert #line 6239 "util/configparser.c"
6239b7c0c8c1SCy Schubert     break;
6240b7c0c8c1SCy Schubert 
6241*46d2f618SCy Schubert   case 572: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG  */
6242*46d2f618SCy Schubert #line 2865 "util/configparser.y"
6243b7c0c8c1SCy Schubert         {
6244b7c0c8c1SCy Schubert 		OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6245b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6246b7c0c8c1SCy Schubert 			yyerror("number expected");
6247b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6248b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6249b7c0c8c1SCy Schubert 	}
6250*46d2f618SCy Schubert #line 6251 "util/configparser.c"
6251b7c0c8c1SCy Schubert     break;
6252b7c0c8c1SCy Schubert 
6253*46d2f618SCy Schubert   case 573: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG  */
6254*46d2f618SCy Schubert #line 2874 "util/configparser.y"
6255b7c0c8c1SCy Schubert         {
6256b7c0c8c1SCy Schubert 		OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6257b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6258b7c0c8c1SCy Schubert 			yyerror("number expected");
6259b7c0c8c1SCy Schubert 		else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6260b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6261b7c0c8c1SCy Schubert 	}
6262*46d2f618SCy Schubert #line 6263 "util/configparser.c"
6263b7c0c8c1SCy Schubert     break;
6264b7c0c8c1SCy Schubert 
6265*46d2f618SCy Schubert   case 574: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
6266*46d2f618SCy Schubert #line 2883 "util/configparser.y"
6267b7c0c8c1SCy Schubert         {
6268b7c0c8c1SCy Schubert 		OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6269b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6270b7c0c8c1SCy Schubert 	}
6271*46d2f618SCy Schubert #line 6272 "util/configparser.c"
6272b7c0c8c1SCy Schubert     break;
6273b7c0c8c1SCy Schubert 
6274*46d2f618SCy Schubert   case 575: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
6275*46d2f618SCy Schubert #line 2889 "util/configparser.y"
6276b7c0c8c1SCy Schubert         {
6277b7c0c8c1SCy Schubert 		OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6278b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) <= 0)
6279b7c0c8c1SCy Schubert 			yyerror("number expected");
6280b7c0c8c1SCy Schubert 		else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6281b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6282b7c0c8c1SCy Schubert 	}
6283*46d2f618SCy Schubert #line 6284 "util/configparser.c"
6284b7c0c8c1SCy Schubert     break;
6285b7c0c8c1SCy Schubert 
6286*46d2f618SCy Schubert   case 576: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
6287*46d2f618SCy Schubert #line 2898 "util/configparser.y"
6288b7c0c8c1SCy Schubert         {
6289b7c0c8c1SCy Schubert 		OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6290b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6291b7c0c8c1SCy Schubert 			yyerror("number expected");
6292b7c0c8c1SCy Schubert 		else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6293b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6294b7c0c8c1SCy Schubert 	}
6295*46d2f618SCy Schubert #line 6296 "util/configparser.c"
6296b7c0c8c1SCy Schubert     break;
6297b7c0c8c1SCy Schubert 
6298*46d2f618SCy Schubert   case 577: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
6299*46d2f618SCy Schubert #line 2907 "util/configparser.y"
6300b7c0c8c1SCy Schubert         {
6301b7c0c8c1SCy Schubert 		OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6302b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6303b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6304b7c0c8c1SCy Schubert 		else cfg_parser->cfg->qname_minimisation =
6305b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6306b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6307b7c0c8c1SCy Schubert 	}
6308*46d2f618SCy Schubert #line 6309 "util/configparser.c"
6309b7c0c8c1SCy Schubert     break;
6310b7c0c8c1SCy Schubert 
6311*46d2f618SCy Schubert   case 578: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
6312*46d2f618SCy Schubert #line 2917 "util/configparser.y"
6313b7c0c8c1SCy Schubert         {
6314b7c0c8c1SCy Schubert 		OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6315b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6316b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6317b7c0c8c1SCy Schubert 		else cfg_parser->cfg->qname_minimisation_strict =
6318b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6319b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6320b7c0c8c1SCy Schubert 	}
6321*46d2f618SCy Schubert #line 6322 "util/configparser.c"
6322b7c0c8c1SCy Schubert     break;
6323b7c0c8c1SCy Schubert 
6324*46d2f618SCy Schubert   case 579: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
6325*46d2f618SCy Schubert #line 2927 "util/configparser.y"
6326b7c0c8c1SCy Schubert         {
6327b7c0c8c1SCy Schubert 		OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6328b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6329b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6330b7c0c8c1SCy Schubert 		else cfg_parser->cfg->pad_responses =
6331b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6332b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6333b7c0c8c1SCy Schubert 	}
6334*46d2f618SCy Schubert #line 6335 "util/configparser.c"
6335b7c0c8c1SCy Schubert     break;
6336b7c0c8c1SCy Schubert 
6337*46d2f618SCy Schubert   case 580: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
6338*46d2f618SCy Schubert #line 2937 "util/configparser.y"
6339b7c0c8c1SCy Schubert         {
6340b7c0c8c1SCy Schubert 		OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6341b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
6342b7c0c8c1SCy Schubert 			yyerror("number expected");
6343b7c0c8c1SCy Schubert 		else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6344b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6345b7c0c8c1SCy Schubert 	}
6346*46d2f618SCy Schubert #line 6347 "util/configparser.c"
6347b7c0c8c1SCy Schubert     break;
6348b7c0c8c1SCy Schubert 
6349*46d2f618SCy Schubert   case 581: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
6350*46d2f618SCy Schubert #line 2946 "util/configparser.y"
6351b7c0c8c1SCy Schubert         {
6352b7c0c8c1SCy Schubert 		OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6353b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6354b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6355b7c0c8c1SCy Schubert 		else cfg_parser->cfg->pad_queries =
6356b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6357b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6358b7c0c8c1SCy Schubert 	}
6359*46d2f618SCy Schubert #line 6360 "util/configparser.c"
6360b7c0c8c1SCy Schubert     break;
6361b7c0c8c1SCy Schubert 
6362*46d2f618SCy Schubert   case 582: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
6363*46d2f618SCy Schubert #line 2956 "util/configparser.y"
6364b7c0c8c1SCy Schubert         {
6365b7c0c8c1SCy Schubert 		OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6366b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
6367b7c0c8c1SCy Schubert 			yyerror("number expected");
6368b7c0c8c1SCy Schubert 		else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6369b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6370b7c0c8c1SCy Schubert 	}
6371*46d2f618SCy Schubert #line 6372 "util/configparser.c"
6372b7c0c8c1SCy Schubert     break;
6373b7c0c8c1SCy Schubert 
6374*46d2f618SCy Schubert   case 583: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
6375*46d2f618SCy Schubert #line 2965 "util/configparser.y"
6376b7c0c8c1SCy Schubert         {
6377b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6378b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6379b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6380b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6381b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6382b7c0c8c1SCy Schubert 	#else
6383b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6384b7c0c8c1SCy Schubert 	#endif
6385b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6386b7c0c8c1SCy Schubert 	}
6387*46d2f618SCy Schubert #line 6388 "util/configparser.c"
6388b7c0c8c1SCy Schubert     break;
6389b7c0c8c1SCy Schubert 
6390*46d2f618SCy Schubert   case 584: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
6391*46d2f618SCy Schubert #line 2978 "util/configparser.y"
6392b7c0c8c1SCy Schubert         {
6393b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6394b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6395b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6396b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6397b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6398b7c0c8c1SCy Schubert 	#else
6399b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6400b7c0c8c1SCy Schubert 	#endif
6401b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6402b7c0c8c1SCy Schubert 	}
6403*46d2f618SCy Schubert #line 6404 "util/configparser.c"
6404b7c0c8c1SCy Schubert     break;
6405b7c0c8c1SCy Schubert 
6406*46d2f618SCy Schubert   case 585: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
6407*46d2f618SCy Schubert #line 2991 "util/configparser.y"
6408b7c0c8c1SCy Schubert         {
6409b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6410b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6411b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->ipsecmod_hook);
6412b7c0c8c1SCy Schubert 		cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6413b7c0c8c1SCy Schubert 	#else
6414b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6415b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6416b7c0c8c1SCy Schubert 	#endif
6417b7c0c8c1SCy Schubert 	}
6418*46d2f618SCy Schubert #line 6419 "util/configparser.c"
6419b7c0c8c1SCy Schubert     break;
6420b7c0c8c1SCy Schubert 
6421*46d2f618SCy Schubert   case 586: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
6422*46d2f618SCy Schubert #line 3003 "util/configparser.y"
6423b7c0c8c1SCy Schubert         {
6424b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6425b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6426b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6427b7c0c8c1SCy Schubert 			yyerror("number expected");
6428b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6429b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6430b7c0c8c1SCy Schubert 	#else
6431b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6432b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6433b7c0c8c1SCy Schubert 	#endif
6434b7c0c8c1SCy Schubert 	}
6435*46d2f618SCy Schubert #line 6436 "util/configparser.c"
6436b7c0c8c1SCy Schubert     break;
6437b7c0c8c1SCy Schubert 
6438*46d2f618SCy Schubert   case 587: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
6439*46d2f618SCy Schubert #line 3017 "util/configparser.y"
6440b7c0c8c1SCy Schubert         {
6441b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6442b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6443b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6444b7c0c8c1SCy Schubert 			yyerror("out of memory");
6445b7c0c8c1SCy Schubert 	#else
6446b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6447b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6448b7c0c8c1SCy Schubert 	#endif
6449b7c0c8c1SCy Schubert 	}
6450*46d2f618SCy Schubert #line 6451 "util/configparser.c"
6451b7c0c8c1SCy Schubert     break;
6452b7c0c8c1SCy Schubert 
6453*46d2f618SCy Schubert   case 588: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
6454*46d2f618SCy Schubert #line 3029 "util/configparser.y"
6455b7c0c8c1SCy Schubert         {
6456b7c0c8c1SCy Schubert 	#ifdef USE_IPSECMOD
6457b7c0c8c1SCy Schubert 		OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6458b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6459b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6460b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6461b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6462b7c0c8c1SCy Schubert 	#else
6463b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6464b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6465b7c0c8c1SCy Schubert 	#endif
6466b7c0c8c1SCy Schubert 	}
6467*46d2f618SCy Schubert #line 6468 "util/configparser.c"
6468b7c0c8c1SCy Schubert     break;
6469b7c0c8c1SCy Schubert 
6470*46d2f618SCy Schubert   case 589: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
6471*46d2f618SCy Schubert #line 3043 "util/configparser.y"
6472b7c0c8c1SCy Schubert         {
6473b7c0c8c1SCy Schubert 		OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6474b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(
6475b7c0c8c1SCy Schubert 			&cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6476b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding "
6477b7c0c8c1SCy Schubert 				"edns-client-string");
6478b7c0c8c1SCy Schubert 	}
6479*46d2f618SCy Schubert #line 6480 "util/configparser.c"
6480b7c0c8c1SCy Schubert     break;
6481b7c0c8c1SCy Schubert 
6482*46d2f618SCy Schubert   case 590: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
6483*46d2f618SCy Schubert #line 3052 "util/configparser.y"
6484b7c0c8c1SCy Schubert         {
6485b7c0c8c1SCy Schubert 		OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6486b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6487b7c0c8c1SCy Schubert 			yyerror("option code expected");
6488b7c0c8c1SCy Schubert 		else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6489b7c0c8c1SCy Schubert 			yyerror("option code must be in interval [0, 65535]");
6490b7c0c8c1SCy Schubert 		else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6491b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6492b7c0c8c1SCy Schubert 	}
6493*46d2f618SCy Schubert #line 6494 "util/configparser.c"
6494b7c0c8c1SCy Schubert     break;
6495b7c0c8c1SCy Schubert 
6496*46d2f618SCy Schubert   case 591: /* server_ede: VAR_EDE STRING_ARG  */
6497*46d2f618SCy Schubert #line 3063 "util/configparser.y"
6498b7c0c8c1SCy Schubert         {
6499b7c0c8c1SCy Schubert 		OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6500b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6501b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6502b7c0c8c1SCy Schubert 		else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6503b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6504b7c0c8c1SCy Schubert 	}
6505*46d2f618SCy Schubert #line 6506 "util/configparser.c"
6506b7c0c8c1SCy Schubert     break;
6507b7c0c8c1SCy Schubert 
6508*46d2f618SCy Schubert   case 592: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG  */
6509*46d2f618SCy Schubert #line 3072 "util/configparser.y"
6510b7c0c8c1SCy Schubert         {
6511b7c0c8c1SCy Schubert 		OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6512b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6513b7c0c8c1SCy Schubert 			yyerror("out of memory");
6514b7c0c8c1SCy Schubert 	}
6515*46d2f618SCy Schubert #line 6516 "util/configparser.c"
6516b7c0c8c1SCy Schubert     break;
6517b7c0c8c1SCy Schubert 
6518*46d2f618SCy Schubert   case 593: /* stub_name: VAR_NAME STRING_ARG  */
6519*46d2f618SCy Schubert #line 3079 "util/configparser.y"
6520b7c0c8c1SCy Schubert         {
6521b7c0c8c1SCy Schubert 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6522b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->stubs->name)
6523b7c0c8c1SCy Schubert 			yyerror("stub name override, there must be one name "
6524b7c0c8c1SCy Schubert 				"for one stub-zone");
6525b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->stubs->name);
6526b7c0c8c1SCy Schubert 		cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6527b7c0c8c1SCy Schubert 	}
6528*46d2f618SCy Schubert #line 6529 "util/configparser.c"
6529b7c0c8c1SCy Schubert     break;
6530b7c0c8c1SCy Schubert 
6531*46d2f618SCy Schubert   case 594: /* stub_host: VAR_STUB_HOST STRING_ARG  */
6532*46d2f618SCy Schubert #line 3089 "util/configparser.y"
6533b7c0c8c1SCy Schubert         {
6534b7c0c8c1SCy Schubert 		OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6535b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6536b7c0c8c1SCy Schubert 			yyerror("out of memory");
6537b7c0c8c1SCy Schubert 	}
6538*46d2f618SCy Schubert #line 6539 "util/configparser.c"
6539b7c0c8c1SCy Schubert     break;
6540b7c0c8c1SCy Schubert 
6541*46d2f618SCy Schubert   case 595: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
6542*46d2f618SCy Schubert #line 3096 "util/configparser.y"
6543b7c0c8c1SCy Schubert         {
6544b7c0c8c1SCy Schubert 		OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6545b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6546b7c0c8c1SCy Schubert 			yyerror("out of memory");
6547b7c0c8c1SCy Schubert 	}
6548*46d2f618SCy Schubert #line 6549 "util/configparser.c"
6549b7c0c8c1SCy Schubert     break;
6550b7c0c8c1SCy Schubert 
6551*46d2f618SCy Schubert   case 596: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
6552*46d2f618SCy Schubert #line 3103 "util/configparser.y"
6553b7c0c8c1SCy Schubert         {
6554b7c0c8c1SCy Schubert 		OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6555b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6556b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6557b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6558b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6559b7c0c8c1SCy Schubert 	}
6560*46d2f618SCy Schubert #line 6561 "util/configparser.c"
6561b7c0c8c1SCy Schubert     break;
6562b7c0c8c1SCy Schubert 
6563*46d2f618SCy Schubert   case 597: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
6564*46d2f618SCy Schubert #line 3112 "util/configparser.y"
6565b7c0c8c1SCy Schubert         {
6566b7c0c8c1SCy Schubert 		OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6567b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6568b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6569b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6570b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6571b7c0c8c1SCy Schubert 	}
6572*46d2f618SCy Schubert #line 6573 "util/configparser.c"
6573b7c0c8c1SCy Schubert     break;
6574b7c0c8c1SCy Schubert 
6575*46d2f618SCy Schubert   case 598: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
6576*46d2f618SCy Schubert #line 3121 "util/configparser.y"
6577b7c0c8c1SCy Schubert         {
6578b7c0c8c1SCy Schubert 		OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6579b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6580b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6581b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stubs->ssl_upstream =
6582b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6583b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6584b7c0c8c1SCy Schubert 	}
6585*46d2f618SCy Schubert #line 6586 "util/configparser.c"
6586b7c0c8c1SCy Schubert     break;
6587b7c0c8c1SCy Schubert 
6588*46d2f618SCy Schubert   case 599: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
6589*46d2f618SCy Schubert #line 3131 "util/configparser.y"
6590b7c0c8c1SCy Schubert         {
6591b7c0c8c1SCy Schubert                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6592b7c0c8c1SCy Schubert                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6593b7c0c8c1SCy Schubert                         yyerror("expected yes or no.");
6594b7c0c8c1SCy Schubert                 else cfg_parser->cfg->stubs->tcp_upstream =
6595b7c0c8c1SCy Schubert                         (strcmp((yyvsp[0].str), "yes")==0);
6596b7c0c8c1SCy Schubert                 free((yyvsp[0].str));
6597b7c0c8c1SCy Schubert         }
6598*46d2f618SCy Schubert #line 6599 "util/configparser.c"
6599b7c0c8c1SCy Schubert     break;
6600b7c0c8c1SCy Schubert 
6601*46d2f618SCy Schubert   case 600: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
6602*46d2f618SCy Schubert #line 3141 "util/configparser.y"
6603b7c0c8c1SCy Schubert         {
6604b7c0c8c1SCy Schubert 		OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6605b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6606b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6607b7c0c8c1SCy Schubert 		else cfg_parser->cfg->stubs->isprime =
6608b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6609b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6610b7c0c8c1SCy Schubert 	}
6611*46d2f618SCy Schubert #line 6612 "util/configparser.c"
6612b7c0c8c1SCy Schubert     break;
6613b7c0c8c1SCy Schubert 
6614*46d2f618SCy Schubert   case 601: /* forward_name: VAR_NAME STRING_ARG  */
6615*46d2f618SCy Schubert #line 3151 "util/configparser.y"
6616b7c0c8c1SCy Schubert         {
6617b7c0c8c1SCy Schubert 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6618b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->forwards->name)
6619b7c0c8c1SCy Schubert 			yyerror("forward name override, there must be one "
6620b7c0c8c1SCy Schubert 				"name for one forward-zone");
6621b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->forwards->name);
6622b7c0c8c1SCy Schubert 		cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6623b7c0c8c1SCy Schubert 	}
6624*46d2f618SCy Schubert #line 6625 "util/configparser.c"
6625b7c0c8c1SCy Schubert     break;
6626b7c0c8c1SCy Schubert 
6627*46d2f618SCy Schubert   case 602: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
6628*46d2f618SCy Schubert #line 3161 "util/configparser.y"
6629b7c0c8c1SCy Schubert         {
6630b7c0c8c1SCy Schubert 		OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6631b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6632b7c0c8c1SCy Schubert 			yyerror("out of memory");
6633b7c0c8c1SCy Schubert 	}
6634*46d2f618SCy Schubert #line 6635 "util/configparser.c"
6635b7c0c8c1SCy Schubert     break;
6636b7c0c8c1SCy Schubert 
6637*46d2f618SCy Schubert   case 603: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
6638*46d2f618SCy Schubert #line 3168 "util/configparser.y"
6639b7c0c8c1SCy Schubert         {
6640b7c0c8c1SCy Schubert 		OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6641b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6642b7c0c8c1SCy Schubert 			yyerror("out of memory");
6643b7c0c8c1SCy Schubert 	}
6644*46d2f618SCy Schubert #line 6645 "util/configparser.c"
6645b7c0c8c1SCy Schubert     break;
6646b7c0c8c1SCy Schubert 
6647*46d2f618SCy Schubert   case 604: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
6648*46d2f618SCy Schubert #line 3175 "util/configparser.y"
6649b7c0c8c1SCy Schubert         {
6650b7c0c8c1SCy Schubert 		OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6651b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6652b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6653b7c0c8c1SCy Schubert 		else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6654b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6655b7c0c8c1SCy Schubert 	}
6656*46d2f618SCy Schubert #line 6657 "util/configparser.c"
6657b7c0c8c1SCy Schubert     break;
6658b7c0c8c1SCy Schubert 
6659*46d2f618SCy Schubert   case 605: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
6660*46d2f618SCy Schubert #line 3184 "util/configparser.y"
6661b7c0c8c1SCy Schubert         {
6662b7c0c8c1SCy Schubert 		OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6663b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6664b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6665b7c0c8c1SCy Schubert 		else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6666b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6667b7c0c8c1SCy Schubert 	}
6668*46d2f618SCy Schubert #line 6669 "util/configparser.c"
6669b7c0c8c1SCy Schubert     break;
6670b7c0c8c1SCy Schubert 
6671*46d2f618SCy Schubert   case 606: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
6672*46d2f618SCy Schubert #line 3193 "util/configparser.y"
6673b7c0c8c1SCy Schubert         {
6674b7c0c8c1SCy Schubert 		OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6675b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6676b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6677b7c0c8c1SCy Schubert 		else cfg_parser->cfg->forwards->ssl_upstream =
6678b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6679b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6680b7c0c8c1SCy Schubert 	}
6681*46d2f618SCy Schubert #line 6682 "util/configparser.c"
6682b7c0c8c1SCy Schubert     break;
6683b7c0c8c1SCy Schubert 
6684*46d2f618SCy Schubert   case 607: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
6685*46d2f618SCy Schubert #line 3203 "util/configparser.y"
6686b7c0c8c1SCy Schubert         {
6687b7c0c8c1SCy Schubert                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6688b7c0c8c1SCy Schubert                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6689b7c0c8c1SCy Schubert                         yyerror("expected yes or no.");
6690b7c0c8c1SCy Schubert                 else cfg_parser->cfg->forwards->tcp_upstream =
6691b7c0c8c1SCy Schubert                         (strcmp((yyvsp[0].str), "yes")==0);
6692b7c0c8c1SCy Schubert                 free((yyvsp[0].str));
6693b7c0c8c1SCy Schubert         }
6694*46d2f618SCy Schubert #line 6695 "util/configparser.c"
6695b7c0c8c1SCy Schubert     break;
6696b7c0c8c1SCy Schubert 
6697*46d2f618SCy Schubert   case 608: /* auth_name: VAR_NAME STRING_ARG  */
6698*46d2f618SCy Schubert #line 3213 "util/configparser.y"
6699b7c0c8c1SCy Schubert         {
6700b7c0c8c1SCy Schubert 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6701b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->auths->name)
6702b7c0c8c1SCy Schubert 			yyerror("auth name override, there must be one name "
6703b7c0c8c1SCy Schubert 				"for one auth-zone");
6704b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->auths->name);
6705b7c0c8c1SCy Schubert 		cfg_parser->cfg->auths->name = (yyvsp[0].str);
6706b7c0c8c1SCy Schubert 	}
6707*46d2f618SCy Schubert #line 6708 "util/configparser.c"
6708b7c0c8c1SCy Schubert     break;
6709b7c0c8c1SCy Schubert 
6710*46d2f618SCy Schubert   case 609: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
6711*46d2f618SCy Schubert #line 3223 "util/configparser.y"
6712b7c0c8c1SCy Schubert         {
6713b7c0c8c1SCy Schubert 		OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6714b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->auths->zonefile);
6715b7c0c8c1SCy Schubert 		cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6716b7c0c8c1SCy Schubert 	}
6717*46d2f618SCy Schubert #line 6718 "util/configparser.c"
6718b7c0c8c1SCy Schubert     break;
6719b7c0c8c1SCy Schubert 
6720*46d2f618SCy Schubert   case 610: /* auth_master: VAR_MASTER STRING_ARG  */
6721*46d2f618SCy Schubert #line 3230 "util/configparser.y"
6722b7c0c8c1SCy Schubert         {
6723b7c0c8c1SCy Schubert 		OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6724b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6725b7c0c8c1SCy Schubert 			yyerror("out of memory");
6726b7c0c8c1SCy Schubert 	}
6727*46d2f618SCy Schubert #line 6728 "util/configparser.c"
6728b7c0c8c1SCy Schubert     break;
6729b7c0c8c1SCy Schubert 
6730*46d2f618SCy Schubert   case 611: /* auth_url: VAR_URL STRING_ARG  */
6731*46d2f618SCy Schubert #line 3237 "util/configparser.y"
6732b7c0c8c1SCy Schubert         {
6733b7c0c8c1SCy Schubert 		OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6734b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6735b7c0c8c1SCy Schubert 			yyerror("out of memory");
6736b7c0c8c1SCy Schubert 	}
6737*46d2f618SCy Schubert #line 6738 "util/configparser.c"
6738b7c0c8c1SCy Schubert     break;
6739b7c0c8c1SCy Schubert 
6740*46d2f618SCy Schubert   case 612: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
6741*46d2f618SCy Schubert #line 3244 "util/configparser.y"
6742b7c0c8c1SCy Schubert         {
6743b7c0c8c1SCy Schubert 		OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6744b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6745b7c0c8c1SCy Schubert 			(yyvsp[0].str)))
6746b7c0c8c1SCy Schubert 			yyerror("out of memory");
6747b7c0c8c1SCy Schubert 	}
6748*46d2f618SCy Schubert #line 6749 "util/configparser.c"
6749b7c0c8c1SCy Schubert     break;
6750b7c0c8c1SCy Schubert 
6751*46d2f618SCy Schubert   case 613: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
6752*46d2f618SCy Schubert #line 3252 "util/configparser.y"
6753b7c0c8c1SCy Schubert         {
6754b7c0c8c1SCy Schubert 		OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6755b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6756b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6757b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->zonemd_check =
6758b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6759b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6760b7c0c8c1SCy Schubert 	}
6761*46d2f618SCy Schubert #line 6762 "util/configparser.c"
6762b7c0c8c1SCy Schubert     break;
6763b7c0c8c1SCy Schubert 
6764*46d2f618SCy Schubert   case 614: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
6765*46d2f618SCy Schubert #line 3262 "util/configparser.y"
6766b7c0c8c1SCy Schubert         {
6767b7c0c8c1SCy Schubert 		OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6768b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6769b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6770b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->zonemd_reject_absence =
6771b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6772b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6773b7c0c8c1SCy Schubert 	}
6774*46d2f618SCy Schubert #line 6775 "util/configparser.c"
6775b7c0c8c1SCy Schubert     break;
6776b7c0c8c1SCy Schubert 
6777*46d2f618SCy Schubert   case 615: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
6778*46d2f618SCy Schubert #line 3272 "util/configparser.y"
6779b7c0c8c1SCy Schubert         {
6780b7c0c8c1SCy Schubert 		OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6781b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6782b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6783b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->for_downstream =
6784b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6785b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6786b7c0c8c1SCy Schubert 	}
6787*46d2f618SCy Schubert #line 6788 "util/configparser.c"
6788b7c0c8c1SCy Schubert     break;
6789b7c0c8c1SCy Schubert 
6790*46d2f618SCy Schubert   case 616: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
6791*46d2f618SCy Schubert #line 3282 "util/configparser.y"
6792b7c0c8c1SCy Schubert         {
6793b7c0c8c1SCy Schubert 		OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6794b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6795b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6796b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->for_upstream =
6797b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6798b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6799b7c0c8c1SCy Schubert 	}
6800*46d2f618SCy Schubert #line 6801 "util/configparser.c"
6801b7c0c8c1SCy Schubert     break;
6802b7c0c8c1SCy Schubert 
6803*46d2f618SCy Schubert   case 617: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
6804*46d2f618SCy Schubert #line 3292 "util/configparser.y"
6805b7c0c8c1SCy Schubert         {
6806b7c0c8c1SCy Schubert 		OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6807b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6808b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6809b7c0c8c1SCy Schubert 		else cfg_parser->cfg->auths->fallback_enabled =
6810b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6811b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6812b7c0c8c1SCy Schubert 	}
6813*46d2f618SCy Schubert #line 6814 "util/configparser.c"
6814b7c0c8c1SCy Schubert     break;
6815b7c0c8c1SCy Schubert 
6816*46d2f618SCy Schubert   case 618: /* view_name: VAR_NAME STRING_ARG  */
6817*46d2f618SCy Schubert #line 3302 "util/configparser.y"
6818b7c0c8c1SCy Schubert         {
6819b7c0c8c1SCy Schubert 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6820b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->views->name)
6821b7c0c8c1SCy Schubert 			yyerror("view name override, there must be one "
6822b7c0c8c1SCy Schubert 				"name for one view");
6823b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->views->name);
6824b7c0c8c1SCy Schubert 		cfg_parser->cfg->views->name = (yyvsp[0].str);
6825b7c0c8c1SCy Schubert 	}
6826*46d2f618SCy Schubert #line 6827 "util/configparser.c"
6827b7c0c8c1SCy Schubert     break;
6828b7c0c8c1SCy Schubert 
6829*46d2f618SCy Schubert   case 619: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
6830*46d2f618SCy Schubert #line 3312 "util/configparser.y"
6831b7c0c8c1SCy Schubert         {
6832b7c0c8c1SCy Schubert 		OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6833b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6834b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6835b7c0c8c1SCy Schubert 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6836b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
6837b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
6838b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
6839b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6840b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
6841b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_deny")!=0
6842b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "always_null")!=0
6843b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "noview")!=0
6844b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6845b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
6846b7c0c8c1SCy Schubert 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
6847b7c0c8c1SCy Schubert 			yyerror("local-zone type: expected static, deny, "
6848b7c0c8c1SCy Schubert 				"refuse, redirect, transparent, "
6849b7c0c8c1SCy Schubert 				"typetransparent, inform, inform_deny, "
6850b7c0c8c1SCy Schubert 				"inform_redirect, always_transparent, "
6851b7c0c8c1SCy Schubert 				"always_refuse, always_nxdomain, "
6852b7c0c8c1SCy Schubert 				"always_nodata, always_deny, always_null, "
6853b7c0c8c1SCy Schubert 				"noview, nodefault or ipset");
6854b7c0c8c1SCy Schubert 			free((yyvsp[-1].str));
6855b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6856b7c0c8c1SCy Schubert 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6857b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6858b7c0c8c1SCy Schubert 				local_zones_nodefault, (yyvsp[-1].str)))
6859b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
6860b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6861b7c0c8c1SCy Schubert #ifdef USE_IPSET
6862b7c0c8c1SCy Schubert 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
6863b7c0c8c1SCy Schubert 			size_t len = strlen((yyvsp[-1].str));
6864b7c0c8c1SCy Schubert 			/* Make sure to add the trailing dot.
6865b7c0c8c1SCy Schubert 			 * These are str compared to domain names. */
6866b7c0c8c1SCy Schubert 			if((yyvsp[-1].str)[len-1] != '.') {
6867b7c0c8c1SCy Schubert 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6868b7c0c8c1SCy Schubert 					fatal_exit("out of memory adding local-zone");
6869b7c0c8c1SCy Schubert 				}
6870b7c0c8c1SCy Schubert 				(yyvsp[-1].str)[len] = '.';
6871b7c0c8c1SCy Schubert 				(yyvsp[-1].str)[len+1] = 0;
6872b7c0c8c1SCy Schubert 			}
6873b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6874b7c0c8c1SCy Schubert 				local_zones_ipset, (yyvsp[-1].str)))
6875b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
6876b7c0c8c1SCy Schubert 			free((yyvsp[0].str));
6877b7c0c8c1SCy Schubert #endif
6878b7c0c8c1SCy Schubert 		} else {
6879b7c0c8c1SCy Schubert 			if(!cfg_str2list_insert(
6880b7c0c8c1SCy Schubert 				&cfg_parser->cfg->views->local_zones,
6881b7c0c8c1SCy Schubert 				(yyvsp[-1].str), (yyvsp[0].str)))
6882b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-zone");
6883b7c0c8c1SCy Schubert 		}
6884b7c0c8c1SCy Schubert 	}
6885*46d2f618SCy Schubert #line 6886 "util/configparser.c"
6886b7c0c8c1SCy Schubert     break;
6887b7c0c8c1SCy Schubert 
6888*46d2f618SCy Schubert   case 620: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
6889*46d2f618SCy Schubert #line 3368 "util/configparser.y"
6890b7c0c8c1SCy Schubert         {
6891b7c0c8c1SCy Schubert 		OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6892b7c0c8c1SCy Schubert 		validate_respip_action((yyvsp[0].str));
6893b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(
6894b7c0c8c1SCy Schubert 			&cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6895b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding per-view "
6896b7c0c8c1SCy Schubert 				"response-ip action");
6897b7c0c8c1SCy Schubert 	}
6898*46d2f618SCy Schubert #line 6899 "util/configparser.c"
6899b7c0c8c1SCy Schubert     break;
6900b7c0c8c1SCy Schubert 
6901*46d2f618SCy Schubert   case 621: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
6902*46d2f618SCy Schubert #line 3378 "util/configparser.y"
6903b7c0c8c1SCy Schubert         {
6904b7c0c8c1SCy Schubert 		OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6905b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(
6906b7c0c8c1SCy Schubert 			&cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6907b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding response-ip-data");
6908b7c0c8c1SCy Schubert 	}
6909*46d2f618SCy Schubert #line 6910 "util/configparser.c"
6910b7c0c8c1SCy Schubert     break;
6911b7c0c8c1SCy Schubert 
6912*46d2f618SCy Schubert   case 622: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
6913*46d2f618SCy Schubert #line 3386 "util/configparser.y"
6914b7c0c8c1SCy Schubert         {
6915b7c0c8c1SCy Schubert 		OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6916b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6917b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding local-data");
6918b7c0c8c1SCy Schubert 		}
6919b7c0c8c1SCy Schubert 	}
6920*46d2f618SCy Schubert #line 6921 "util/configparser.c"
6921b7c0c8c1SCy Schubert     break;
6922b7c0c8c1SCy Schubert 
6923*46d2f618SCy Schubert   case 623: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
6924*46d2f618SCy Schubert #line 3394 "util/configparser.y"
6925b7c0c8c1SCy Schubert         {
6926b7c0c8c1SCy Schubert 		char* ptr;
6927b7c0c8c1SCy Schubert 		OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6928b7c0c8c1SCy Schubert 		ptr = cfg_ptr_reverse((yyvsp[0].str));
6929b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6930b7c0c8c1SCy Schubert 		if(ptr) {
6931b7c0c8c1SCy Schubert 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6932b7c0c8c1SCy Schubert 				local_data, ptr))
6933b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding local-data");
6934b7c0c8c1SCy Schubert 		} else {
6935b7c0c8c1SCy Schubert 			yyerror("local-data-ptr could not be reversed");
6936b7c0c8c1SCy Schubert 		}
6937b7c0c8c1SCy Schubert 	}
6938*46d2f618SCy Schubert #line 6939 "util/configparser.c"
6939b7c0c8c1SCy Schubert     break;
6940b7c0c8c1SCy Schubert 
6941*46d2f618SCy Schubert   case 624: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
6942*46d2f618SCy Schubert #line 3409 "util/configparser.y"
6943b7c0c8c1SCy Schubert         {
6944b7c0c8c1SCy Schubert 		OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
6945b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6946b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6947b7c0c8c1SCy Schubert 		else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6948b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6949b7c0c8c1SCy Schubert 	}
6950*46d2f618SCy Schubert #line 6951 "util/configparser.c"
6951b7c0c8c1SCy Schubert     break;
6952b7c0c8c1SCy Schubert 
6953*46d2f618SCy Schubert   case 625: /* rcstart: VAR_REMOTE_CONTROL  */
6954*46d2f618SCy Schubert #line 3418 "util/configparser.y"
6955b7c0c8c1SCy Schubert         {
6956b7c0c8c1SCy Schubert 		OUTYY(("\nP(remote-control:)\n"));
6957b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
6958b7c0c8c1SCy Schubert 	}
6959*46d2f618SCy Schubert #line 6960 "util/configparser.c"
6960b7c0c8c1SCy Schubert     break;
6961b7c0c8c1SCy Schubert 
6962*46d2f618SCy Schubert   case 636: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
6963*46d2f618SCy Schubert #line 3430 "util/configparser.y"
6964b7c0c8c1SCy Schubert         {
6965b7c0c8c1SCy Schubert 		OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
6966b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6967b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
6968b7c0c8c1SCy Schubert 		else cfg_parser->cfg->remote_control_enable =
6969b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
6970b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6971b7c0c8c1SCy Schubert 	}
6972*46d2f618SCy Schubert #line 6973 "util/configparser.c"
6973b7c0c8c1SCy Schubert     break;
6974b7c0c8c1SCy Schubert 
6975*46d2f618SCy Schubert   case 637: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
6976*46d2f618SCy Schubert #line 3440 "util/configparser.y"
6977b7c0c8c1SCy Schubert         {
6978b7c0c8c1SCy Schubert 		OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
6979b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
6980b7c0c8c1SCy Schubert 			yyerror("control port number expected");
6981b7c0c8c1SCy Schubert 		else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
6982b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
6983b7c0c8c1SCy Schubert 	}
6984*46d2f618SCy Schubert #line 6985 "util/configparser.c"
6985b7c0c8c1SCy Schubert     break;
6986b7c0c8c1SCy Schubert 
6987*46d2f618SCy Schubert   case 638: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
6988*46d2f618SCy Schubert #line 3449 "util/configparser.y"
6989b7c0c8c1SCy Schubert         {
6990b7c0c8c1SCy Schubert 		OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
6991b7c0c8c1SCy Schubert 		if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
6992b7c0c8c1SCy Schubert 			yyerror("out of memory");
6993b7c0c8c1SCy Schubert 	}
6994*46d2f618SCy Schubert #line 6995 "util/configparser.c"
6995b7c0c8c1SCy Schubert     break;
6996b7c0c8c1SCy Schubert 
6997*46d2f618SCy Schubert   case 639: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
6998*46d2f618SCy Schubert #line 3456 "util/configparser.y"
6999b7c0c8c1SCy Schubert         {
7000b7c0c8c1SCy Schubert 		OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7001b7c0c8c1SCy Schubert 		cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7002b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7003b7c0c8c1SCy Schubert 	}
7004*46d2f618SCy Schubert #line 7005 "util/configparser.c"
7005b7c0c8c1SCy Schubert     break;
7006b7c0c8c1SCy Schubert 
7007*46d2f618SCy Schubert   case 640: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
7008*46d2f618SCy Schubert #line 3463 "util/configparser.y"
7009b7c0c8c1SCy Schubert         {
7010b7c0c8c1SCy Schubert 		OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7011b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->server_key_file);
7012b7c0c8c1SCy Schubert 		cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7013b7c0c8c1SCy Schubert 	}
7014*46d2f618SCy Schubert #line 7015 "util/configparser.c"
7015b7c0c8c1SCy Schubert     break;
7016b7c0c8c1SCy Schubert 
7017*46d2f618SCy Schubert   case 641: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
7018*46d2f618SCy Schubert #line 3470 "util/configparser.y"
7019b7c0c8c1SCy Schubert         {
7020b7c0c8c1SCy Schubert 		OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7021b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->server_cert_file);
7022b7c0c8c1SCy Schubert 		cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7023b7c0c8c1SCy Schubert 	}
7024*46d2f618SCy Schubert #line 7025 "util/configparser.c"
7025b7c0c8c1SCy Schubert     break;
7026b7c0c8c1SCy Schubert 
7027*46d2f618SCy Schubert   case 642: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
7028*46d2f618SCy Schubert #line 3477 "util/configparser.y"
7029b7c0c8c1SCy Schubert         {
7030b7c0c8c1SCy Schubert 		OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7031b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->control_key_file);
7032b7c0c8c1SCy Schubert 		cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7033b7c0c8c1SCy Schubert 	}
7034*46d2f618SCy Schubert #line 7035 "util/configparser.c"
7035b7c0c8c1SCy Schubert     break;
7036b7c0c8c1SCy Schubert 
7037*46d2f618SCy Schubert   case 643: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
7038*46d2f618SCy Schubert #line 3484 "util/configparser.y"
7039b7c0c8c1SCy Schubert         {
7040b7c0c8c1SCy Schubert 		OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7041b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->control_cert_file);
7042b7c0c8c1SCy Schubert 		cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7043b7c0c8c1SCy Schubert 	}
7044*46d2f618SCy Schubert #line 7045 "util/configparser.c"
7045b7c0c8c1SCy Schubert     break;
7046b7c0c8c1SCy Schubert 
7047*46d2f618SCy Schubert   case 644: /* dtstart: VAR_DNSTAP  */
7048*46d2f618SCy Schubert #line 3491 "util/configparser.y"
7049b7c0c8c1SCy Schubert         {
7050b7c0c8c1SCy Schubert 		OUTYY(("\nP(dnstap:)\n"));
7051b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7052b7c0c8c1SCy Schubert 	}
7053*46d2f618SCy Schubert #line 7054 "util/configparser.c"
7054b7c0c8c1SCy Schubert     break;
7055b7c0c8c1SCy Schubert 
7056*46d2f618SCy Schubert   case 667: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
7057*46d2f618SCy Schubert #line 3513 "util/configparser.y"
7058b7c0c8c1SCy Schubert         {
7059b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7060b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7061b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7062b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7063b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7064b7c0c8c1SCy Schubert 	}
7065*46d2f618SCy Schubert #line 7066 "util/configparser.c"
7066b7c0c8c1SCy Schubert     break;
7067b7c0c8c1SCy Schubert 
7068*46d2f618SCy Schubert   case 668: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
7069*46d2f618SCy Schubert #line 3522 "util/configparser.y"
7070b7c0c8c1SCy Schubert         {
7071b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7072b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7073b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7074b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_bidirectional =
7075b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7076b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7077b7c0c8c1SCy Schubert 	}
7078*46d2f618SCy Schubert #line 7079 "util/configparser.c"
7079b7c0c8c1SCy Schubert     break;
7080b7c0c8c1SCy Schubert 
7081*46d2f618SCy Schubert   case 669: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
7082*46d2f618SCy Schubert #line 3532 "util/configparser.y"
7083b7c0c8c1SCy Schubert         {
7084b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7085b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_socket_path);
7086b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7087b7c0c8c1SCy Schubert 	}
7088*46d2f618SCy Schubert #line 7089 "util/configparser.c"
7089b7c0c8c1SCy Schubert     break;
7090b7c0c8c1SCy Schubert 
7091*46d2f618SCy Schubert   case 670: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
7092*46d2f618SCy Schubert #line 3539 "util/configparser.y"
7093b7c0c8c1SCy Schubert         {
7094b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7095b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_ip);
7096b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7097b7c0c8c1SCy Schubert 	}
7098*46d2f618SCy Schubert #line 7099 "util/configparser.c"
7099b7c0c8c1SCy Schubert     break;
7100b7c0c8c1SCy Schubert 
7101*46d2f618SCy Schubert   case 671: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
7102*46d2f618SCy Schubert #line 3546 "util/configparser.y"
7103b7c0c8c1SCy Schubert         {
7104b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7105b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7106b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7107b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7108b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7109b7c0c8c1SCy Schubert 	}
7110*46d2f618SCy Schubert #line 7111 "util/configparser.c"
7111b7c0c8c1SCy Schubert     break;
7112b7c0c8c1SCy Schubert 
7113*46d2f618SCy Schubert   case 672: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
7114*46d2f618SCy Schubert #line 3555 "util/configparser.y"
7115b7c0c8c1SCy Schubert         {
7116b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7117b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_tls_server_name);
7118b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7119b7c0c8c1SCy Schubert 	}
7120*46d2f618SCy Schubert #line 7121 "util/configparser.c"
7121b7c0c8c1SCy Schubert     break;
7122b7c0c8c1SCy Schubert 
7123*46d2f618SCy Schubert   case 673: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
7124*46d2f618SCy Schubert #line 3562 "util/configparser.y"
7125b7c0c8c1SCy Schubert         {
7126b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7127b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7128b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7129b7c0c8c1SCy Schubert 	}
7130*46d2f618SCy Schubert #line 7131 "util/configparser.c"
7131b7c0c8c1SCy Schubert     break;
7132b7c0c8c1SCy Schubert 
7133*46d2f618SCy Schubert   case 674: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
7134*46d2f618SCy Schubert #line 3569 "util/configparser.y"
7135b7c0c8c1SCy Schubert         {
7136b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7137b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_tls_client_key_file);
7138b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7139b7c0c8c1SCy Schubert 	}
7140*46d2f618SCy Schubert #line 7141 "util/configparser.c"
7141b7c0c8c1SCy Schubert     break;
7142b7c0c8c1SCy Schubert 
7143*46d2f618SCy Schubert   case 675: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
7144*46d2f618SCy Schubert #line 3576 "util/configparser.y"
7145b7c0c8c1SCy Schubert         {
7146b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7147b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7148b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7149b7c0c8c1SCy Schubert 	}
7150*46d2f618SCy Schubert #line 7151 "util/configparser.c"
7151b7c0c8c1SCy Schubert     break;
7152b7c0c8c1SCy Schubert 
7153*46d2f618SCy Schubert   case 676: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
7154*46d2f618SCy Schubert #line 3583 "util/configparser.y"
7155b7c0c8c1SCy Schubert         {
7156b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7157b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7158b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7159b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7160b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7161b7c0c8c1SCy Schubert 	}
7162*46d2f618SCy Schubert #line 7163 "util/configparser.c"
7163b7c0c8c1SCy Schubert     break;
7164b7c0c8c1SCy Schubert 
7165*46d2f618SCy Schubert   case 677: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
7166*46d2f618SCy Schubert #line 3592 "util/configparser.y"
7167b7c0c8c1SCy Schubert         {
7168b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7169b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7170b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7171b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7172b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7173b7c0c8c1SCy Schubert 	}
7174*46d2f618SCy Schubert #line 7175 "util/configparser.c"
7175b7c0c8c1SCy Schubert     break;
7176b7c0c8c1SCy Schubert 
7177*46d2f618SCy Schubert   case 678: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
7178*46d2f618SCy Schubert #line 3601 "util/configparser.y"
7179b7c0c8c1SCy Schubert         {
7180b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7181b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_identity);
7182b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7183b7c0c8c1SCy Schubert 	}
7184*46d2f618SCy Schubert #line 7185 "util/configparser.c"
7185b7c0c8c1SCy Schubert     break;
7186b7c0c8c1SCy Schubert 
7187*46d2f618SCy Schubert   case 679: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
7188*46d2f618SCy Schubert #line 3608 "util/configparser.y"
7189b7c0c8c1SCy Schubert         {
7190b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7191b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnstap_version);
7192b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7193b7c0c8c1SCy Schubert 	}
7194*46d2f618SCy Schubert #line 7195 "util/configparser.c"
7195b7c0c8c1SCy Schubert     break;
7196b7c0c8c1SCy Schubert 
7197*46d2f618SCy Schubert   case 680: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
7198*46d2f618SCy Schubert #line 3615 "util/configparser.y"
7199b7c0c8c1SCy Schubert         {
7200b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7201b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7202b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7203b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7204b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7205b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7206b7c0c8c1SCy Schubert 	}
7207*46d2f618SCy Schubert #line 7208 "util/configparser.c"
7208b7c0c8c1SCy Schubert     break;
7209b7c0c8c1SCy Schubert 
7210*46d2f618SCy Schubert   case 681: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
7211*46d2f618SCy Schubert #line 3625 "util/configparser.y"
7212b7c0c8c1SCy Schubert         {
7213b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7214b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7215b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7216b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7217b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7218b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7219b7c0c8c1SCy Schubert 	}
7220*46d2f618SCy Schubert #line 7221 "util/configparser.c"
7221b7c0c8c1SCy Schubert     break;
7222b7c0c8c1SCy Schubert 
7223*46d2f618SCy Schubert   case 682: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
7224*46d2f618SCy Schubert #line 3635 "util/configparser.y"
7225b7c0c8c1SCy Schubert         {
7226b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7227b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7228b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7229b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_client_query_messages =
7230b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7231b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7232b7c0c8c1SCy Schubert 	}
7233*46d2f618SCy Schubert #line 7234 "util/configparser.c"
7234b7c0c8c1SCy Schubert     break;
7235b7c0c8c1SCy Schubert 
7236*46d2f618SCy Schubert   case 683: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
7237*46d2f618SCy Schubert #line 3645 "util/configparser.y"
7238b7c0c8c1SCy Schubert         {
7239b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7240b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7241b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7242b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_client_response_messages =
7243b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7244b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7245b7c0c8c1SCy Schubert 	}
7246*46d2f618SCy Schubert #line 7247 "util/configparser.c"
7247b7c0c8c1SCy Schubert     break;
7248b7c0c8c1SCy Schubert 
7249*46d2f618SCy Schubert   case 684: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
7250*46d2f618SCy Schubert #line 3655 "util/configparser.y"
7251b7c0c8c1SCy Schubert         {
7252b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7253b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7254b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7255b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7256b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7257b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7258b7c0c8c1SCy Schubert 	}
7259*46d2f618SCy Schubert #line 7260 "util/configparser.c"
7260b7c0c8c1SCy Schubert     break;
7261b7c0c8c1SCy Schubert 
7262*46d2f618SCy Schubert   case 685: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
7263*46d2f618SCy Schubert #line 3665 "util/configparser.y"
7264b7c0c8c1SCy Schubert         {
7265b7c0c8c1SCy Schubert 		OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7266b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7267b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7268b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7269b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7270b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7271b7c0c8c1SCy Schubert 	}
7272*46d2f618SCy Schubert #line 7273 "util/configparser.c"
7273b7c0c8c1SCy Schubert     break;
7274b7c0c8c1SCy Schubert 
7275*46d2f618SCy Schubert   case 686: /* dt_dnstap_sample_rate: VAR_DNSTAP_SAMPLE_RATE STRING_ARG  */
7276*46d2f618SCy Schubert #line 3675 "util/configparser.y"
727756850988SCy Schubert         {
727856850988SCy Schubert 		OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
727956850988SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
728056850988SCy Schubert 			yyerror("number expected");
728156850988SCy Schubert 		else if(atoi((yyvsp[0].str)) < 0)
728256850988SCy Schubert 			yyerror("dnstap sample rate too small");
728356850988SCy Schubert 		else	cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
728456850988SCy Schubert 		free((yyvsp[0].str));
728556850988SCy Schubert 	}
7286*46d2f618SCy Schubert #line 7287 "util/configparser.c"
728756850988SCy Schubert     break;
728856850988SCy Schubert 
7289*46d2f618SCy Schubert   case 687: /* pythonstart: VAR_PYTHON  */
7290*46d2f618SCy Schubert #line 3686 "util/configparser.y"
7291b7c0c8c1SCy Schubert         {
7292b7c0c8c1SCy Schubert 		OUTYY(("\nP(python:)\n"));
7293b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7294b7c0c8c1SCy Schubert 	}
7295*46d2f618SCy Schubert #line 7296 "util/configparser.c"
7296b7c0c8c1SCy Schubert     break;
7297b7c0c8c1SCy Schubert 
7298*46d2f618SCy Schubert   case 691: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
7299*46d2f618SCy Schubert #line 3696 "util/configparser.y"
7300b7c0c8c1SCy Schubert         {
7301b7c0c8c1SCy Schubert 		OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7302b7c0c8c1SCy Schubert 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7303b7c0c8c1SCy Schubert 			yyerror("out of memory");
7304b7c0c8c1SCy Schubert 	}
7305*46d2f618SCy Schubert #line 7306 "util/configparser.c"
7306b7c0c8c1SCy Schubert     break;
7307b7c0c8c1SCy Schubert 
7308*46d2f618SCy Schubert   case 692: /* dynlibstart: VAR_DYNLIB  */
7309*46d2f618SCy Schubert #line 3703 "util/configparser.y"
7310b7c0c8c1SCy Schubert         {
7311b7c0c8c1SCy Schubert 		OUTYY(("\nP(dynlib:)\n"));
7312b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7313b7c0c8c1SCy Schubert 	}
7314*46d2f618SCy Schubert #line 7315 "util/configparser.c"
7315b7c0c8c1SCy Schubert     break;
7316b7c0c8c1SCy Schubert 
7317*46d2f618SCy Schubert   case 696: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
7318*46d2f618SCy Schubert #line 3713 "util/configparser.y"
7319b7c0c8c1SCy Schubert         {
7320b7c0c8c1SCy Schubert 		OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7321b7c0c8c1SCy Schubert 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7322b7c0c8c1SCy Schubert 			yyerror("out of memory");
7323b7c0c8c1SCy Schubert 	}
7324*46d2f618SCy Schubert #line 7325 "util/configparser.c"
7325b7c0c8c1SCy Schubert     break;
7326b7c0c8c1SCy Schubert 
7327*46d2f618SCy Schubert   case 697: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
7328*46d2f618SCy Schubert #line 3720 "util/configparser.y"
7329b7c0c8c1SCy Schubert         {
7330b7c0c8c1SCy Schubert 		OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7331b7c0c8c1SCy Schubert 		if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7332b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7333b7c0c8c1SCy Schubert 		else cfg_parser->cfg->disable_dnssec_lame_check =
7334b7c0c8c1SCy Schubert 			(strcmp((yyvsp[0].str), "yes")==0);
7335b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7336b7c0c8c1SCy Schubert 	}
7337*46d2f618SCy Schubert #line 7338 "util/configparser.c"
7338b7c0c8c1SCy Schubert     break;
7339b7c0c8c1SCy Schubert 
7340*46d2f618SCy Schubert   case 698: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
7341*46d2f618SCy Schubert #line 3730 "util/configparser.y"
7342b7c0c8c1SCy Schubert         {
7343b7c0c8c1SCy Schubert 		OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7344b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->log_identity);
7345b7c0c8c1SCy Schubert 		cfg_parser->cfg->log_identity = (yyvsp[0].str);
7346b7c0c8c1SCy Schubert 	}
7347*46d2f618SCy Schubert #line 7348 "util/configparser.c"
7348b7c0c8c1SCy Schubert     break;
7349b7c0c8c1SCy Schubert 
7350*46d2f618SCy Schubert   case 699: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
7351*46d2f618SCy Schubert #line 3737 "util/configparser.y"
7352b7c0c8c1SCy Schubert         {
7353b7c0c8c1SCy Schubert 		OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7354b7c0c8c1SCy Schubert 		validate_respip_action((yyvsp[0].str));
7355b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7356b7c0c8c1SCy Schubert 			(yyvsp[-1].str), (yyvsp[0].str)))
7357b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding response-ip");
7358b7c0c8c1SCy Schubert 	}
7359*46d2f618SCy Schubert #line 7360 "util/configparser.c"
7360b7c0c8c1SCy Schubert     break;
7361b7c0c8c1SCy Schubert 
7362*46d2f618SCy Schubert   case 700: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
7363*46d2f618SCy Schubert #line 3746 "util/configparser.y"
7364b7c0c8c1SCy Schubert         {
7365b7c0c8c1SCy Schubert 		OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7366b7c0c8c1SCy Schubert 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7367b7c0c8c1SCy Schubert 			(yyvsp[-1].str), (yyvsp[0].str)))
7368b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding response-ip-data");
7369b7c0c8c1SCy Schubert 	}
7370*46d2f618SCy Schubert #line 7371 "util/configparser.c"
7371b7c0c8c1SCy Schubert     break;
7372b7c0c8c1SCy Schubert 
7373*46d2f618SCy Schubert   case 701: /* dnscstart: VAR_DNSCRYPT  */
7374*46d2f618SCy Schubert #line 3754 "util/configparser.y"
7375b7c0c8c1SCy Schubert         {
7376b7c0c8c1SCy Schubert 		OUTYY(("\nP(dnscrypt:)\n"));
7377b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7378b7c0c8c1SCy Schubert 	}
7379*46d2f618SCy Schubert #line 7380 "util/configparser.c"
7380b7c0c8c1SCy Schubert     break;
7381b7c0c8c1SCy Schubert 
7382*46d2f618SCy Schubert   case 714: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
7383*46d2f618SCy Schubert #line 3771 "util/configparser.y"
7384b7c0c8c1SCy Schubert         {
7385b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7386b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7387b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7388b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7389b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7390b7c0c8c1SCy Schubert 	}
7391*46d2f618SCy Schubert #line 7392 "util/configparser.c"
7392b7c0c8c1SCy Schubert     break;
7393b7c0c8c1SCy Schubert 
7394*46d2f618SCy Schubert   case 715: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
7395*46d2f618SCy Schubert #line 3780 "util/configparser.y"
7396b7c0c8c1SCy Schubert         {
7397b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7398b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
7399b7c0c8c1SCy Schubert 			yyerror("port number expected");
7400b7c0c8c1SCy Schubert 		else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7401b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7402b7c0c8c1SCy Schubert 	}
7403*46d2f618SCy Schubert #line 7404 "util/configparser.c"
7404b7c0c8c1SCy Schubert     break;
7405b7c0c8c1SCy Schubert 
7406*46d2f618SCy Schubert   case 716: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
7407*46d2f618SCy Schubert #line 3789 "util/configparser.y"
7408b7c0c8c1SCy Schubert         {
7409b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7410b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->dnscrypt_provider);
7411b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7412b7c0c8c1SCy Schubert 	}
7413*46d2f618SCy Schubert #line 7414 "util/configparser.c"
7414b7c0c8c1SCy Schubert     break;
7415b7c0c8c1SCy Schubert 
7416*46d2f618SCy Schubert   case 717: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
7417*46d2f618SCy Schubert #line 3796 "util/configparser.y"
7418b7c0c8c1SCy Schubert         {
7419b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7420b7c0c8c1SCy Schubert 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7421b7c0c8c1SCy Schubert 			log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7422b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7423b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding dnscrypt-provider-cert");
7424b7c0c8c1SCy Schubert 	}
7425*46d2f618SCy Schubert #line 7426 "util/configparser.c"
7426b7c0c8c1SCy Schubert     break;
7427b7c0c8c1SCy Schubert 
7428*46d2f618SCy Schubert   case 718: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
7429*46d2f618SCy Schubert #line 3805 "util/configparser.y"
7430b7c0c8c1SCy Schubert         {
7431b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7432b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7433b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7434b7c0c8c1SCy Schubert 	}
7435*46d2f618SCy Schubert #line 7436 "util/configparser.c"
7436b7c0c8c1SCy Schubert     break;
7437b7c0c8c1SCy Schubert 
7438*46d2f618SCy Schubert   case 719: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
7439*46d2f618SCy Schubert #line 3812 "util/configparser.y"
7440b7c0c8c1SCy Schubert         {
7441b7c0c8c1SCy Schubert 		OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7442b7c0c8c1SCy Schubert 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7443b7c0c8c1SCy Schubert 			log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7444b7c0c8c1SCy Schubert 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7445b7c0c8c1SCy Schubert 			fatal_exit("out of memory adding dnscrypt-secret-key");
7446b7c0c8c1SCy Schubert 	}
7447*46d2f618SCy Schubert #line 7448 "util/configparser.c"
7448b7c0c8c1SCy Schubert     break;
7449b7c0c8c1SCy Schubert 
7450*46d2f618SCy Schubert   case 720: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
7451*46d2f618SCy Schubert #line 3821 "util/configparser.y"
7452b7c0c8c1SCy Schubert   {
7453b7c0c8c1SCy Schubert 	OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7454b7c0c8c1SCy Schubert 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7455b7c0c8c1SCy Schubert 		yyerror("memory size expected");
7456b7c0c8c1SCy Schubert 	free((yyvsp[0].str));
7457b7c0c8c1SCy Schubert   }
7458*46d2f618SCy Schubert #line 7459 "util/configparser.c"
7459b7c0c8c1SCy Schubert     break;
7460b7c0c8c1SCy Schubert 
7461*46d2f618SCy Schubert   case 721: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
7462*46d2f618SCy Schubert #line 3829 "util/configparser.y"
7463b7c0c8c1SCy Schubert   {
7464b7c0c8c1SCy Schubert 	OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7465b7c0c8c1SCy Schubert 	if(atoi((yyvsp[0].str)) == 0) {
7466b7c0c8c1SCy Schubert 		yyerror("number expected");
7467b7c0c8c1SCy Schubert 	} else {
7468b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7469b7c0c8c1SCy Schubert 		if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7470b7c0c8c1SCy Schubert 			yyerror("must be a power of 2");
7471b7c0c8c1SCy Schubert 	}
7472b7c0c8c1SCy Schubert 	free((yyvsp[0].str));
7473b7c0c8c1SCy Schubert   }
7474*46d2f618SCy Schubert #line 7475 "util/configparser.c"
7475b7c0c8c1SCy Schubert     break;
7476b7c0c8c1SCy Schubert 
7477*46d2f618SCy Schubert   case 722: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
7478*46d2f618SCy Schubert #line 3842 "util/configparser.y"
7479b7c0c8c1SCy Schubert   {
7480b7c0c8c1SCy Schubert 	OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7481b7c0c8c1SCy Schubert 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7482b7c0c8c1SCy Schubert 		yyerror("memory size expected");
7483b7c0c8c1SCy Schubert 	free((yyvsp[0].str));
7484b7c0c8c1SCy Schubert   }
7485*46d2f618SCy Schubert #line 7486 "util/configparser.c"
7486b7c0c8c1SCy Schubert     break;
7487b7c0c8c1SCy Schubert 
7488*46d2f618SCy Schubert   case 723: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
7489*46d2f618SCy Schubert #line 3850 "util/configparser.y"
7490b7c0c8c1SCy Schubert   {
7491b7c0c8c1SCy Schubert 	OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7492b7c0c8c1SCy Schubert 	if(atoi((yyvsp[0].str)) == 0) {
7493b7c0c8c1SCy Schubert 		yyerror("number expected");
7494b7c0c8c1SCy Schubert 	} else {
7495b7c0c8c1SCy Schubert 		cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7496b7c0c8c1SCy Schubert 		if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7497b7c0c8c1SCy Schubert 			yyerror("must be a power of 2");
7498b7c0c8c1SCy Schubert 	}
7499b7c0c8c1SCy Schubert 	free((yyvsp[0].str));
7500b7c0c8c1SCy Schubert   }
7501*46d2f618SCy Schubert #line 7502 "util/configparser.c"
7502b7c0c8c1SCy Schubert     break;
7503b7c0c8c1SCy Schubert 
7504*46d2f618SCy Schubert   case 724: /* cachedbstart: VAR_CACHEDB  */
7505*46d2f618SCy Schubert #line 3863 "util/configparser.y"
7506b7c0c8c1SCy Schubert         {
7507b7c0c8c1SCy Schubert 		OUTYY(("\nP(cachedb:)\n"));
7508b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7509b7c0c8c1SCy Schubert 	}
7510*46d2f618SCy Schubert #line 7511 "util/configparser.c"
7511b7c0c8c1SCy Schubert     break;
7512b7c0c8c1SCy Schubert 
7513*46d2f618SCy Schubert   case 740: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
7514*46d2f618SCy Schubert #line 3877 "util/configparser.y"
7515b7c0c8c1SCy Schubert         {
7516b7c0c8c1SCy Schubert 	#ifdef USE_CACHEDB
7517b7c0c8c1SCy Schubert 		OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7518b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->cachedb_backend);
7519b7c0c8c1SCy Schubert 		cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7520b7c0c8c1SCy Schubert 	#else
7521b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7522b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7523b7c0c8c1SCy Schubert 	#endif
7524b7c0c8c1SCy Schubert 	}
7525*46d2f618SCy Schubert #line 7526 "util/configparser.c"
7526b7c0c8c1SCy Schubert     break;
7527b7c0c8c1SCy Schubert 
7528*46d2f618SCy Schubert   case 741: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
7529*46d2f618SCy Schubert #line 3889 "util/configparser.y"
7530b7c0c8c1SCy Schubert         {
7531b7c0c8c1SCy Schubert 	#ifdef USE_CACHEDB
7532b7c0c8c1SCy Schubert 		OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7533b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->cachedb_secret);
7534b7c0c8c1SCy Schubert 		cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7535b7c0c8c1SCy Schubert 	#else
7536b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7537b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7538b7c0c8c1SCy Schubert 	#endif
7539b7c0c8c1SCy Schubert 	}
7540*46d2f618SCy Schubert #line 7541 "util/configparser.c"
7541b7c0c8c1SCy Schubert     break;
7542b7c0c8c1SCy Schubert 
7543*46d2f618SCy Schubert   case 742: /* cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG  */
7544*46d2f618SCy Schubert #line 3901 "util/configparser.y"
7545b7c0c8c1SCy Schubert         {
7546b7c0c8c1SCy Schubert 	#ifdef USE_CACHEDB
7547b7c0c8c1SCy Schubert 		OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7548b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7549b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7550b7c0c8c1SCy Schubert 		else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7551b7c0c8c1SCy Schubert 	#else
7552b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7553b7c0c8c1SCy Schubert 	#endif
7554b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7555b7c0c8c1SCy Schubert 	}
7556*46d2f618SCy Schubert #line 7557 "util/configparser.c"
7557b7c0c8c1SCy Schubert     break;
7558b7c0c8c1SCy Schubert 
7559*46d2f618SCy Schubert   case 743: /* cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG  */
7560*46d2f618SCy Schubert #line 3914 "util/configparser.y"
7561335c7cdaSCy Schubert         {
7562335c7cdaSCy Schubert 	#ifdef USE_CACHEDB
7563335c7cdaSCy Schubert 		OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7564335c7cdaSCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7565335c7cdaSCy Schubert 			yyerror("expected yes or no.");
7566335c7cdaSCy Schubert 		else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7567335c7cdaSCy Schubert 	#else
7568335c7cdaSCy Schubert 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7569335c7cdaSCy Schubert 	#endif
7570335c7cdaSCy Schubert 		free((yyvsp[0].str));
7571335c7cdaSCy Schubert 	}
7572*46d2f618SCy Schubert #line 7573 "util/configparser.c"
7573335c7cdaSCy Schubert     break;
7574335c7cdaSCy Schubert 
7575*46d2f618SCy Schubert   case 744: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
7576*46d2f618SCy Schubert #line 3927 "util/configparser.y"
7577b7c0c8c1SCy Schubert         {
7578b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7579b7c0c8c1SCy Schubert 		OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7580b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->redis_server_host);
7581b7c0c8c1SCy Schubert 		cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7582b7c0c8c1SCy Schubert 	#else
7583b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7584b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7585b7c0c8c1SCy Schubert 	#endif
7586b7c0c8c1SCy Schubert 	}
7587*46d2f618SCy Schubert #line 7588 "util/configparser.c"
7588b7c0c8c1SCy Schubert     break;
7589b7c0c8c1SCy Schubert 
7590*46d2f618SCy Schubert   case 745: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
7591*46d2f618SCy Schubert #line 3939 "util/configparser.y"
7592b7c0c8c1SCy Schubert         {
7593b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7594b7c0c8c1SCy Schubert 		int port;
7595b7c0c8c1SCy Schubert 		OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7596b7c0c8c1SCy Schubert 		port = atoi((yyvsp[0].str));
7597b7c0c8c1SCy Schubert 		if(port == 0 || port < 0 || port > 65535)
7598b7c0c8c1SCy Schubert 			yyerror("valid redis server port number expected");
7599b7c0c8c1SCy Schubert 		else cfg_parser->cfg->redis_server_port = port;
7600b7c0c8c1SCy Schubert 	#else
7601b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7602b7c0c8c1SCy Schubert 	#endif
7603b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7604b7c0c8c1SCy Schubert 	}
7605*46d2f618SCy Schubert #line 7606 "util/configparser.c"
7606b7c0c8c1SCy Schubert     break;
7607b7c0c8c1SCy Schubert 
7608*46d2f618SCy Schubert   case 746: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG  */
7609*46d2f618SCy Schubert #line 3954 "util/configparser.y"
7610b7c0c8c1SCy Schubert         {
7611b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7612b7c0c8c1SCy Schubert 		OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7613b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->redis_server_path);
7614b7c0c8c1SCy Schubert 		cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7615b7c0c8c1SCy Schubert 	#else
7616b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7617b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7618b7c0c8c1SCy Schubert 	#endif
7619b7c0c8c1SCy Schubert 	}
7620*46d2f618SCy Schubert #line 7621 "util/configparser.c"
7621b7c0c8c1SCy Schubert     break;
7622b7c0c8c1SCy Schubert 
7623*46d2f618SCy Schubert   case 747: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG  */
7624*46d2f618SCy Schubert #line 3966 "util/configparser.y"
7625b7c0c8c1SCy Schubert         {
7626b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7627b7c0c8c1SCy Schubert 		OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7628b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->redis_server_password);
7629b7c0c8c1SCy Schubert 		cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7630b7c0c8c1SCy Schubert 	#else
7631b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7632b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7633b7c0c8c1SCy Schubert 	#endif
7634b7c0c8c1SCy Schubert 	}
7635*46d2f618SCy Schubert #line 7636 "util/configparser.c"
7636b7c0c8c1SCy Schubert     break;
7637b7c0c8c1SCy Schubert 
7638*46d2f618SCy Schubert   case 748: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
7639*46d2f618SCy Schubert #line 3978 "util/configparser.y"
7640b7c0c8c1SCy Schubert         {
7641b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7642b7c0c8c1SCy Schubert 		OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7643b7c0c8c1SCy Schubert 		if(atoi((yyvsp[0].str)) == 0)
7644b7c0c8c1SCy Schubert 			yyerror("redis timeout value expected");
7645b7c0c8c1SCy Schubert 		else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7646b7c0c8c1SCy Schubert 	#else
7647b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7648b7c0c8c1SCy Schubert 	#endif
7649b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7650b7c0c8c1SCy Schubert 	}
7651*46d2f618SCy Schubert #line 7652 "util/configparser.c"
7652b7c0c8c1SCy Schubert     break;
7653b7c0c8c1SCy Schubert 
7654*46d2f618SCy Schubert   case 749: /* redis_command_timeout: VAR_CACHEDB_REDISCOMMANDTIMEOUT STRING_ARG  */
7655*46d2f618SCy Schubert #line 3991 "util/configparser.y"
7656*46d2f618SCy Schubert         {
7657*46d2f618SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7658*46d2f618SCy Schubert 		OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
7659*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7660*46d2f618SCy Schubert 			yyerror("redis command timeout value expected");
7661*46d2f618SCy Schubert 		else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
7662*46d2f618SCy Schubert 	#else
7663*46d2f618SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7664*46d2f618SCy Schubert 	#endif
7665*46d2f618SCy Schubert 		free((yyvsp[0].str));
7666*46d2f618SCy Schubert 	}
7667*46d2f618SCy Schubert #line 7668 "util/configparser.c"
7668*46d2f618SCy Schubert     break;
7669*46d2f618SCy Schubert 
7670*46d2f618SCy Schubert   case 750: /* redis_connect_timeout: VAR_CACHEDB_REDISCONNECTTIMEOUT STRING_ARG  */
7671*46d2f618SCy Schubert #line 4004 "util/configparser.y"
7672*46d2f618SCy Schubert         {
7673*46d2f618SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7674*46d2f618SCy Schubert 		OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
7675*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7676*46d2f618SCy Schubert 			yyerror("redis connect timeout value expected");
7677*46d2f618SCy Schubert 		else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
7678*46d2f618SCy Schubert 	#else
7679*46d2f618SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7680*46d2f618SCy Schubert 	#endif
7681*46d2f618SCy Schubert 		free((yyvsp[0].str));
7682*46d2f618SCy Schubert 	}
7683*46d2f618SCy Schubert #line 7684 "util/configparser.c"
7684*46d2f618SCy Schubert     break;
7685*46d2f618SCy Schubert 
7686*46d2f618SCy Schubert   case 751: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
7687*46d2f618SCy Schubert #line 4017 "util/configparser.y"
7688b7c0c8c1SCy Schubert         {
7689b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7690b7c0c8c1SCy Schubert 		OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7691b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7692b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7693b7c0c8c1SCy Schubert 		else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7694b7c0c8c1SCy Schubert 	#else
7695b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7696b7c0c8c1SCy Schubert 	#endif
7697b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7698b7c0c8c1SCy Schubert 	}
7699*46d2f618SCy Schubert #line 7700 "util/configparser.c"
7700b7c0c8c1SCy Schubert     break;
7701b7c0c8c1SCy Schubert 
7702*46d2f618SCy Schubert   case 752: /* redis_logical_db: VAR_CACHEDB_REDISLOGICALDB STRING_ARG  */
7703*46d2f618SCy Schubert #line 4030 "util/configparser.y"
7704b7c0c8c1SCy Schubert         {
7705b7c0c8c1SCy Schubert 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7706b7c0c8c1SCy Schubert 		int db;
7707b7c0c8c1SCy Schubert 		OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
7708b7c0c8c1SCy Schubert 		db = atoi((yyvsp[0].str));
7709b7c0c8c1SCy Schubert 		if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7710b7c0c8c1SCy Schubert 			yyerror("valid redis logical database index expected");
7711b7c0c8c1SCy Schubert 		else cfg_parser->cfg->redis_logical_db = db;
7712b7c0c8c1SCy Schubert 	#else
7713b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7714b7c0c8c1SCy Schubert 	#endif
7715b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7716b7c0c8c1SCy Schubert 	}
7717*46d2f618SCy Schubert #line 7718 "util/configparser.c"
7718b7c0c8c1SCy Schubert     break;
7719b7c0c8c1SCy Schubert 
7720*46d2f618SCy Schubert   case 753: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
7721*46d2f618SCy Schubert #line 4045 "util/configparser.y"
7722b7c0c8c1SCy Schubert         {
7723b7c0c8c1SCy Schubert 		OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7724b7c0c8c1SCy Schubert 		if (atoi((yyvsp[0].str)) < 0)
7725b7c0c8c1SCy Schubert 			yyerror("positive number expected");
7726b7c0c8c1SCy Schubert 		else {
7727b7c0c8c1SCy Schubert 			if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7728b7c0c8c1SCy Schubert 				fatal_exit("out of memory adding tcp connection limit");
7729b7c0c8c1SCy Schubert 		}
7730b7c0c8c1SCy Schubert 	}
7731*46d2f618SCy Schubert #line 7732 "util/configparser.c"
7732b7c0c8c1SCy Schubert     break;
7733b7c0c8c1SCy Schubert 
7734*46d2f618SCy Schubert   case 754: /* server_answer_cookie: VAR_ANSWER_COOKIE STRING_ARG  */
7735*46d2f618SCy Schubert #line 4056 "util/configparser.y"
7736b7c0c8c1SCy Schubert         {
7737b7c0c8c1SCy Schubert 		OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
7738b7c0c8c1SCy Schubert 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7739b7c0c8c1SCy Schubert 			yyerror("expected yes or no.");
7740b7c0c8c1SCy Schubert 		else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
7741b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7742b7c0c8c1SCy Schubert 	}
7743*46d2f618SCy Schubert #line 7744 "util/configparser.c"
7744b7c0c8c1SCy Schubert     break;
7745b7c0c8c1SCy Schubert 
7746*46d2f618SCy Schubert   case 755: /* server_cookie_secret: VAR_COOKIE_SECRET STRING_ARG  */
7747*46d2f618SCy Schubert #line 4065 "util/configparser.y"
7748b7c0c8c1SCy Schubert         {
7749b7c0c8c1SCy Schubert 		uint8_t secret[32];
7750b7c0c8c1SCy Schubert 		size_t secret_len = sizeof(secret);
7751b7c0c8c1SCy Schubert 
7752b7c0c8c1SCy Schubert 		OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
7753b7c0c8c1SCy Schubert 		if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
7754b7c0c8c1SCy Schubert 		|| (secret_len != 16))
7755b7c0c8c1SCy Schubert 			yyerror("expected 128 bit hex string");
7756b7c0c8c1SCy Schubert 		else {
7757b7c0c8c1SCy Schubert 			cfg_parser->cfg->cookie_secret_len = secret_len;
7758b7c0c8c1SCy Schubert 			memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
7759b7c0c8c1SCy Schubert 		}
7760b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7761b7c0c8c1SCy Schubert 	}
7762*46d2f618SCy Schubert #line 7763 "util/configparser.c"
7763b7c0c8c1SCy Schubert     break;
7764b7c0c8c1SCy Schubert 
7765*46d2f618SCy Schubert   case 756: /* server_cookie_secret_file: VAR_COOKIE_SECRET_FILE STRING_ARG  */
7766*46d2f618SCy Schubert #line 4081 "util/configparser.y"
776756850988SCy Schubert         {
776856850988SCy Schubert 		OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
776956850988SCy Schubert 		free(cfg_parser->cfg->cookie_secret_file);
777056850988SCy Schubert 		cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
777156850988SCy Schubert 	}
7772*46d2f618SCy Schubert #line 7773 "util/configparser.c"
777356850988SCy Schubert     break;
777456850988SCy Schubert 
7775*46d2f618SCy Schubert   case 757: /* server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG  */
7776*46d2f618SCy Schubert #line 4088 "util/configparser.y"
7777*46d2f618SCy Schubert         {
7778*46d2f618SCy Schubert 		OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
7779*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7780*46d2f618SCy Schubert 			yyerror("number expected");
7781*46d2f618SCy Schubert 		else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
7782*46d2f618SCy Schubert 		free((yyvsp[0].str));
7783*46d2f618SCy Schubert 	}
7784*46d2f618SCy Schubert #line 7785 "util/configparser.c"
7785*46d2f618SCy Schubert     break;
7786*46d2f618SCy Schubert 
7787*46d2f618SCy Schubert   case 758: /* server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG  */
7788*46d2f618SCy Schubert #line 4097 "util/configparser.y"
7789*46d2f618SCy Schubert         {
7790*46d2f618SCy Schubert 		OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
7791*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7792*46d2f618SCy Schubert 			yyerror("number expected");
7793*46d2f618SCy Schubert 		else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
7794*46d2f618SCy Schubert 		free((yyvsp[0].str));
7795*46d2f618SCy Schubert 	}
7796*46d2f618SCy Schubert #line 7797 "util/configparser.c"
7797*46d2f618SCy Schubert     break;
7798*46d2f618SCy Schubert 
7799*46d2f618SCy Schubert   case 759: /* server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG  */
7800*46d2f618SCy Schubert #line 4106 "util/configparser.y"
7801*46d2f618SCy Schubert         {
7802*46d2f618SCy Schubert 		OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
7803*46d2f618SCy Schubert 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7804*46d2f618SCy Schubert 			yyerror("number expected");
7805*46d2f618SCy Schubert 		else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
7806*46d2f618SCy Schubert 		free((yyvsp[0].str));
7807*46d2f618SCy Schubert 	}
7808*46d2f618SCy Schubert #line 7809 "util/configparser.c"
7809*46d2f618SCy Schubert     break;
7810*46d2f618SCy Schubert 
7811*46d2f618SCy Schubert   case 760: /* ipsetstart: VAR_IPSET  */
7812*46d2f618SCy Schubert #line 4115 "util/configparser.y"
7813b7c0c8c1SCy Schubert         {
7814b7c0c8c1SCy Schubert 		OUTYY(("\nP(ipset:)\n"));
7815b7c0c8c1SCy Schubert 		cfg_parser->started_toplevel = 1;
7816b7c0c8c1SCy Schubert 	}
7817*46d2f618SCy Schubert #line 7818 "util/configparser.c"
7818b7c0c8c1SCy Schubert     break;
7819b7c0c8c1SCy Schubert 
7820*46d2f618SCy Schubert   case 765: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
7821*46d2f618SCy Schubert #line 4125 "util/configparser.y"
7822b7c0c8c1SCy Schubert         {
7823b7c0c8c1SCy Schubert 	#ifdef USE_IPSET
7824b7c0c8c1SCy Schubert 		OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
7825b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->ipset_name_v4)
7826b7c0c8c1SCy Schubert 			yyerror("ipset name v4 override, there must be one "
7827b7c0c8c1SCy Schubert 				"name for ip v4");
7828b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->ipset_name_v4);
7829b7c0c8c1SCy Schubert 		cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
7830b7c0c8c1SCy Schubert 	#else
7831b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
7832b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7833b7c0c8c1SCy Schubert 	#endif
7834b7c0c8c1SCy Schubert 	}
7835*46d2f618SCy Schubert #line 7836 "util/configparser.c"
7836b7c0c8c1SCy Schubert     break;
7837b7c0c8c1SCy Schubert 
7838*46d2f618SCy Schubert   case 766: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
7839*46d2f618SCy Schubert #line 4140 "util/configparser.y"
7840b7c0c8c1SCy Schubert         {
7841b7c0c8c1SCy Schubert 	#ifdef USE_IPSET
7842b7c0c8c1SCy Schubert 		OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
7843b7c0c8c1SCy Schubert 		if(cfg_parser->cfg->ipset_name_v6)
7844b7c0c8c1SCy Schubert 			yyerror("ipset name v6 override, there must be one "
7845b7c0c8c1SCy Schubert 				"name for ip v6");
7846b7c0c8c1SCy Schubert 		free(cfg_parser->cfg->ipset_name_v6);
7847b7c0c8c1SCy Schubert 		cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
7848b7c0c8c1SCy Schubert 	#else
7849b7c0c8c1SCy Schubert 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
7850b7c0c8c1SCy Schubert 		free((yyvsp[0].str));
7851b7c0c8c1SCy Schubert 	#endif
7852b7c0c8c1SCy Schubert 	}
7853*46d2f618SCy Schubert #line 7854 "util/configparser.c"
7854b7c0c8c1SCy Schubert     break;
7855b7c0c8c1SCy Schubert 
7856b7c0c8c1SCy Schubert 
7857*46d2f618SCy Schubert #line 7858 "util/configparser.c"
7858b7c0c8c1SCy Schubert 
7859b7c0c8c1SCy Schubert       default: break;
7860b7c0c8c1SCy Schubert     }
7861b7c0c8c1SCy Schubert   /* User semantic actions sometimes alter yychar, and that requires
7862b7c0c8c1SCy Schubert      that yytoken be updated with the new translation.  We take the
7863b7c0c8c1SCy Schubert      approach of translating immediately before every use of yytoken.
7864b7c0c8c1SCy Schubert      One alternative is translating here after every semantic action,
7865b7c0c8c1SCy Schubert      but that translation would be missed if the semantic action invokes
7866b7c0c8c1SCy Schubert      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7867b7c0c8c1SCy Schubert      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
7868b7c0c8c1SCy Schubert      incorrect destructor might then be invoked immediately.  In the
7869b7c0c8c1SCy Schubert      case of YYERROR or YYBACKUP, subsequent parser actions might lead
7870b7c0c8c1SCy Schubert      to an incorrect destructor call or verbose syntax error message
7871b7c0c8c1SCy Schubert      before the lookahead is translated.  */
7872b7c0c8c1SCy Schubert   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
7873b7c0c8c1SCy Schubert 
7874b7c0c8c1SCy Schubert   YYPOPSTACK (yylen);
7875b7c0c8c1SCy Schubert   yylen = 0;
7876b7c0c8c1SCy Schubert 
7877b7c0c8c1SCy Schubert   *++yyvsp = yyval;
7878b7c0c8c1SCy Schubert 
7879b7c0c8c1SCy Schubert   /* Now 'shift' the result of the reduction.  Determine what state
7880b7c0c8c1SCy Schubert      that goes to, based on the state we popped back to and the rule
7881b7c0c8c1SCy Schubert      number reduced by.  */
7882b7c0c8c1SCy Schubert   {
7883b7c0c8c1SCy Schubert     const int yylhs = yyr1[yyn] - YYNTOKENS;
7884b7c0c8c1SCy Schubert     const int yyi = yypgoto[yylhs] + *yyssp;
7885b7c0c8c1SCy Schubert     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
7886b7c0c8c1SCy Schubert                ? yytable[yyi]
7887b7c0c8c1SCy Schubert                : yydefgoto[yylhs]);
7888b7c0c8c1SCy Schubert   }
7889b7c0c8c1SCy Schubert 
7890b7c0c8c1SCy Schubert   goto yynewstate;
7891b7c0c8c1SCy Schubert 
7892b7c0c8c1SCy Schubert 
7893b7c0c8c1SCy Schubert /*--------------------------------------.
7894b7c0c8c1SCy Schubert | yyerrlab -- here on detecting error.  |
7895b7c0c8c1SCy Schubert `--------------------------------------*/
7896b7c0c8c1SCy Schubert yyerrlab:
7897b7c0c8c1SCy Schubert   /* Make sure we have latest lookahead translation.  See comments at
7898b7c0c8c1SCy Schubert      user semantic actions for why this is necessary.  */
7899b7c0c8c1SCy Schubert   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7900b7c0c8c1SCy Schubert   /* If not already recovering from an error, report this error.  */
7901b7c0c8c1SCy Schubert   if (!yyerrstatus)
7902b7c0c8c1SCy Schubert     {
7903b7c0c8c1SCy Schubert       ++yynerrs;
7904b7c0c8c1SCy Schubert       yyerror (YY_("syntax error"));
7905b7c0c8c1SCy Schubert     }
7906b7c0c8c1SCy Schubert 
7907b7c0c8c1SCy Schubert   if (yyerrstatus == 3)
7908b7c0c8c1SCy Schubert     {
7909b7c0c8c1SCy Schubert       /* If just tried and failed to reuse lookahead token after an
7910b7c0c8c1SCy Schubert          error, discard it.  */
7911b7c0c8c1SCy Schubert 
7912b7c0c8c1SCy Schubert       if (yychar <= YYEOF)
7913b7c0c8c1SCy Schubert         {
7914b7c0c8c1SCy Schubert           /* Return failure if at end of input.  */
7915b7c0c8c1SCy Schubert           if (yychar == YYEOF)
7916b7c0c8c1SCy Schubert             YYABORT;
7917b7c0c8c1SCy Schubert         }
7918b7c0c8c1SCy Schubert       else
7919b7c0c8c1SCy Schubert         {
7920b7c0c8c1SCy Schubert           yydestruct ("Error: discarding",
7921b7c0c8c1SCy Schubert                       yytoken, &yylval);
7922b7c0c8c1SCy Schubert           yychar = YYEMPTY;
7923b7c0c8c1SCy Schubert         }
7924b7c0c8c1SCy Schubert     }
7925b7c0c8c1SCy Schubert 
7926b7c0c8c1SCy Schubert   /* Else will try to reuse lookahead token after shifting the error
7927b7c0c8c1SCy Schubert      token.  */
7928b7c0c8c1SCy Schubert   goto yyerrlab1;
7929b7c0c8c1SCy Schubert 
7930b7c0c8c1SCy Schubert 
7931b7c0c8c1SCy Schubert /*---------------------------------------------------.
7932b7c0c8c1SCy Schubert | yyerrorlab -- error raised explicitly by YYERROR.  |
7933b7c0c8c1SCy Schubert `---------------------------------------------------*/
7934b7c0c8c1SCy Schubert yyerrorlab:
7935b7c0c8c1SCy Schubert   /* Pacify compilers when the user code never invokes YYERROR and the
7936b7c0c8c1SCy Schubert      label yyerrorlab therefore never appears in user code.  */
7937b7c0c8c1SCy Schubert   if (0)
7938b7c0c8c1SCy Schubert     YYERROR;
7939b7c0c8c1SCy Schubert 
7940b7c0c8c1SCy Schubert   /* Do not reclaim the symbols of the rule whose action triggered
7941b7c0c8c1SCy Schubert      this YYERROR.  */
7942b7c0c8c1SCy Schubert   YYPOPSTACK (yylen);
7943b7c0c8c1SCy Schubert   yylen = 0;
7944b7c0c8c1SCy Schubert   YY_STACK_PRINT (yyss, yyssp);
7945b7c0c8c1SCy Schubert   yystate = *yyssp;
7946b7c0c8c1SCy Schubert   goto yyerrlab1;
7947b7c0c8c1SCy Schubert 
7948b7c0c8c1SCy Schubert 
7949b7c0c8c1SCy Schubert /*-------------------------------------------------------------.
7950b7c0c8c1SCy Schubert | yyerrlab1 -- common code for both syntax error and YYERROR.  |
7951b7c0c8c1SCy Schubert `-------------------------------------------------------------*/
7952b7c0c8c1SCy Schubert yyerrlab1:
7953b7c0c8c1SCy Schubert   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
7954b7c0c8c1SCy Schubert 
7955b7c0c8c1SCy Schubert   /* Pop stack until we find a state that shifts the error token.  */
7956b7c0c8c1SCy Schubert   for (;;)
7957b7c0c8c1SCy Schubert     {
7958b7c0c8c1SCy Schubert       yyn = yypact[yystate];
7959b7c0c8c1SCy Schubert       if (!yypact_value_is_default (yyn))
7960b7c0c8c1SCy Schubert         {
7961b7c0c8c1SCy Schubert           yyn += YYSYMBOL_YYerror;
7962b7c0c8c1SCy Schubert           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
7963b7c0c8c1SCy Schubert             {
7964b7c0c8c1SCy Schubert               yyn = yytable[yyn];
7965b7c0c8c1SCy Schubert               if (0 < yyn)
7966b7c0c8c1SCy Schubert                 break;
7967b7c0c8c1SCy Schubert             }
7968b7c0c8c1SCy Schubert         }
7969b7c0c8c1SCy Schubert 
7970b7c0c8c1SCy Schubert       /* Pop the current state because it cannot handle the error token.  */
7971b7c0c8c1SCy Schubert       if (yyssp == yyss)
7972b7c0c8c1SCy Schubert         YYABORT;
7973b7c0c8c1SCy Schubert 
7974b7c0c8c1SCy Schubert 
7975b7c0c8c1SCy Schubert       yydestruct ("Error: popping",
7976b7c0c8c1SCy Schubert                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
7977b7c0c8c1SCy Schubert       YYPOPSTACK (1);
7978b7c0c8c1SCy Schubert       yystate = *yyssp;
7979b7c0c8c1SCy Schubert       YY_STACK_PRINT (yyss, yyssp);
7980b7c0c8c1SCy Schubert     }
7981b7c0c8c1SCy Schubert 
7982b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7983b7c0c8c1SCy Schubert   *++yyvsp = yylval;
7984b7c0c8c1SCy Schubert   YY_IGNORE_MAYBE_UNINITIALIZED_END
7985b7c0c8c1SCy Schubert 
7986b7c0c8c1SCy Schubert 
7987b7c0c8c1SCy Schubert   /* Shift the error token.  */
7988b7c0c8c1SCy Schubert   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
7989b7c0c8c1SCy Schubert 
7990b7c0c8c1SCy Schubert   yystate = yyn;
7991b7c0c8c1SCy Schubert   goto yynewstate;
7992b7c0c8c1SCy Schubert 
7993b7c0c8c1SCy Schubert 
7994b7c0c8c1SCy Schubert /*-------------------------------------.
7995b7c0c8c1SCy Schubert | yyacceptlab -- YYACCEPT comes here.  |
7996b7c0c8c1SCy Schubert `-------------------------------------*/
7997b7c0c8c1SCy Schubert yyacceptlab:
7998b7c0c8c1SCy Schubert   yyresult = 0;
7999*46d2f618SCy Schubert   goto yyreturn;
8000b7c0c8c1SCy Schubert 
8001b7c0c8c1SCy Schubert 
8002b7c0c8c1SCy Schubert /*-----------------------------------.
8003b7c0c8c1SCy Schubert | yyabortlab -- YYABORT comes here.  |
8004b7c0c8c1SCy Schubert `-----------------------------------*/
8005b7c0c8c1SCy Schubert yyabortlab:
8006b7c0c8c1SCy Schubert   yyresult = 1;
8007*46d2f618SCy Schubert   goto yyreturn;
8008b7c0c8c1SCy Schubert 
8009b7c0c8c1SCy Schubert 
8010*46d2f618SCy Schubert #if !defined yyoverflow
8011*46d2f618SCy Schubert /*-------------------------------------------------.
8012*46d2f618SCy Schubert | yyexhaustedlab -- memory exhaustion comes here.  |
8013*46d2f618SCy Schubert `-------------------------------------------------*/
8014b7c0c8c1SCy Schubert yyexhaustedlab:
8015b7c0c8c1SCy Schubert   yyerror (YY_("memory exhausted"));
8016b7c0c8c1SCy Schubert   yyresult = 2;
8017*46d2f618SCy Schubert   goto yyreturn;
8018*46d2f618SCy Schubert #endif
8019b7c0c8c1SCy Schubert 
8020b7c0c8c1SCy Schubert 
8021*46d2f618SCy Schubert /*-------------------------------------------------------.
8022*46d2f618SCy Schubert | yyreturn -- parsing is finished, clean up and return.  |
8023*46d2f618SCy Schubert `-------------------------------------------------------*/
8024*46d2f618SCy Schubert yyreturn:
8025b7c0c8c1SCy Schubert   if (yychar != YYEMPTY)
8026b7c0c8c1SCy Schubert     {
8027b7c0c8c1SCy Schubert       /* Make sure we have latest lookahead translation.  See comments at
8028b7c0c8c1SCy Schubert          user semantic actions for why this is necessary.  */
8029b7c0c8c1SCy Schubert       yytoken = YYTRANSLATE (yychar);
8030b7c0c8c1SCy Schubert       yydestruct ("Cleanup: discarding lookahead",
8031b7c0c8c1SCy Schubert                   yytoken, &yylval);
8032b7c0c8c1SCy Schubert     }
8033b7c0c8c1SCy Schubert   /* Do not reclaim the symbols of the rule whose action triggered
8034b7c0c8c1SCy Schubert      this YYABORT or YYACCEPT.  */
8035b7c0c8c1SCy Schubert   YYPOPSTACK (yylen);
8036b7c0c8c1SCy Schubert   YY_STACK_PRINT (yyss, yyssp);
8037b7c0c8c1SCy Schubert   while (yyssp != yyss)
8038b7c0c8c1SCy Schubert     {
8039b7c0c8c1SCy Schubert       yydestruct ("Cleanup: popping",
8040b7c0c8c1SCy Schubert                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
8041b7c0c8c1SCy Schubert       YYPOPSTACK (1);
8042b7c0c8c1SCy Schubert     }
8043b7c0c8c1SCy Schubert #ifndef yyoverflow
8044b7c0c8c1SCy Schubert   if (yyss != yyssa)
8045b7c0c8c1SCy Schubert     YYSTACK_FREE (yyss);
8046b7c0c8c1SCy Schubert #endif
8047b7c0c8c1SCy Schubert 
8048b7c0c8c1SCy Schubert   return yyresult;
8049b7c0c8c1SCy Schubert }
8050b7c0c8c1SCy Schubert 
8051*46d2f618SCy Schubert #line 4154 "util/configparser.y"
8052b7c0c8c1SCy Schubert 
8053b7c0c8c1SCy Schubert 
8054b7c0c8c1SCy Schubert /* parse helper routines could be here */
8055b7c0c8c1SCy Schubert static void
8056b7c0c8c1SCy Schubert validate_respip_action(const char* action)
8057b7c0c8c1SCy Schubert {
8058b7c0c8c1SCy Schubert 	if(strcmp(action, "deny")!=0 &&
8059b7c0c8c1SCy Schubert 		strcmp(action, "redirect")!=0 &&
8060b7c0c8c1SCy Schubert 		strcmp(action, "inform")!=0 &&
8061b7c0c8c1SCy Schubert 		strcmp(action, "inform_deny")!=0 &&
8062b7c0c8c1SCy Schubert 		strcmp(action, "always_transparent")!=0 &&
8063b7c0c8c1SCy Schubert 		strcmp(action, "always_refuse")!=0 &&
8064b7c0c8c1SCy Schubert 		strcmp(action, "always_nxdomain")!=0)
8065b7c0c8c1SCy Schubert 	{
8066b7c0c8c1SCy Schubert 		yyerror("response-ip action: expected deny, redirect, "
8067b7c0c8c1SCy Schubert 			"inform, inform_deny, always_transparent, "
8068b7c0c8c1SCy Schubert 			"always_refuse or always_nxdomain");
8069b7c0c8c1SCy Schubert 	}
8070b7c0c8c1SCy Schubert }
8071b7c0c8c1SCy Schubert 
8072b7c0c8c1SCy Schubert static void
8073b7c0c8c1SCy Schubert validate_acl_action(const char* action)
8074b7c0c8c1SCy Schubert {
8075b7c0c8c1SCy Schubert 	if(strcmp(action, "deny")!=0 &&
8076b7c0c8c1SCy Schubert 		strcmp(action, "refuse")!=0 &&
8077b7c0c8c1SCy Schubert 		strcmp(action, "deny_non_local")!=0 &&
8078b7c0c8c1SCy Schubert 		strcmp(action, "refuse_non_local")!=0 &&
8079b7c0c8c1SCy Schubert 		strcmp(action, "allow_setrd")!=0 &&
8080b7c0c8c1SCy Schubert 		strcmp(action, "allow")!=0 &&
8081b7c0c8c1SCy Schubert 		strcmp(action, "allow_snoop")!=0 &&
8082b7c0c8c1SCy Schubert 		strcmp(action, "allow_cookie")!=0)
8083b7c0c8c1SCy Schubert 	{
8084b7c0c8c1SCy Schubert 		yyerror("expected deny, refuse, deny_non_local, "
8085b7c0c8c1SCy Schubert 			"refuse_non_local, allow, allow_setrd, "
8086b7c0c8c1SCy Schubert 			"allow_snoop or allow_cookie as access control action");
8087b7c0c8c1SCy Schubert 	}
8088b7c0c8c1SCy Schubert }
8089