1 /* A Bison parser, made by GNU Bison 3.7.6. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30706
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.7.6"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 0
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66
67
68
69 /* First part of user prologue. */
70 #line 1 "zparser.y"
71
72 /*
73 * zyparser.y -- yacc grammar for (DNS) zone files
74 *
75 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
76 *
77 * See LICENSE for the license.
78 *
79 */
80
81 #include "config.h"
82
83 #include <stdarg.h>
84 #include <stdio.h>
85 #include <string.h>
86
87 #include "dname.h"
88 #include "namedb.h"
89 #include "zonec.h"
90
91 /* these need to be global, otherwise they cannot be used inside yacc */
92 zparser_type *parser;
93
94 #ifdef __cplusplus
95 extern "C"
96 #endif /* __cplusplus */
97 int yywrap(void);
98
99 /* this hold the nxt bits */
100 static uint8_t nxtbits[16];
101 static int dlv_warn = 1;
102
103 /* 256 windows of 256 bits (32 bytes) */
104 /* still need to reset the bastard somewhere */
105 static uint8_t nsecbits[NSEC_WINDOW_COUNT][NSEC_WINDOW_BITS_SIZE];
106
107 /* hold the highest rcode seen in a NSEC rdata , BUG #106 */
108 uint16_t nsec_highest_rcode;
109
110 void yyerror(const char *message);
111
112 #ifdef NSEC3
113 /* parse nsec3 parameters and add the (first) rdata elements */
114 static void
115 nsec3_add_params(const char* hash_algo_str, const char* flag_str,
116 const char* iter_str, const char* salt_str, int salt_len);
117 #endif /* NSEC3 */
118
119
120 #line 121 "zparser.c"
121
122 # ifndef YY_CAST
123 # ifdef __cplusplus
124 # define YY_CAST(Type, Val) static_cast<Type> (Val)
125 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
126 # else
127 # define YY_CAST(Type, Val) ((Type) (Val))
128 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
129 # endif
130 # endif
131 # ifndef YY_NULLPTR
132 # if defined __cplusplus
133 # if 201103L <= __cplusplus
134 # define YY_NULLPTR nullptr
135 # else
136 # define YY_NULLPTR 0
137 # endif
138 # else
139 # define YY_NULLPTR ((void*)0)
140 # endif
141 # endif
142
143 #include "zparser.h"
144 /* Symbol kind. */
145 enum yysymbol_kind_t
146 {
147 YYSYMBOL_YYEMPTY = -2,
148 YYSYMBOL_YYEOF = 0, /* "end of file" */
149 YYSYMBOL_YYerror = 1, /* error */
150 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
151 YYSYMBOL_T_A = 3, /* T_A */
152 YYSYMBOL_T_NS = 4, /* T_NS */
153 YYSYMBOL_T_MX = 5, /* T_MX */
154 YYSYMBOL_T_TXT = 6, /* T_TXT */
155 YYSYMBOL_T_CNAME = 7, /* T_CNAME */
156 YYSYMBOL_T_AAAA = 8, /* T_AAAA */
157 YYSYMBOL_T_PTR = 9, /* T_PTR */
158 YYSYMBOL_T_NXT = 10, /* T_NXT */
159 YYSYMBOL_T_KEY = 11, /* T_KEY */
160 YYSYMBOL_T_SOA = 12, /* T_SOA */
161 YYSYMBOL_T_SIG = 13, /* T_SIG */
162 YYSYMBOL_T_SRV = 14, /* T_SRV */
163 YYSYMBOL_T_CERT = 15, /* T_CERT */
164 YYSYMBOL_T_LOC = 16, /* T_LOC */
165 YYSYMBOL_T_MD = 17, /* T_MD */
166 YYSYMBOL_T_MF = 18, /* T_MF */
167 YYSYMBOL_T_MB = 19, /* T_MB */
168 YYSYMBOL_T_MG = 20, /* T_MG */
169 YYSYMBOL_T_MR = 21, /* T_MR */
170 YYSYMBOL_T_NULL = 22, /* T_NULL */
171 YYSYMBOL_T_WKS = 23, /* T_WKS */
172 YYSYMBOL_T_HINFO = 24, /* T_HINFO */
173 YYSYMBOL_T_MINFO = 25, /* T_MINFO */
174 YYSYMBOL_T_RP = 26, /* T_RP */
175 YYSYMBOL_T_AFSDB = 27, /* T_AFSDB */
176 YYSYMBOL_T_X25 = 28, /* T_X25 */
177 YYSYMBOL_T_ISDN = 29, /* T_ISDN */
178 YYSYMBOL_T_RT = 30, /* T_RT */
179 YYSYMBOL_T_NSAP = 31, /* T_NSAP */
180 YYSYMBOL_T_NSAP_PTR = 32, /* T_NSAP_PTR */
181 YYSYMBOL_T_PX = 33, /* T_PX */
182 YYSYMBOL_T_GPOS = 34, /* T_GPOS */
183 YYSYMBOL_T_EID = 35, /* T_EID */
184 YYSYMBOL_T_NIMLOC = 36, /* T_NIMLOC */
185 YYSYMBOL_T_ATMA = 37, /* T_ATMA */
186 YYSYMBOL_T_NAPTR = 38, /* T_NAPTR */
187 YYSYMBOL_T_KX = 39, /* T_KX */
188 YYSYMBOL_T_A6 = 40, /* T_A6 */
189 YYSYMBOL_T_DNAME = 41, /* T_DNAME */
190 YYSYMBOL_T_SINK = 42, /* T_SINK */
191 YYSYMBOL_T_OPT = 43, /* T_OPT */
192 YYSYMBOL_T_APL = 44, /* T_APL */
193 YYSYMBOL_T_UINFO = 45, /* T_UINFO */
194 YYSYMBOL_T_UID = 46, /* T_UID */
195 YYSYMBOL_T_GID = 47, /* T_GID */
196 YYSYMBOL_T_UNSPEC = 48, /* T_UNSPEC */
197 YYSYMBOL_T_TKEY = 49, /* T_TKEY */
198 YYSYMBOL_T_TSIG = 50, /* T_TSIG */
199 YYSYMBOL_T_IXFR = 51, /* T_IXFR */
200 YYSYMBOL_T_AXFR = 52, /* T_AXFR */
201 YYSYMBOL_T_MAILB = 53, /* T_MAILB */
202 YYSYMBOL_T_MAILA = 54, /* T_MAILA */
203 YYSYMBOL_T_DS = 55, /* T_DS */
204 YYSYMBOL_T_DLV = 56, /* T_DLV */
205 YYSYMBOL_T_SSHFP = 57, /* T_SSHFP */
206 YYSYMBOL_T_RRSIG = 58, /* T_RRSIG */
207 YYSYMBOL_T_NSEC = 59, /* T_NSEC */
208 YYSYMBOL_T_DNSKEY = 60, /* T_DNSKEY */
209 YYSYMBOL_T_SPF = 61, /* T_SPF */
210 YYSYMBOL_T_NSEC3 = 62, /* T_NSEC3 */
211 YYSYMBOL_T_IPSECKEY = 63, /* T_IPSECKEY */
212 YYSYMBOL_T_DHCID = 64, /* T_DHCID */
213 YYSYMBOL_T_NSEC3PARAM = 65, /* T_NSEC3PARAM */
214 YYSYMBOL_T_TLSA = 66, /* T_TLSA */
215 YYSYMBOL_T_URI = 67, /* T_URI */
216 YYSYMBOL_T_NID = 68, /* T_NID */
217 YYSYMBOL_T_L32 = 69, /* T_L32 */
218 YYSYMBOL_T_L64 = 70, /* T_L64 */
219 YYSYMBOL_T_LP = 71, /* T_LP */
220 YYSYMBOL_T_EUI48 = 72, /* T_EUI48 */
221 YYSYMBOL_T_EUI64 = 73, /* T_EUI64 */
222 YYSYMBOL_T_CAA = 74, /* T_CAA */
223 YYSYMBOL_T_CDS = 75, /* T_CDS */
224 YYSYMBOL_T_CDNSKEY = 76, /* T_CDNSKEY */
225 YYSYMBOL_T_OPENPGPKEY = 77, /* T_OPENPGPKEY */
226 YYSYMBOL_T_CSYNC = 78, /* T_CSYNC */
227 YYSYMBOL_T_ZONEMD = 79, /* T_ZONEMD */
228 YYSYMBOL_T_AVC = 80, /* T_AVC */
229 YYSYMBOL_T_SMIMEA = 81, /* T_SMIMEA */
230 YYSYMBOL_T_SVCB = 82, /* T_SVCB */
231 YYSYMBOL_T_HTTPS = 83, /* T_HTTPS */
232 YYSYMBOL_DOLLAR_TTL = 84, /* DOLLAR_TTL */
233 YYSYMBOL_DOLLAR_ORIGIN = 85, /* DOLLAR_ORIGIN */
234 YYSYMBOL_NL = 86, /* NL */
235 YYSYMBOL_SP = 87, /* SP */
236 YYSYMBOL_QSTR = 88, /* QSTR */
237 YYSYMBOL_STR = 89, /* STR */
238 YYSYMBOL_PREV = 90, /* PREV */
239 YYSYMBOL_BITLAB = 91, /* BITLAB */
240 YYSYMBOL_T_TTL = 92, /* T_TTL */
241 YYSYMBOL_T_RRCLASS = 93, /* T_RRCLASS */
242 YYSYMBOL_URR = 94, /* URR */
243 YYSYMBOL_T_UTYPE = 95, /* T_UTYPE */
244 YYSYMBOL_96_ = 96, /* '.' */
245 YYSYMBOL_97_ = 97, /* '@' */
246 YYSYMBOL_YYACCEPT = 98, /* $accept */
247 YYSYMBOL_lines = 99, /* lines */
248 YYSYMBOL_line = 100, /* line */
249 YYSYMBOL_sp = 101, /* sp */
250 YYSYMBOL_str = 102, /* str */
251 YYSYMBOL_trail = 103, /* trail */
252 YYSYMBOL_ttl_directive = 104, /* ttl_directive */
253 YYSYMBOL_origin_directive = 105, /* origin_directive */
254 YYSYMBOL_rr = 106, /* rr */
255 YYSYMBOL_owner = 107, /* owner */
256 YYSYMBOL_classttl = 108, /* classttl */
257 YYSYMBOL_dname = 109, /* dname */
258 YYSYMBOL_abs_dname = 110, /* abs_dname */
259 YYSYMBOL_label = 111, /* label */
260 YYSYMBOL_rel_dname = 112, /* rel_dname */
261 YYSYMBOL_wire_dname = 113, /* wire_dname */
262 YYSYMBOL_wire_abs_dname = 114, /* wire_abs_dname */
263 YYSYMBOL_wire_label = 115, /* wire_label */
264 YYSYMBOL_wire_rel_dname = 116, /* wire_rel_dname */
265 YYSYMBOL_str_seq = 117, /* str_seq */
266 YYSYMBOL_concatenated_str_seq = 118, /* concatenated_str_seq */
267 YYSYMBOL_nxt_seq = 119, /* nxt_seq */
268 YYSYMBOL_nsec_more = 120, /* nsec_more */
269 YYSYMBOL_nsec_seq = 121, /* nsec_seq */
270 YYSYMBOL_str_sp_seq = 122, /* str_sp_seq */
271 YYSYMBOL_str_dot_seq = 123, /* str_dot_seq */
272 YYSYMBOL_unquoted_dotted_str = 124, /* unquoted_dotted_str */
273 YYSYMBOL_dotted_str = 125, /* dotted_str */
274 YYSYMBOL_type_and_rdata = 126, /* type_and_rdata */
275 YYSYMBOL_rdata_a = 127, /* rdata_a */
276 YYSYMBOL_rdata_domain_name = 128, /* rdata_domain_name */
277 YYSYMBOL_rdata_soa = 129, /* rdata_soa */
278 YYSYMBOL_rdata_wks = 130, /* rdata_wks */
279 YYSYMBOL_rdata_hinfo = 131, /* rdata_hinfo */
280 YYSYMBOL_rdata_minfo = 132, /* rdata_minfo */
281 YYSYMBOL_rdata_mx = 133, /* rdata_mx */
282 YYSYMBOL_rdata_txt = 134, /* rdata_txt */
283 YYSYMBOL_rdata_rp = 135, /* rdata_rp */
284 YYSYMBOL_rdata_afsdb = 136, /* rdata_afsdb */
285 YYSYMBOL_rdata_x25 = 137, /* rdata_x25 */
286 YYSYMBOL_rdata_isdn = 138, /* rdata_isdn */
287 YYSYMBOL_rdata_rt = 139, /* rdata_rt */
288 YYSYMBOL_rdata_nsap = 140, /* rdata_nsap */
289 YYSYMBOL_rdata_px = 141, /* rdata_px */
290 YYSYMBOL_rdata_aaaa = 142, /* rdata_aaaa */
291 YYSYMBOL_rdata_loc = 143, /* rdata_loc */
292 YYSYMBOL_rdata_nxt = 144, /* rdata_nxt */
293 YYSYMBOL_rdata_srv = 145, /* rdata_srv */
294 YYSYMBOL_rdata_naptr = 146, /* rdata_naptr */
295 YYSYMBOL_rdata_kx = 147, /* rdata_kx */
296 YYSYMBOL_rdata_cert = 148, /* rdata_cert */
297 YYSYMBOL_rdata_apl = 149, /* rdata_apl */
298 YYSYMBOL_rdata_apl_seq = 150, /* rdata_apl_seq */
299 YYSYMBOL_rdata_ds = 151, /* rdata_ds */
300 YYSYMBOL_rdata_dlv = 152, /* rdata_dlv */
301 YYSYMBOL_rdata_sshfp = 153, /* rdata_sshfp */
302 YYSYMBOL_rdata_dhcid = 154, /* rdata_dhcid */
303 YYSYMBOL_rdata_rrsig = 155, /* rdata_rrsig */
304 YYSYMBOL_rdata_nsec = 156, /* rdata_nsec */
305 YYSYMBOL_rdata_nsec3 = 157, /* rdata_nsec3 */
306 YYSYMBOL_rdata_nsec3_param = 158, /* rdata_nsec3_param */
307 YYSYMBOL_rdata_tlsa = 159, /* rdata_tlsa */
308 YYSYMBOL_rdata_smimea = 160, /* rdata_smimea */
309 YYSYMBOL_rdata_dnskey = 161, /* rdata_dnskey */
310 YYSYMBOL_rdata_ipsec_base = 162, /* rdata_ipsec_base */
311 YYSYMBOL_rdata_ipseckey = 163, /* rdata_ipseckey */
312 YYSYMBOL_rdata_nid = 164, /* rdata_nid */
313 YYSYMBOL_rdata_l32 = 165, /* rdata_l32 */
314 YYSYMBOL_rdata_l64 = 166, /* rdata_l64 */
315 YYSYMBOL_rdata_lp = 167, /* rdata_lp */
316 YYSYMBOL_rdata_eui48 = 168, /* rdata_eui48 */
317 YYSYMBOL_rdata_eui64 = 169, /* rdata_eui64 */
318 YYSYMBOL_rdata_uri = 170, /* rdata_uri */
319 YYSYMBOL_rdata_caa = 171, /* rdata_caa */
320 YYSYMBOL_rdata_openpgpkey = 172, /* rdata_openpgpkey */
321 YYSYMBOL_rdata_csync = 173, /* rdata_csync */
322 YYSYMBOL_rdata_zonemd = 174, /* rdata_zonemd */
323 YYSYMBOL_svcparam = 175, /* svcparam */
324 YYSYMBOL_svcparams = 176, /* svcparams */
325 YYSYMBOL_rdata_svcb_base = 177, /* rdata_svcb_base */
326 YYSYMBOL_rdata_svcb = 178, /* rdata_svcb */
327 YYSYMBOL_rdata_unknown = 179 /* rdata_unknown */
328 };
329 typedef enum yysymbol_kind_t yysymbol_kind_t;
330
331
332
333
334 #ifdef short
335 # undef short
336 #endif
337
338 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
339 <limits.h> and (if available) <stdint.h> are included
340 so that the code can choose integer types of a good width. */
341
342 #ifndef __PTRDIFF_MAX__
343 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
344 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
345 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
346 # define YY_STDINT_H
347 # endif
348 #endif
349
350 /* Narrow types that promote to a signed type and that can represent a
351 signed or unsigned integer of at least N bits. In tables they can
352 save space and decrease cache pressure. Promoting to a signed type
353 helps avoid bugs in integer arithmetic. */
354
355 #ifdef __INT_LEAST8_MAX__
356 typedef __INT_LEAST8_TYPE__ yytype_int8;
357 #elif defined YY_STDINT_H
358 typedef int_least8_t yytype_int8;
359 #else
360 typedef signed char yytype_int8;
361 #endif
362
363 #ifdef __INT_LEAST16_MAX__
364 typedef __INT_LEAST16_TYPE__ yytype_int16;
365 #elif defined YY_STDINT_H
366 typedef int_least16_t yytype_int16;
367 #else
368 typedef short yytype_int16;
369 #endif
370
371 /* Work around bug in HP-UX 11.23, which defines these macros
372 incorrectly for preprocessor constants. This workaround can likely
373 be removed in 2023, as HPE has promised support for HP-UX 11.23
374 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
375 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
376 #ifdef __hpux
377 # undef UINT_LEAST8_MAX
378 # undef UINT_LEAST16_MAX
379 # define UINT_LEAST8_MAX 255
380 # define UINT_LEAST16_MAX 65535
381 #endif
382
383 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
384 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
385 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
386 && UINT_LEAST8_MAX <= INT_MAX)
387 typedef uint_least8_t yytype_uint8;
388 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
389 typedef unsigned char yytype_uint8;
390 #else
391 typedef short yytype_uint8;
392 #endif
393
394 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
395 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
396 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
397 && UINT_LEAST16_MAX <= INT_MAX)
398 typedef uint_least16_t yytype_uint16;
399 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
400 typedef unsigned short yytype_uint16;
401 #else
402 typedef int yytype_uint16;
403 #endif
404
405 #ifndef YYPTRDIFF_T
406 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
407 # define YYPTRDIFF_T __PTRDIFF_TYPE__
408 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
409 # elif defined PTRDIFF_MAX
410 # ifndef ptrdiff_t
411 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
412 # endif
413 # define YYPTRDIFF_T ptrdiff_t
414 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
415 # else
416 # define YYPTRDIFF_T long
417 # define YYPTRDIFF_MAXIMUM LONG_MAX
418 # endif
419 #endif
420
421 #ifndef YYSIZE_T
422 # ifdef __SIZE_TYPE__
423 # define YYSIZE_T __SIZE_TYPE__
424 # elif defined size_t
425 # define YYSIZE_T size_t
426 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
427 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
428 # define YYSIZE_T size_t
429 # else
430 # define YYSIZE_T unsigned
431 # endif
432 #endif
433
434 #define YYSIZE_MAXIMUM \
435 YY_CAST (YYPTRDIFF_T, \
436 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
437 ? YYPTRDIFF_MAXIMUM \
438 : YY_CAST (YYSIZE_T, -1)))
439
440 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
441
442
443 /* Stored state numbers (used for stacks). */
444 typedef yytype_int16 yy_state_t;
445
446 /* State numbers in computations. */
447 typedef int yy_state_fast_t;
448
449 #ifndef YY_
450 # if defined YYENABLE_NLS && YYENABLE_NLS
451 # if ENABLE_NLS
452 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
453 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
454 # endif
455 # endif
456 # ifndef YY_
457 # define YY_(Msgid) Msgid
458 # endif
459 #endif
460
461
462 #ifndef YY_ATTRIBUTE_PURE
463 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
464 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
465 # else
466 # define YY_ATTRIBUTE_PURE
467 # endif
468 #endif
469
470 #ifndef YY_ATTRIBUTE_UNUSED
471 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
472 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
473 # else
474 # define YY_ATTRIBUTE_UNUSED
475 # endif
476 #endif
477
478 /* Suppress unused-variable warnings by "using" E. */
479 #if ! defined lint || defined __GNUC__
480 # define YY_USE(E) ((void) (E))
481 #else
482 # define YY_USE(E) /* empty */
483 #endif
484
485 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
486 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
487 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
488 _Pragma ("GCC diagnostic push") \
489 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
490 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
491 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
492 _Pragma ("GCC diagnostic pop")
493 #else
494 # define YY_INITIAL_VALUE(Value) Value
495 #endif
496 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
497 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
498 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
499 #endif
500 #ifndef YY_INITIAL_VALUE
501 # define YY_INITIAL_VALUE(Value) /* Nothing. */
502 #endif
503
504 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
505 # define YY_IGNORE_USELESS_CAST_BEGIN \
506 _Pragma ("GCC diagnostic push") \
507 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
508 # define YY_IGNORE_USELESS_CAST_END \
509 _Pragma ("GCC diagnostic pop")
510 #endif
511 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
512 # define YY_IGNORE_USELESS_CAST_BEGIN
513 # define YY_IGNORE_USELESS_CAST_END
514 #endif
515
516
517 #define YY_ASSERT(E) ((void) (0 && (E)))
518
519 #if !defined yyoverflow
520
521 /* The parser invokes alloca or malloc; define the necessary symbols. */
522
523 # ifdef YYSTACK_USE_ALLOCA
524 # if YYSTACK_USE_ALLOCA
525 # ifdef __GNUC__
526 # define YYSTACK_ALLOC __builtin_alloca
527 # elif defined __BUILTIN_VA_ARG_INCR
528 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
529 # elif defined _AIX
530 # define YYSTACK_ALLOC __alloca
531 # elif defined _MSC_VER
532 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
533 # define alloca _alloca
534 # else
535 # define YYSTACK_ALLOC alloca
536 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
537 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
538 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
539 # ifndef EXIT_SUCCESS
540 # define EXIT_SUCCESS 0
541 # endif
542 # endif
543 # endif
544 # endif
545 # endif
546
547 # ifdef YYSTACK_ALLOC
548 /* Pacify GCC's 'empty if-body' warning. */
549 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
550 # ifndef YYSTACK_ALLOC_MAXIMUM
551 /* The OS might guarantee only one guard page at the bottom of the stack,
552 and a page size can be as small as 4096 bytes. So we cannot safely
553 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
554 to allow for a few compiler-allocated temporary stack slots. */
555 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
556 # endif
557 # else
558 # define YYSTACK_ALLOC YYMALLOC
559 # define YYSTACK_FREE YYFREE
560 # ifndef YYSTACK_ALLOC_MAXIMUM
561 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
562 # endif
563 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
564 && ! ((defined YYMALLOC || defined malloc) \
565 && (defined YYFREE || defined free)))
566 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
567 # ifndef EXIT_SUCCESS
568 # define EXIT_SUCCESS 0
569 # endif
570 # endif
571 # ifndef YYMALLOC
572 # define YYMALLOC malloc
573 # if ! defined malloc && ! defined EXIT_SUCCESS
574 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
575 # endif
576 # endif
577 # ifndef YYFREE
578 # define YYFREE free
579 # if ! defined free && ! defined EXIT_SUCCESS
580 void free (void *); /* INFRINGES ON USER NAME SPACE */
581 # endif
582 # endif
583 # endif
584 #endif /* !defined yyoverflow */
585
586 #if (! defined yyoverflow \
587 && (! defined __cplusplus \
588 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
589
590 /* A type that is properly aligned for any stack member. */
591 union yyalloc
592 {
593 yy_state_t yyss_alloc;
594 YYSTYPE yyvs_alloc;
595 };
596
597 /* The size of the maximum gap between one aligned stack and the next. */
598 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
599
600 /* The size of an array large to enough to hold all stacks, each with
601 N elements. */
602 # define YYSTACK_BYTES(N) \
603 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
604 + YYSTACK_GAP_MAXIMUM)
605
606 # define YYCOPY_NEEDED 1
607
608 /* Relocate STACK from its old location to the new one. The
609 local variables YYSIZE and YYSTACKSIZE give the old and new number of
610 elements in the stack, and YYPTR gives the new location of the
611 stack. Advance YYPTR to a properly aligned location for the next
612 stack. */
613 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
614 do \
615 { \
616 YYPTRDIFF_T yynewbytes; \
617 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
618 Stack = &yyptr->Stack_alloc; \
619 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
620 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
621 } \
622 while (0)
623
624 #endif
625
626 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
627 /* Copy COUNT objects from SRC to DST. The source and destination do
628 not overlap. */
629 # ifndef YYCOPY
630 # if defined __GNUC__ && 1 < __GNUC__
631 # define YYCOPY(Dst, Src, Count) \
632 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
633 # else
634 # define YYCOPY(Dst, Src, Count) \
635 do \
636 { \
637 YYPTRDIFF_T yyi; \
638 for (yyi = 0; yyi < (Count); yyi++) \
639 (Dst)[yyi] = (Src)[yyi]; \
640 } \
641 while (0)
642 # endif
643 # endif
644 #endif /* !YYCOPY_NEEDED */
645
646 /* YYFINAL -- State number of the termination state. */
647 #define YYFINAL 2
648 /* YYLAST -- Last index in YYTABLE. */
649 #define YYLAST 1374
650
651 /* YYNTOKENS -- Number of terminals. */
652 #define YYNTOKENS 98
653 /* YYNNTS -- Number of nonterminals. */
654 #define YYNNTS 82
655 /* YYNRULES -- Number of rules. */
656 #define YYNRULES 261
657 /* YYNSTATES -- Number of states. */
658 #define YYNSTATES 630
659
660 /* YYMAXUTOK -- Last valid token kind. */
661 #define YYMAXUTOK 350
662
663
664 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
665 as returned by yylex, with out-of-bounds checking. */
666 #define YYTRANSLATE(YYX) \
667 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
668 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
669 : YYSYMBOL_YYUNDEF)
670
671 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
672 as returned by yylex. */
673 static const yytype_int8 yytranslate[] =
674 {
675 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
679 2, 2, 2, 2, 2, 2, 96, 2, 2, 2,
680 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
681 2, 2, 2, 2, 97, 2, 2, 2, 2, 2,
682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
683 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
688 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
691 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
692 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
696 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
697 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
698 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
699 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
700 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
701 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
702 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
703 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
704 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
705 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
706 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
707 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
708 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
709 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
710 95
711 };
712
713 #if YYDEBUG
714 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
715 static const yytype_int16 yyrline[] =
716 {
717 0, 93, 93, 94, 97, 98, 99, 100, 108, 116,
718 136, 140, 141, 144, 144, 146, 147, 150, 160, 171,
719 177, 184, 189, 196, 200, 205, 210, 215, 222, 223,
720 244, 248, 252, 262, 276, 283, 284, 302, 303, 327,
721 334, 346, 358, 375, 376, 388, 392, 396, 401, 405,
722 410, 414, 418, 429, 430, 435, 444, 456, 465, 476,
723 479, 482, 496, 497, 504, 505, 521, 522, 537, 538,
724 543, 553, 569, 569, 576, 577, 578, 579, 580, 581,
725 586, 587, 593, 594, 595, 596, 597, 598, 604, 605,
726 606, 607, 609, 610, 611, 612, 613, 614, 615, 616,
727 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
728 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
729 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
730 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
731 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
732 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
733 677, 678, 679, 680, 681, 682, 683, 684, 685, 686,
734 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
735 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
736 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
737 717, 729, 735, 742, 755, 762, 769, 777, 784, 791,
738 799, 807, 814, 818, 826, 834, 846, 854, 860, 866,
739 874, 884, 896, 904, 914, 917, 921, 927, 936, 945,
740 954, 960, 975, 985, 1000, 1010, 1019, 1028, 1037, 1082,
741 1086, 1090, 1097, 1104, 1111, 1118, 1124, 1131, 1140, 1149,
742 1156, 1167, 1176, 1181, 1187, 1188, 1191, 1198, 1202, 1205,
743 1211, 1215
744 };
745 #endif
746
747 /** Accessing symbol of state STATE. */
748 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
749
750 #if YYDEBUG || 0
751 /* The user-facing name of the symbol whose (internal) number is
752 YYSYMBOL. No bounds checking. */
753 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
754
755 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
756 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
757 static const char *const yytname[] =
758 {
759 "\"end of file\"", "error", "\"invalid token\"", "T_A", "T_NS", "T_MX",
760 "T_TXT", "T_CNAME", "T_AAAA", "T_PTR", "T_NXT", "T_KEY", "T_SOA",
761 "T_SIG", "T_SRV", "T_CERT", "T_LOC", "T_MD", "T_MF", "T_MB", "T_MG",
762 "T_MR", "T_NULL", "T_WKS", "T_HINFO", "T_MINFO", "T_RP", "T_AFSDB",
763 "T_X25", "T_ISDN", "T_RT", "T_NSAP", "T_NSAP_PTR", "T_PX", "T_GPOS",
764 "T_EID", "T_NIMLOC", "T_ATMA", "T_NAPTR", "T_KX", "T_A6", "T_DNAME",
765 "T_SINK", "T_OPT", "T_APL", "T_UINFO", "T_UID", "T_GID", "T_UNSPEC",
766 "T_TKEY", "T_TSIG", "T_IXFR", "T_AXFR", "T_MAILB", "T_MAILA", "T_DS",
767 "T_DLV", "T_SSHFP", "T_RRSIG", "T_NSEC", "T_DNSKEY", "T_SPF", "T_NSEC3",
768 "T_IPSECKEY", "T_DHCID", "T_NSEC3PARAM", "T_TLSA", "T_URI", "T_NID",
769 "T_L32", "T_L64", "T_LP", "T_EUI48", "T_EUI64", "T_CAA", "T_CDS",
770 "T_CDNSKEY", "T_OPENPGPKEY", "T_CSYNC", "T_ZONEMD", "T_AVC", "T_SMIMEA",
771 "T_SVCB", "T_HTTPS", "DOLLAR_TTL", "DOLLAR_ORIGIN", "NL", "SP", "QSTR",
772 "STR", "PREV", "BITLAB", "T_TTL", "T_RRCLASS", "URR", "T_UTYPE", "'.'",
773 "'@'", "$accept", "lines", "line", "sp", "str", "trail", "ttl_directive",
774 "origin_directive", "rr", "owner", "classttl", "dname", "abs_dname",
775 "label", "rel_dname", "wire_dname", "wire_abs_dname", "wire_label",
776 "wire_rel_dname", "str_seq", "concatenated_str_seq", "nxt_seq",
777 "nsec_more", "nsec_seq", "str_sp_seq", "str_dot_seq",
778 "unquoted_dotted_str", "dotted_str", "type_and_rdata", "rdata_a",
779 "rdata_domain_name", "rdata_soa", "rdata_wks", "rdata_hinfo",
780 "rdata_minfo", "rdata_mx", "rdata_txt", "rdata_rp", "rdata_afsdb",
781 "rdata_x25", "rdata_isdn", "rdata_rt", "rdata_nsap", "rdata_px",
782 "rdata_aaaa", "rdata_loc", "rdata_nxt", "rdata_srv", "rdata_naptr",
783 "rdata_kx", "rdata_cert", "rdata_apl", "rdata_apl_seq", "rdata_ds",
784 "rdata_dlv", "rdata_sshfp", "rdata_dhcid", "rdata_rrsig", "rdata_nsec",
785 "rdata_nsec3", "rdata_nsec3_param", "rdata_tlsa", "rdata_smimea",
786 "rdata_dnskey", "rdata_ipsec_base", "rdata_ipseckey", "rdata_nid",
787 "rdata_l32", "rdata_l64", "rdata_lp", "rdata_eui48", "rdata_eui64",
788 "rdata_uri", "rdata_caa", "rdata_openpgpkey", "rdata_csync",
789 "rdata_zonemd", "svcparam", "svcparams", "rdata_svcb_base", "rdata_svcb",
790 "rdata_unknown", YY_NULLPTR
791 };
792
793 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)794 yysymbol_name (yysymbol_kind_t yysymbol)
795 {
796 return yytname[yysymbol];
797 }
798 #endif
799
800 #ifdef YYPRINT
801 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
802 (internal) symbol number NUM (which must be that of a token). */
803 static const yytype_int16 yytoknum[] =
804 {
805 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
806 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
807 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
808 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
809 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
810 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
811 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
812 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
813 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
814 345, 346, 347, 348, 349, 350, 46, 64
815 };
816 #endif
817
818 #define YYPACT_NINF (-473)
819
820 #define yypact_value_is_default(Yyn) \
821 ((Yyn) == YYPACT_NINF)
822
823 #define YYTABLE_NINF (-1)
824
825 #define yytable_value_is_error(Yyn) \
826 0
827
828 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
829 STATE-NUM. */
830 static const yytype_int16 yypact[] =
831 {
832 -473, 115, -473, -70, -60, -60, -473, -473, -473, -473,
833 -51, -473, -473, -473, -473, 51, -473, -473, -473, -473,
834 98, -60, -473, -473, -59, -473, 106, 67, -473, -473,
835 -473, -60, -60, 678, 20, 60, 73, 73, -81, -79,
836 21, -60, -60, -60, -60, -60, -60, -60, -60, -60,
837 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
838 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
839 -60, -60, -60, 73, -60, -60, -60, -60, -60, -60,
840 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
841 -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
842 -60, -60, -60, -60, 121, -473, -473, -473, 111, -473,
843 -473, -473, -60, -60, 136, 56, -55, 148, 56, 136,
844 56, 56, -55, 56, -55, -55, -55, 166, 56, 56,
845 56, 56, 56, 136, -55, 56, 56, -55, -55, -55,
846 -55, -55, -55, -55, -55, 56, 31, -473, -55, -55,
847 -55, -55, 78, -55, 148, -55, -55, -55, -55, -55,
848 -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
849 -55, -55, -55, 148, -55, -55, -55, -58, 38, -473,
850 20, 20, -473, -473, 17, -473, 30, 73, -473, -473,
851 73, -473, -473, -60, -473, -473, 14, 192, 30, -473,
852 -473, -473, -473, 73, -473, -473, -473, -473, -60, -473,
853 -473, -60, -473, -473, -60, -473, -473, -60, -473, -473,
854 -60, -473, -473, -60, -473, -473, -473, -473, -77, -473,
855 -473, -473, -473, -473, -473, -473, -473, -473, -473, -473,
856 -473, -60, -473, -473, -60, -473, -473, -60, -473, -473,
857 -60, -473, -473, -60, -473, -473, 73, -473, -473, 73,
858 -473, -473, -60, -473, -473, -473, 90, -473, -473, -60,
859 -473, -473, -60, -473, -473, -60, -473, -473, -473, -473,
860 -473, -473, 73, -473, -60, -473, -473, -60, -473, -473,
861 -60, -473, -473, -473, -473, -473, -473, -473, 122, -473,
862 -473, 33, -473, -473, -473, -473, -473, -473, -60, -473,
863 -473, -60, 73, -473, -473, -473, 73, -473, -473, -60,
864 -473, -473, -60, -473, -473, -60, -473, -473, -60, -473,
865 -473, -60, -473, -473, -60, -473, -473, -60, -473, -473,
866 73, -473, -473, 73, -473, -473, -60, -473, -473, -473,
867 -473, -473, -473, 73, -473, -473, -60, -473, -473, -60,
868 -473, -473, -473, -473, -60, -473, -473, -60, 73, -473,
869 -473, -473, -473, -473, -473, 48, 106, 57, -473, -473,
870 67, 30, 14, 44, -473, -473, 106, 106, 67, 106,
871 106, 106, 126, 204, -473, 106, 106, 67, 67, 67,
872 -473, 204, -473, 67, 126, -473, 67, 106, 67, 82,
873 -473, 106, 106, 106, -473, 208, -473, 126, 106, 106,
874 204, -473, 204, -473, 106, 106, 106, 176, 176, 176,
875 67, -473, -473, 106, -473, 106, 106, 106, 67, 82,
876 -473, -473, 73, -473, 73, 30, 14, 30, -473, 73,
877 -60, -60, -60, -60, -60, -473, -473, -60, 73, 73,
878 73, 73, 73, 73, -473, -60, -60, 73, -473, -60,
879 -60, -60, -473, 208, 122, -473, -473, -60, -60, 73,
880 -473, -60, -60, -60, 73, 73, 73, 73, -60, 122,
881 -60, -60, -473, 69, -473, 73, 204, -473, -473, 30,
882 204, -473, 106, 106, 106, 106, 106, 188, -473, -473,
883 -473, -473, -473, -473, 67, 106, -473, 106, 106, 106,
884 -473, -473, 106, 106, -473, 106, 106, 176, -473, -473,
885 -473, -473, 176, -473, 106, 106, -473, 82, -473, 73,
886 -473, -60, -60, -60, -60, -60, -77, 73, -60, -60,
887 -60, 73, -60, -60, -60, -60, 73, 73, -60, -60,
888 -473, -473, 106, 106, 106, 67, 106, -473, -473, 106,
889 106, 106, -473, 106, 176, 106, 106, -473, -473, 106,
890 106, 73, -60, -60, 73, 73, -60, 73, 73, -60,
891 -473, 73, 73, 73, 73, -473, 106, 106, -473, -473,
892 106, -473, -473, 106, -473, -473, -473, -473, -60, -60,
893 -60, 122, 106, 106, 67, -473, -60, -60, 73, 106,
894 106, -473, 73, -60, -473, 92, -60, 106, 73, -473
895 };
896
897 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
898 Performed when YYTABLE does not specify something else to do. Zero
899 means the default is an error. */
900 static const yytype_int16 yydefact[] =
901 {
902 2, 0, 1, 0, 0, 0, 4, 11, 14, 13,
903 22, 34, 30, 31, 3, 0, 33, 7, 8, 9,
904 23, 0, 28, 35, 29, 10, 0, 0, 6, 5,
905 12, 0, 0, 0, 21, 32, 0, 0, 0, 25,
906 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
912 0, 0, 0, 0, 0, 20, 36, 15, 0, 17,
913 18, 19, 0, 0, 0, 0, 0, 0, 0, 0,
914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 0, 0, 0, 0, 146, 0, 0,
917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
919 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
920 26, 27, 73, 68, 0, 69, 72, 0, 74, 75,
921 0, 76, 77, 0, 100, 101, 46, 0, 45, 102,
922 103, 82, 83, 0, 130, 131, 94, 95, 0, 134,
923 135, 0, 126, 127, 0, 84, 85, 0, 124, 125,
924 0, 136, 137, 0, 142, 143, 54, 53, 0, 132,
925 133, 78, 79, 80, 81, 86, 87, 88, 89, 90,
926 91, 0, 92, 93, 0, 96, 97, 0, 98, 99,
927 0, 108, 109, 0, 110, 111, 0, 112, 113, 0,
928 114, 115, 0, 120, 121, 66, 0, 122, 123, 0,
929 128, 129, 0, 138, 139, 0, 140, 141, 144, 145,
930 225, 147, 0, 148, 0, 149, 150, 0, 151, 152,
931 0, 153, 154, 155, 156, 39, 40, 42, 0, 37,
932 43, 38, 157, 158, 163, 164, 104, 105, 0, 159,
933 160, 0, 0, 116, 117, 64, 0, 118, 119, 0,
934 161, 162, 0, 165, 166, 0, 197, 198, 0, 169,
935 170, 0, 171, 172, 0, 173, 174, 0, 175, 176,
936 0, 177, 178, 0, 179, 180, 0, 181, 182, 183,
937 184, 185, 186, 0, 187, 188, 0, 189, 190, 0,
938 191, 192, 106, 107, 0, 167, 168, 0, 0, 193,
939 194, 195, 196, 199, 200, 0, 0, 70, 201, 202,
940 0, 47, 48, 0, 208, 217, 0, 0, 0, 0,
941 0, 0, 0, 0, 218, 0, 0, 0, 0, 0,
942 211, 0, 212, 0, 0, 215, 0, 0, 0, 0,
943 224, 0, 0, 0, 62, 0, 232, 41, 0, 0,
944 0, 240, 0, 230, 0, 0, 0, 0, 0, 0,
945 0, 245, 246, 0, 249, 0, 0, 0, 0, 0,
946 258, 261, 0, 71, 0, 49, 51, 50, 57, 0,
947 0, 0, 0, 0, 0, 56, 55, 0, 0, 0,
948 0, 0, 0, 0, 67, 0, 0, 0, 226, 0,
949 0, 0, 60, 0, 0, 63, 44, 0, 0, 0,
950 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951 0, 0, 256, 253, 254, 0, 0, 260, 207, 52,
952 0, 219, 0, 0, 0, 0, 0, 0, 205, 206,
953 209, 210, 213, 214, 0, 0, 222, 0, 0, 0,
954 59, 61, 0, 0, 239, 0, 0, 0, 241, 242,
955 243, 244, 0, 250, 0, 0, 252, 0, 257, 0,
956 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
958 255, 259, 0, 0, 0, 0, 0, 204, 216, 0,
959 0, 0, 229, 0, 0, 0, 0, 247, 248, 0,
960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961 238, 0, 0, 0, 0, 237, 0, 0, 220, 223,
962 0, 227, 228, 0, 234, 235, 251, 236, 0, 0,
963 0, 0, 0, 0, 0, 233, 0, 0, 0, 0,
964 0, 221, 0, 0, 203, 0, 0, 0, 0, 231
965 };
966
967 /* YYPGOTO[NTERM-NUM]. */
968 static const yytype_int16 yypgoto[] =
969 {
970 -473, -473, -473, -1, 504, 746, -473, -473, -473, -473,
971 -473, 0, 135, 138, 155, -440, -473, -230, -473, -473,
972 -290, -473, -255, -472, -64, -473, -12, -5, -473, -473,
973 -107, -473, -473, -473, -473, -473, -147, -473, -473, -473,
974 -473, -473, -473, -473, -473, -473, -473, -473, -473, -473,
975 -473, -473, -473, 52, -473, -473, -473, 70, -473, -473,
976 -473, -473, -473, -141, -473, -473, -473, -473, -473, -473,
977 -473, -473, -473, -473, -473, -473, -473, -311, -473, -473,
978 53, 672
979 };
980
981 /* YYDEFGOTO[NTERM-NUM]. */
982 static const yytype_int16 yydefgoto[] =
983 {
984 0, 1, 14, 108, 16, 109, 17, 18, 19, 20,
985 33, 190, 22, 23, 24, 298, 299, 300, 301, 197,
986 228, 449, 475, 416, 316, 266, 186, 493, 105, 188,
987 191, 215, 242, 245, 248, 194, 199, 251, 254, 257,
988 260, 263, 267, 270, 204, 229, 209, 221, 273, 276,
989 224, 281, 282, 285, 288, 291, 317, 218, 302, 309,
990 320, 323, 365, 212, 312, 313, 329, 332, 335, 338,
991 341, 344, 326, 347, 354, 357, 360, 494, 495, 368,
992 369, 189
993 };
994
995 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
996 positive, shift that token. If negative, reduce the rule whose
997 number is the opposite. If YYTABLE_NINF, syntax error. */
998 static const yytype_int16 yytable[] =
999 {
1000 15, 21, 521, 26, 27, 107, 7, 306, 30, 107,
1001 7, 201, 304, 206, 112, 35, 25, 533, 375, 392,
1002 34, 231, 233, 235, 237, 239, 362, 7, 351, 30,
1003 39, 40, 30, 8, 9, 28, 184, 35, 278, 184,
1004 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1005 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
1006 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
1007 144, 145, 146, 148, 149, 150, 151, 152, 153, 154,
1008 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1009 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1010 175, 176, 177, 183, 7, 198, 353, 30, 30, 187,
1011 185, 180, 181, 113, 203, 2, 3, 179, 30, 182,
1012 183, 208, 178, 214, 374, 184, 377, 185, 241, 417,
1013 179, 30, 446, 183, 441, 247, 250, 29, 30, 615,
1014 185, 280, 198, 30, 8, 9, 443, 11, 8, 9,
1015 184, 11, 12, 13, 30, 8, 9, 536, 11, 107,
1016 7, 198, 37, 12, 13, 30, 8, 9, 179, 30,
1017 182, 183, 184, 106, 295, 296, 107, 7, 185, 30,
1018 8, 9, 38, 376, 381, 626, 404, 476, 295, 296,
1019 31, 32, 380, 30, 8, 9, 383, 179, 30, 4,
1020 5, 6, 7, 8, 9, 10, 11, 386, 414, 415,
1021 387, 12, 13, 388, 8, 9, 389, 546, 520, 390,
1022 349, 293, 391, 30, 182, 183, 560, 393, 0, 371,
1023 184, 0, 185, 0, 0, 30, 196, 183, 0, 0,
1024 395, 0, 184, 396, 185, 0, 397, 0, 0, 398,
1025 0, 0, 399, 30, 8, 9, 0, 0, 401, 0,
1026 184, 403, 226, 30, 182, 183, 0, 0, 406, 0,
1027 0, 407, 185, 0, 408, 30, 8, 9, 107, 7,
1028 382, 409, 0, 411, 226, 0, 412, 0, 0, 413,
1029 179, 30, 8, 9, 472, 473, 8, 9, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 418, 0, 0,
1031 419, 420, 0, 0, 0, 422, 0, 0, 424, 0,
1032 0, 425, 0, 0, 426, 0, 0, 427, 0, 0,
1033 428, 0, 0, 429, 0, 0, 430, 0, 0, 0,
1034 0, 0, 0, 0, 0, 433, 0, 0, 0, 0,
1035 0, 0, 422, 0, 0, 435, 479, 0, 436, 0,
1036 0, 0, 0, 437, 0, 0, 438, 439, 0, 0,
1037 445, 447, 0, 0, 0, 0, 0, 0, 0, 0,
1038 444, 0, 0, 0, 0, 0, 0, 0, 451, 0,
1039 0, 0, 0, 0, 0, 0, 0, 459, 460, 461,
1040 0, 0, 0, 463, 468, 0, 465, 0, 467, 0,
1041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1042 0, 0, 484, 485, 486, 0, 0, 0, 0, 0,
1043 487, 0, 539, 0, 499, 0, 0, 0, 492, 0,
1044 0, 496, 0, 0, 0, 0, 0, 0, 500, 502,
1045 503, 504, 505, 506, 0, 551, 507, 0, 0, 0,
1046 0, 0, 0, 0, 514, 515, 0, 0, 517, 518,
1047 519, 0, 0, 0, 0, 0, 522, 523, 422, 0,
1048 525, 526, 527, 0, 0, 0, 0, 532, 0, 534,
1049 535, 0, 0, 0, 537, 0, 0, 0, 581, 0,
1050 0, 0, 585, 0, 0, 0, 587, 588, 0, 0,
1051 0, 0, 592, 0, 547, 593, 594, 0, 0, 0,
1052 0, 0, 556, 0, 0, 0, 0, 557, 0, 0,
1053 36, 0, 0, 0, 0, 0, 0, 104, 422, 0,
1054 562, 563, 564, 565, 566, 393, 0, 569, 570, 571,
1055 422, 573, 574, 575, 576, 0, 0, 579, 580, 0,
1056 0, 0, 0, 628, 0, 584, 0, 0, 0, 590,
1057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1058 422, 596, 597, 0, 422, 600, 422, 422, 603, 0,
1059 0, 422, 422, 422, 0, 0, 0, 0, 0, 0,
1060 0, 0, 0, 0, 0, 0, 0, 612, 613, 614,
1061 0, 0, 0, 0, 618, 619, 620, 0, 0, 0,
1062 193, 0, 625, 0, 0, 627, 211, 422, 217, 220,
1063 223, 227, 0, 0, 0, 0, 0, 0, 244, 0,
1064 0, 253, 256, 259, 262, 265, 269, 272, 275, 0,
1065 0, 0, 284, 287, 290, 217, 297, 211, 0, 308,
1066 311, 315, 319, 322, 325, 328, 331, 334, 337, 340,
1067 343, 346, 284, 211, 315, 356, 359, 0, 364, 367,
1068 367, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1069 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1070 0, 60, 61, 62, 63, 64, 65, 66, 67, 68,
1071 0, 69, 0, 0, 0, 0, 70, 71, 0, 72,
1072 0, 0, 73, 0, 0, 0, 0, 0, 0, 0,
1073 0, 0, 0, 74, 75, 76, 77, 78, 79, 80,
1074 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1075 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1076 101, 102, 0, 0, 0, 0, 8, 9, 0, 0,
1077 0, 0, 0, 103, 0, 0, 0, 0, 0, 0,
1078 0, 0, 0, 110, 111, 0, 0, 192, 195, 200,
1079 202, 205, 207, 210, 213, 216, 219, 222, 225, 230,
1080 232, 234, 236, 238, 240, 243, 246, 249, 252, 255,
1081 258, 261, 264, 268, 271, 274, 277, 279, 283, 147,
1082 286, 289, 292, 294, 303, 305, 307, 310, 314, 318,
1083 321, 324, 327, 330, 333, 336, 339, 342, 345, 348,
1084 350, 352, 355, 358, 361, 363, 366, 370, 372, 373,
1085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1088 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1089 448, 450, 0, 452, 453, 454, 455, 456, 0, 457,
1090 458, 0, 0, 0, 0, 462, 0, 0, 464, 0,
1091 0, 466, 0, 0, 0, 469, 470, 471, 0, 474,
1092 0, 297, 477, 478, 315, 0, 480, 0, 481, 482,
1093 483, 0, 0, 378, 0, 0, 379, 488, 0, 489,
1094 490, 491, 0, 384, 0, 0, 0, 0, 0, 385,
1095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1097 0, 0, 0, 0, 394, 0, 0, 474, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1100 315, 0, 400, 0, 540, 402, 541, 542, 543, 544,
1101 545, 227, 405, 0, 0, 0, 0, 0, 0, 548,
1102 0, 549, 550, 315, 0, 0, 552, 553, 410, 554,
1103 555, 0, 0, 0, 0, 0, 0, 0, 558, 559,
1104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1105 0, 0, 0, 0, 0, 0, 0, 0, 421, 0,
1106 0, 0, 423, 0, 0, 0, 315, 582, 583, 0,
1107 315, 0, 0, 586, 315, 315, 0, 589, 0, 591,
1108 315, 0, 0, 315, 315, 0, 431, 0, 0, 432,
1109 0, 0, 0, 0, 0, 0, 0, 0, 0, 434,
1110 608, 609, 0, 0, 610, 0, 0, 611, 0, 0,
1111 0, 0, 0, 0, 440, 0, 616, 617, 0, 0,
1112 0, 0, 0, 622, 623, 0, 0, 0, 0, 297,
1113 0, 315, 0, 0, 0, 0, 0, 0, 0, 0,
1114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0, 497, 0,
1119 498, 0, 0, 0, 0, 501, 0, 0, 0, 0,
1120 0, 0, 0, 0, 508, 509, 510, 511, 512, 513,
1121 0, 0, 0, 516, 0, 0, 0, 0, 0, 0,
1122 0, 0, 0, 0, 0, 524, 0, 0, 0, 0,
1123 528, 529, 530, 531, 0, 0, 0, 0, 0, 0,
1124 0, 538, 0, 0, 0, 0, 0, 0, 0, 0,
1125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0, 561, 0, 0, 0, 0,
1129 0, 0, 567, 568, 0, 0, 0, 572, 0, 0,
1130 0, 0, 577, 578, 0, 0, 0, 0, 0, 0,
1131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1132 0, 0, 0, 0, 0, 0, 0, 595, 0, 0,
1133 598, 599, 0, 601, 602, 0, 0, 604, 605, 606,
1134 607, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1136 0, 0, 0, 0, 621, 0, 0, 0, 624, 0,
1137 0, 0, 0, 0, 629
1138 };
1139
1140 static const yytype_int16 yycheck[] =
1141 {
1142 1, 1, 474, 4, 5, 86, 87, 154, 87, 86,
1143 87, 118, 153, 120, 93, 96, 86, 489, 1, 96,
1144 21, 128, 129, 130, 131, 132, 173, 87, 169, 87,
1145 31, 32, 87, 88, 89, 86, 94, 96, 145, 94,
1146 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1147 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1148 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1149 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1150 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1151 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1152 101, 102, 103, 89, 87, 117, 170, 87, 87, 114,
1153 96, 112, 113, 92, 119, 0, 1, 86, 87, 88,
1154 89, 121, 1, 123, 86, 94, 96, 96, 133, 96,
1155 86, 87, 88, 89, 86, 135, 136, 86, 87, 611,
1156 96, 146, 154, 87, 88, 89, 89, 91, 88, 89,
1157 94, 91, 96, 97, 87, 88, 89, 88, 91, 86,
1158 87, 173, 27, 96, 97, 87, 88, 89, 86, 87,
1159 88, 89, 94, 35, 96, 97, 86, 87, 96, 87,
1160 88, 89, 27, 184, 196, 625, 96, 417, 96, 97,
1161 92, 93, 193, 87, 88, 89, 197, 86, 87, 84,
1162 85, 86, 87, 88, 89, 90, 91, 208, 86, 87,
1163 211, 96, 97, 214, 88, 89, 217, 507, 473, 220,
1164 168, 151, 223, 87, 88, 89, 537, 228, -1, 176,
1165 94, -1, 96, -1, -1, 87, 88, 89, -1, -1,
1166 241, -1, 94, 244, 96, -1, 247, -1, -1, 250,
1167 -1, -1, 253, 87, 88, 89, -1, -1, 259, -1,
1168 94, 262, 96, 87, 88, 89, -1, -1, 269, -1,
1169 -1, 272, 96, -1, 275, 87, 88, 89, 86, 87,
1170 88, 282, -1, 284, 96, -1, 287, -1, -1, 290,
1171 86, 87, 88, 89, 86, 87, 88, 89, -1, -1,
1172 -1, -1, -1, -1, -1, -1, -1, 308, -1, -1,
1173 311, 312, -1, -1, -1, 316, -1, -1, 319, -1,
1174 -1, 322, -1, -1, 325, -1, -1, 328, -1, -1,
1175 331, -1, -1, 334, -1, -1, 337, -1, -1, -1,
1176 -1, -1, -1, -1, -1, 346, -1, -1, -1, -1,
1177 -1, -1, 353, -1, -1, 356, 420, -1, 359, -1,
1178 -1, -1, -1, 364, -1, -1, 367, 368, -1, -1,
1179 382, 383, -1, -1, -1, -1, -1, -1, -1, -1,
1180 380, -1, -1, -1, -1, -1, -1, -1, 388, -1,
1181 -1, -1, -1, -1, -1, -1, -1, 397, 398, 399,
1182 -1, -1, -1, 403, 409, -1, 406, -1, 408, -1,
1183 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1184 -1, -1, 427, 428, 429, -1, -1, -1, -1, -1,
1185 430, -1, 496, -1, 446, -1, -1, -1, 438, -1,
1186 -1, 442, -1, -1, -1, -1, -1, -1, 449, 450,
1187 451, 452, 453, 454, -1, 519, 457, -1, -1, -1,
1188 -1, -1, -1, -1, 465, 466, -1, -1, 469, 470,
1189 471, -1, -1, -1, -1, -1, 477, 478, 479, -1,
1190 481, 482, 483, -1, -1, -1, -1, 488, -1, 490,
1191 491, -1, -1, -1, 495, -1, -1, -1, 562, -1,
1192 -1, -1, 566, -1, -1, -1, 570, 571, -1, -1,
1193 -1, -1, 576, -1, 514, 579, 580, -1, -1, -1,
1194 -1, -1, 527, -1, -1, -1, -1, 532, -1, -1,
1195 26, -1, -1, -1, -1, -1, -1, 33, 539, -1,
1196 541, 542, 543, 544, 545, 546, -1, 548, 549, 550,
1197 551, 552, 553, 554, 555, -1, -1, 558, 559, -1,
1198 -1, -1, -1, 627, -1, 565, -1, -1, -1, 574,
1199 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1200 581, 582, 583, -1, 585, 586, 587, 588, 589, -1,
1201 -1, 592, 593, 594, -1, -1, -1, -1, -1, -1,
1202 -1, -1, -1, -1, -1, -1, -1, 608, 609, 610,
1203 -1, -1, -1, -1, 614, 616, 617, -1, -1, -1,
1204 116, -1, 623, -1, -1, 626, 122, 628, 124, 125,
1205 126, 127, -1, -1, -1, -1, -1, -1, 134, -1,
1206 -1, 137, 138, 139, 140, 141, 142, 143, 144, -1,
1207 -1, -1, 148, 149, 150, 151, 152, 153, -1, 155,
1208 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
1209 166, 167, 168, 169, 170, 171, 172, -1, 174, 175,
1210 176, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1211 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1212 -1, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1213 -1, 33, -1, -1, -1, -1, 38, 39, -1, 41,
1214 -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
1215 -1, -1, -1, 55, 56, 57, 58, 59, 60, 61,
1216 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1217 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1218 82, 83, -1, -1, -1, -1, 88, 89, -1, -1,
1219 -1, -1, -1, 95, -1, -1, -1, -1, -1, -1,
1220 -1, -1, -1, 37, 38, -1, -1, 115, 116, 117,
1221 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1222 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
1223 138, 139, 140, 141, 142, 143, 144, 145, 146, 73,
1224 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
1225 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
1226 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
1227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1229 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1230 376, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1231 386, 387, -1, 389, 390, 391, 392, 393, -1, 395,
1232 396, -1, -1, -1, -1, 401, -1, -1, 404, -1,
1233 -1, 407, -1, -1, -1, 411, 412, 413, -1, 415,
1234 -1, 417, 418, 419, 420, -1, 422, -1, 424, 425,
1235 426, -1, -1, 187, -1, -1, 190, 433, -1, 435,
1236 436, 437, -1, 197, -1, -1, -1, -1, -1, 203,
1237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1239 -1, -1, -1, -1, 228, -1, -1, 473, -1, -1,
1240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1242 496, -1, 256, -1, 500, 259, 502, 503, 504, 505,
1243 506, 507, 266, -1, -1, -1, -1, -1, -1, 515,
1244 -1, 517, 518, 519, -1, -1, 522, 523, 282, 525,
1245 526, -1, -1, -1, -1, -1, -1, -1, 534, 535,
1246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1247 -1, -1, -1, -1, -1, -1, -1, -1, 312, -1,
1248 -1, -1, 316, -1, -1, -1, 562, 563, 564, -1,
1249 566, -1, -1, 569, 570, 571, -1, 573, -1, 575,
1250 576, -1, -1, 579, 580, -1, 340, -1, -1, 343,
1251 -1, -1, -1, -1, -1, -1, -1, -1, -1, 353,
1252 596, 597, -1, -1, 600, -1, -1, 603, -1, -1,
1253 -1, -1, -1, -1, 368, -1, 612, 613, -1, -1,
1254 -1, -1, -1, 619, 620, -1, -1, -1, -1, 625,
1255 -1, 627, -1, -1, -1, -1, -1, -1, -1, -1,
1256 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1259 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1260 -1, -1, -1, -1, -1, -1, -1, -1, 442, -1,
1261 444, -1, -1, -1, -1, 449, -1, -1, -1, -1,
1262 -1, -1, -1, -1, 458, 459, 460, 461, 462, 463,
1263 -1, -1, -1, 467, -1, -1, -1, -1, -1, -1,
1264 -1, -1, -1, -1, -1, 479, -1, -1, -1, -1,
1265 484, 485, 486, 487, -1, -1, -1, -1, -1, -1,
1266 -1, 495, -1, -1, -1, -1, -1, -1, -1, -1,
1267 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1268 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1269 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1270 -1, -1, -1, -1, -1, 539, -1, -1, -1, -1,
1271 -1, -1, 546, 547, -1, -1, -1, 551, -1, -1,
1272 -1, -1, 556, 557, -1, -1, -1, -1, -1, -1,
1273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1274 -1, -1, -1, -1, -1, -1, -1, 581, -1, -1,
1275 584, 585, -1, 587, 588, -1, -1, 591, 592, 593,
1276 594, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1278 -1, -1, -1, -1, 618, -1, -1, -1, 622, -1,
1279 -1, -1, -1, -1, 628
1280 };
1281
1282 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1283 symbol of state STATE-NUM. */
1284 static const yytype_uint8 yystos[] =
1285 {
1286 0, 99, 0, 1, 84, 85, 86, 87, 88, 89,
1287 90, 91, 96, 97, 100, 101, 102, 104, 105, 106,
1288 107, 109, 110, 111, 112, 86, 101, 101, 86, 86,
1289 87, 92, 93, 108, 101, 96, 102, 110, 112, 101,
1290 101, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1291 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1292 23, 24, 25, 26, 27, 28, 29, 30, 31, 33,
1293 38, 39, 41, 44, 55, 56, 57, 58, 59, 60,
1294 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1295 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1296 81, 82, 83, 95, 102, 126, 111, 86, 101, 103,
1297 103, 103, 93, 92, 101, 101, 101, 101, 101, 101,
1298 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1299 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1300 101, 101, 101, 101, 101, 101, 101, 103, 101, 101,
1301 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1302 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1303 101, 101, 101, 101, 101, 101, 101, 101, 1, 86,
1304 101, 101, 88, 89, 94, 96, 124, 125, 127, 179,
1305 109, 128, 179, 102, 133, 179, 88, 117, 124, 134,
1306 179, 128, 179, 125, 142, 179, 128, 179, 109, 144,
1307 179, 102, 161, 179, 109, 129, 179, 102, 155, 179,
1308 102, 145, 179, 102, 148, 179, 96, 102, 118, 143,
1309 179, 128, 179, 128, 179, 128, 179, 128, 179, 128,
1310 179, 125, 130, 179, 102, 131, 179, 109, 132, 179,
1311 109, 135, 179, 102, 136, 179, 102, 137, 179, 102,
1312 138, 179, 102, 139, 179, 102, 123, 140, 179, 102,
1313 141, 179, 102, 146, 179, 102, 147, 179, 128, 179,
1314 125, 149, 150, 179, 102, 151, 179, 102, 152, 179,
1315 102, 153, 179, 155, 179, 96, 97, 102, 113, 114,
1316 115, 116, 156, 179, 161, 179, 134, 179, 102, 157,
1317 179, 102, 162, 163, 179, 102, 122, 154, 179, 102,
1318 158, 179, 102, 159, 179, 102, 170, 179, 102, 164,
1319 179, 102, 165, 179, 102, 166, 179, 102, 167, 179,
1320 102, 168, 179, 102, 169, 179, 102, 171, 179, 151,
1321 179, 161, 179, 122, 172, 179, 102, 173, 179, 102,
1322 174, 179, 134, 179, 102, 160, 179, 102, 177, 178,
1323 179, 178, 179, 179, 86, 1, 101, 96, 103, 103,
1324 101, 124, 88, 101, 103, 103, 101, 101, 101, 101,
1325 101, 101, 96, 101, 103, 101, 101, 101, 101, 101,
1326 103, 101, 103, 101, 96, 103, 101, 101, 101, 101,
1327 103, 101, 101, 101, 86, 87, 121, 96, 101, 101,
1328 101, 103, 101, 103, 101, 101, 101, 101, 101, 101,
1329 101, 103, 103, 101, 103, 101, 101, 101, 101, 101,
1330 103, 86, 102, 89, 109, 124, 88, 124, 102, 119,
1331 102, 109, 102, 102, 102, 102, 102, 102, 102, 109,
1332 109, 109, 102, 109, 102, 109, 102, 109, 125, 102,
1333 102, 102, 86, 87, 102, 120, 115, 102, 102, 122,
1334 102, 102, 102, 102, 125, 125, 125, 109, 102, 102,
1335 102, 102, 109, 125, 175, 176, 101, 103, 103, 124,
1336 101, 103, 101, 101, 101, 101, 101, 101, 103, 103,
1337 103, 103, 103, 103, 101, 101, 103, 101, 101, 101,
1338 120, 121, 101, 101, 103, 101, 101, 101, 103, 103,
1339 103, 103, 101, 121, 101, 101, 88, 101, 103, 122,
1340 102, 102, 102, 102, 102, 102, 118, 109, 102, 102,
1341 102, 122, 102, 102, 102, 102, 125, 125, 102, 102,
1342 175, 103, 101, 101, 101, 101, 101, 103, 103, 101,
1343 101, 101, 103, 101, 101, 101, 101, 103, 103, 101,
1344 101, 122, 102, 102, 109, 122, 102, 122, 122, 102,
1345 125, 102, 122, 122, 122, 103, 101, 101, 103, 103,
1346 101, 103, 103, 101, 103, 103, 103, 103, 102, 102,
1347 102, 102, 101, 101, 101, 121, 102, 102, 109, 101,
1348 101, 103, 102, 102, 103, 101, 113, 101, 122, 103
1349 };
1350
1351 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1352 static const yytype_uint8 yyr1[] =
1353 {
1354 0, 98, 99, 99, 100, 100, 100, 100, 100, 100,
1355 100, 101, 101, 102, 102, 103, 103, 104, 105, 105,
1356 106, 107, 107, 108, 108, 108, 108, 108, 109, 109,
1357 110, 110, 110, 111, 111, 112, 112, 113, 113, 114,
1358 114, 114, 115, 116, 116, 117, 117, 117, 117, 117,
1359 117, 117, 117, 118, 118, 118, 118, 119, 119, 120,
1360 120, 120, 121, 121, 122, 122, 123, 123, 124, 124,
1361 124, 124, 125, 125, 126, 126, 126, 126, 126, 126,
1362 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1363 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1364 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1365 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1366 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1367 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1368 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1369 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1370 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1371 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1372 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1373 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1374 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
1375 136, 137, 138, 138, 139, 140, 141, 142, 143, 144,
1376 145, 146, 147, 148, 149, 150, 150, 151, 152, 153,
1377 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
1378 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
1379 173, 174, 175, 175, 176, 176, 177, 178, 178, 179,
1380 179, 179
1381 };
1382
1383 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1384 static const yytype_int8 yyr2[] =
1385 {
1386 0, 2, 0, 2, 1, 2, 2, 1, 1, 1,
1387 2, 1, 2, 1, 1, 1, 2, 4, 4, 4,
1388 3, 2, 1, 0, 2, 2, 4, 4, 1, 1,
1389 1, 1, 2, 1, 1, 1, 3, 1, 1, 1,
1390 1, 2, 1, 1, 3, 1, 1, 2, 2, 3,
1391 3, 3, 4, 1, 1, 3, 3, 1, 3, 2,
1392 1, 2, 1, 2, 1, 3, 1, 3, 1, 1,
1393 2, 3, 1, 1, 3, 3, 3, 3, 3, 3,
1394 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1395 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1396 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1397 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1398 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1399 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1400 3, 3, 3, 3, 3, 3, 2, 3, 3, 3,
1401 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1402 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1403 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1404 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1405 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1406 3, 2, 2, 14, 6, 4, 4, 4, 2, 4,
1407 4, 2, 2, 4, 4, 2, 6, 2, 2, 4,
1408 8, 12, 4, 8, 2, 1, 3, 8, 8, 6,
1409 2, 18, 2, 10, 8, 8, 8, 8, 7, 4,
1410 2, 4, 4, 4, 4, 2, 2, 6, 6, 2,
1411 4, 8, 2, 1, 1, 3, 3, 4, 2, 6,
1412 4, 3
1413 };
1414
1415
1416 enum { YYENOMEM = -2 };
1417
1418 #define yyerrok (yyerrstatus = 0)
1419 #define yyclearin (yychar = YYEMPTY)
1420
1421 #define YYACCEPT goto yyacceptlab
1422 #define YYABORT goto yyabortlab
1423 #define YYERROR goto yyerrorlab
1424
1425
1426 #define YYRECOVERING() (!!yyerrstatus)
1427
1428 #define YYBACKUP(Token, Value) \
1429 do \
1430 if (yychar == YYEMPTY) \
1431 { \
1432 yychar = (Token); \
1433 yylval = (Value); \
1434 YYPOPSTACK (yylen); \
1435 yystate = *yyssp; \
1436 goto yybackup; \
1437 } \
1438 else \
1439 { \
1440 yyerror (YY_("syntax error: cannot back up")); \
1441 YYERROR; \
1442 } \
1443 while (0)
1444
1445 /* Backward compatibility with an undocumented macro.
1446 Use YYerror or YYUNDEF. */
1447 #define YYERRCODE YYUNDEF
1448
1449
1450 /* Enable debugging if requested. */
1451 #if YYDEBUG
1452
1453 # ifndef YYFPRINTF
1454 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1455 # define YYFPRINTF fprintf
1456 # endif
1457
1458 # define YYDPRINTF(Args) \
1459 do { \
1460 if (yydebug) \
1461 YYFPRINTF Args; \
1462 } while (0)
1463
1464 /* This macro is provided for backward compatibility. */
1465 # ifndef YY_LOCATION_PRINT
1466 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1467 # endif
1468
1469
1470 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
1471 do { \
1472 if (yydebug) \
1473 { \
1474 YYFPRINTF (stderr, "%s ", Title); \
1475 yy_symbol_print (stderr, \
1476 Kind, Value); \
1477 YYFPRINTF (stderr, "\n"); \
1478 } \
1479 } while (0)
1480
1481
1482 /*-----------------------------------.
1483 | Print this symbol's value on YYO. |
1484 `-----------------------------------*/
1485
1486 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1487 yy_symbol_value_print (FILE *yyo,
1488 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1489 {
1490 FILE *yyoutput = yyo;
1491 YY_USE (yyoutput);
1492 if (!yyvaluep)
1493 return;
1494 # ifdef YYPRINT
1495 if (yykind < YYNTOKENS)
1496 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
1497 # endif
1498 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1499 YY_USE (yykind);
1500 YY_IGNORE_MAYBE_UNINITIALIZED_END
1501 }
1502
1503
1504 /*---------------------------.
1505 | Print this symbol on YYO. |
1506 `---------------------------*/
1507
1508 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1509 yy_symbol_print (FILE *yyo,
1510 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1511 {
1512 YYFPRINTF (yyo, "%s %s (",
1513 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
1514
1515 yy_symbol_value_print (yyo, yykind, yyvaluep);
1516 YYFPRINTF (yyo, ")");
1517 }
1518
1519 /*------------------------------------------------------------------.
1520 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1521 | TOP (included). |
1522 `------------------------------------------------------------------*/
1523
1524 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)1525 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
1526 {
1527 YYFPRINTF (stderr, "Stack now");
1528 for (; yybottom <= yytop; yybottom++)
1529 {
1530 int yybot = *yybottom;
1531 YYFPRINTF (stderr, " %d", yybot);
1532 }
1533 YYFPRINTF (stderr, "\n");
1534 }
1535
1536 # define YY_STACK_PRINT(Bottom, Top) \
1537 do { \
1538 if (yydebug) \
1539 yy_stack_print ((Bottom), (Top)); \
1540 } while (0)
1541
1542
1543 /*------------------------------------------------.
1544 | Report that the YYRULE is going to be reduced. |
1545 `------------------------------------------------*/
1546
1547 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)1548 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
1549 int yyrule)
1550 {
1551 int yylno = yyrline[yyrule];
1552 int yynrhs = yyr2[yyrule];
1553 int yyi;
1554 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1555 yyrule - 1, yylno);
1556 /* The symbols being reduced. */
1557 for (yyi = 0; yyi < yynrhs; yyi++)
1558 {
1559 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1560 yy_symbol_print (stderr,
1561 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1562 &yyvsp[(yyi + 1) - (yynrhs)]);
1563 YYFPRINTF (stderr, "\n");
1564 }
1565 }
1566
1567 # define YY_REDUCE_PRINT(Rule) \
1568 do { \
1569 if (yydebug) \
1570 yy_reduce_print (yyssp, yyvsp, Rule); \
1571 } while (0)
1572
1573 /* Nonzero means print parse trace. It is left uninitialized so that
1574 multiple parsers can coexist. */
1575 int yydebug;
1576 #else /* !YYDEBUG */
1577 # define YYDPRINTF(Args) ((void) 0)
1578 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1579 # define YY_STACK_PRINT(Bottom, Top)
1580 # define YY_REDUCE_PRINT(Rule)
1581 #endif /* !YYDEBUG */
1582
1583
1584 /* YYINITDEPTH -- initial size of the parser's stacks. */
1585 #ifndef YYINITDEPTH
1586 # define YYINITDEPTH 200
1587 #endif
1588
1589 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1590 if the built-in stack extension method is used).
1591
1592 Do not make this value too large; the results are undefined if
1593 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1594 evaluated with infinite-precision integer arithmetic. */
1595
1596 #ifndef YYMAXDEPTH
1597 # define YYMAXDEPTH 10000
1598 #endif
1599
1600
1601
1602
1603
1604
1605 /*-----------------------------------------------.
1606 | Release the memory associated to this symbol. |
1607 `-----------------------------------------------*/
1608
1609 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)1610 yydestruct (const char *yymsg,
1611 yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
1612 {
1613 YY_USE (yyvaluep);
1614 if (!yymsg)
1615 yymsg = "Deleting";
1616 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1617
1618 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1619 YY_USE (yykind);
1620 YY_IGNORE_MAYBE_UNINITIALIZED_END
1621 }
1622
1623
1624 /* Lookahead token kind. */
1625 int yychar;
1626
1627 /* The semantic value of the lookahead symbol. */
1628 YYSTYPE yylval;
1629 /* Number of syntax errors so far. */
1630 int yynerrs;
1631
1632
1633
1634
1635 /*----------.
1636 | yyparse. |
1637 `----------*/
1638
1639 int
yyparse(void)1640 yyparse (void)
1641 {
1642 yy_state_fast_t yystate = 0;
1643 /* Number of tokens to shift before error messages enabled. */
1644 int yyerrstatus = 0;
1645
1646 /* Refer to the stacks through separate pointers, to allow yyoverflow
1647 to reallocate them elsewhere. */
1648
1649 /* Their size. */
1650 YYPTRDIFF_T yystacksize = YYINITDEPTH;
1651
1652 /* The state stack: array, bottom, top. */
1653 yy_state_t yyssa[YYINITDEPTH];
1654 yy_state_t *yyss = yyssa;
1655 yy_state_t *yyssp = yyss;
1656
1657 /* The semantic value stack: array, bottom, top. */
1658 YYSTYPE yyvsa[YYINITDEPTH];
1659 YYSTYPE *yyvs = yyvsa;
1660 YYSTYPE *yyvsp = yyvs;
1661
1662 int yyn;
1663 /* The return value of yyparse. */
1664 int yyresult;
1665 /* Lookahead symbol kind. */
1666 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1667 /* The variables used to return semantic value and location from the
1668 action routines. */
1669 YYSTYPE yyval;
1670
1671
1672
1673 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1674
1675 /* The number of symbols on the RHS of the reduced rule.
1676 Keep to zero when no symbol should be popped. */
1677 int yylen = 0;
1678
1679 YYDPRINTF ((stderr, "Starting parse\n"));
1680
1681 yychar = YYEMPTY; /* Cause a token to be read. */
1682 goto yysetstate;
1683
1684
1685 /*------------------------------------------------------------.
1686 | yynewstate -- push a new state, which is found in yystate. |
1687 `------------------------------------------------------------*/
1688 yynewstate:
1689 /* In all cases, when you get here, the value and location stacks
1690 have just been pushed. So pushing a state here evens the stacks. */
1691 yyssp++;
1692
1693
1694 /*--------------------------------------------------------------------.
1695 | yysetstate -- set current state (the top of the stack) to yystate. |
1696 `--------------------------------------------------------------------*/
1697 yysetstate:
1698 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1699 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1700 YY_IGNORE_USELESS_CAST_BEGIN
1701 *yyssp = YY_CAST (yy_state_t, yystate);
1702 YY_IGNORE_USELESS_CAST_END
1703 YY_STACK_PRINT (yyss, yyssp);
1704
1705 if (yyss + yystacksize - 1 <= yyssp)
1706 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1707 goto yyexhaustedlab;
1708 #else
1709 {
1710 /* Get the current used size of the three stacks, in elements. */
1711 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1712
1713 # if defined yyoverflow
1714 {
1715 /* Give user a chance to reallocate the stack. Use copies of
1716 these so that the &'s don't force the real ones into
1717 memory. */
1718 yy_state_t *yyss1 = yyss;
1719 YYSTYPE *yyvs1 = yyvs;
1720
1721 /* Each stack pointer address is followed by the size of the
1722 data in use in that stack, in bytes. This used to be a
1723 conditional around just the two extra args, but that might
1724 be undefined if yyoverflow is a macro. */
1725 yyoverflow (YY_("memory exhausted"),
1726 &yyss1, yysize * YYSIZEOF (*yyssp),
1727 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1728 &yystacksize);
1729 yyss = yyss1;
1730 yyvs = yyvs1;
1731 }
1732 # else /* defined YYSTACK_RELOCATE */
1733 /* Extend the stack our own way. */
1734 if (YYMAXDEPTH <= yystacksize)
1735 goto yyexhaustedlab;
1736 yystacksize *= 2;
1737 if (YYMAXDEPTH < yystacksize)
1738 yystacksize = YYMAXDEPTH;
1739
1740 {
1741 yy_state_t *yyss1 = yyss;
1742 union yyalloc *yyptr =
1743 YY_CAST (union yyalloc *,
1744 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1745 if (! yyptr)
1746 goto yyexhaustedlab;
1747 YYSTACK_RELOCATE (yyss_alloc, yyss);
1748 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1749 # undef YYSTACK_RELOCATE
1750 if (yyss1 != yyssa)
1751 YYSTACK_FREE (yyss1);
1752 }
1753 # endif
1754
1755 yyssp = yyss + yysize - 1;
1756 yyvsp = yyvs + yysize - 1;
1757
1758 YY_IGNORE_USELESS_CAST_BEGIN
1759 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1760 YY_CAST (long, yystacksize)));
1761 YY_IGNORE_USELESS_CAST_END
1762
1763 if (yyss + yystacksize - 1 <= yyssp)
1764 YYABORT;
1765 }
1766 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1767
1768 if (yystate == YYFINAL)
1769 YYACCEPT;
1770
1771 goto yybackup;
1772
1773
1774 /*-----------.
1775 | yybackup. |
1776 `-----------*/
1777 yybackup:
1778 /* Do appropriate processing given the current state. Read a
1779 lookahead token if we need one and don't already have one. */
1780
1781 /* First try to decide what to do without reference to lookahead token. */
1782 yyn = yypact[yystate];
1783 if (yypact_value_is_default (yyn))
1784 goto yydefault;
1785
1786 /* Not known => get a lookahead token if don't already have one. */
1787
1788 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1789 if (yychar == YYEMPTY)
1790 {
1791 YYDPRINTF ((stderr, "Reading a token\n"));
1792 yychar = yylex ();
1793 }
1794
1795 if (yychar <= YYEOF)
1796 {
1797 yychar = YYEOF;
1798 yytoken = YYSYMBOL_YYEOF;
1799 YYDPRINTF ((stderr, "Now at end of input.\n"));
1800 }
1801 else if (yychar == YYerror)
1802 {
1803 /* The scanner already issued an error message, process directly
1804 to error recovery. But do not keep the error token as
1805 lookahead, it is too special and may lead us to an endless
1806 loop in error recovery. */
1807 yychar = YYUNDEF;
1808 yytoken = YYSYMBOL_YYerror;
1809 goto yyerrlab1;
1810 }
1811 else
1812 {
1813 yytoken = YYTRANSLATE (yychar);
1814 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1815 }
1816
1817 /* If the proper action on seeing token YYTOKEN is to reduce or to
1818 detect an error, take that action. */
1819 yyn += yytoken;
1820 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1821 goto yydefault;
1822 yyn = yytable[yyn];
1823 if (yyn <= 0)
1824 {
1825 if (yytable_value_is_error (yyn))
1826 goto yyerrlab;
1827 yyn = -yyn;
1828 goto yyreduce;
1829 }
1830
1831 /* Count tokens shifted since error; after three, turn off error
1832 status. */
1833 if (yyerrstatus)
1834 yyerrstatus--;
1835
1836 /* Shift the lookahead token. */
1837 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1838 yystate = yyn;
1839 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1840 *++yyvsp = yylval;
1841 YY_IGNORE_MAYBE_UNINITIALIZED_END
1842
1843 /* Discard the shifted token. */
1844 yychar = YYEMPTY;
1845 goto yynewstate;
1846
1847
1848 /*-----------------------------------------------------------.
1849 | yydefault -- do the default action for the current state. |
1850 `-----------------------------------------------------------*/
1851 yydefault:
1852 yyn = yydefact[yystate];
1853 if (yyn == 0)
1854 goto yyerrlab;
1855 goto yyreduce;
1856
1857
1858 /*-----------------------------.
1859 | yyreduce -- do a reduction. |
1860 `-----------------------------*/
1861 yyreduce:
1862 /* yyn is the number of a rule to reduce with. */
1863 yylen = yyr2[yyn];
1864
1865 /* If YYLEN is nonzero, implement the default value of the action:
1866 '$$ = $1'.
1867
1868 Otherwise, the following line sets YYVAL to garbage.
1869 This behavior is undocumented and Bison
1870 users should not rely upon it. Assigning to YYVAL
1871 unconditionally makes the parser a bit smaller, and it avoids a
1872 GCC warning that YYVAL may be used uninitialized. */
1873 yyval = yyvsp[1-yylen];
1874
1875
1876 YY_REDUCE_PRINT (yyn);
1877 switch (yyn)
1878 {
1879 case 6: /* line: PREV NL */
1880 #line 99 "zparser.y"
1881 {}
1882 #line 1883 "zparser.c"
1883 break;
1884
1885 case 7: /* line: ttl_directive */
1886 #line 101 "zparser.y"
1887 {
1888 region_free_all(parser->rr_region);
1889 parser->current_rr.type = 0;
1890 parser->current_rr.rdata_count = 0;
1891 parser->current_rr.rdatas = parser->temporary_rdatas;
1892 parser->error_occurred = 0;
1893 }
1894 #line 1895 "zparser.c"
1895 break;
1896
1897 case 8: /* line: origin_directive */
1898 #line 109 "zparser.y"
1899 {
1900 region_free_all(parser->rr_region);
1901 parser->current_rr.type = 0;
1902 parser->current_rr.rdata_count = 0;
1903 parser->current_rr.rdatas = parser->temporary_rdatas;
1904 parser->error_occurred = 0;
1905 }
1906 #line 1907 "zparser.c"
1907 break;
1908
1909 case 9: /* line: rr */
1910 #line 117 "zparser.y"
1911 { /* rr should be fully parsed */
1912 if (!parser->error_occurred) {
1913 parser->current_rr.rdatas
1914 =(rdata_atom_type *)region_alloc_array_init(
1915 parser->region,
1916 parser->current_rr.rdatas,
1917 parser->current_rr.rdata_count,
1918 sizeof(rdata_atom_type));
1919
1920 process_rr();
1921 }
1922
1923 region_free_all(parser->rr_region);
1924
1925 parser->current_rr.type = 0;
1926 parser->current_rr.rdata_count = 0;
1927 parser->current_rr.rdatas = parser->temporary_rdatas;
1928 parser->error_occurred = 0;
1929 }
1930 #line 1931 "zparser.c"
1931 break;
1932
1933 case 17: /* ttl_directive: DOLLAR_TTL sp str trail */
1934 #line 151 "zparser.y"
1935 {
1936 parser->default_ttl = zparser_ttl2int((yyvsp[-1].data).str, &(parser->error_occurred));
1937 if (parser->error_occurred == 1) {
1938 parser->default_ttl = DEFAULT_TTL;
1939 parser->error_occurred = 0;
1940 }
1941 }
1942 #line 1943 "zparser.c"
1943 break;
1944
1945 case 18: /* origin_directive: DOLLAR_ORIGIN sp abs_dname trail */
1946 #line 161 "zparser.y"
1947 {
1948 /* if previous origin is unused, remove it, do not leak it */
1949 if(parser->origin != error_domain && parser->origin != (yyvsp[-1].domain)) {
1950 /* protect $3 from deletion, because deldomain walks up */
1951 (yyvsp[-1].domain)->usage ++;
1952 domain_table_deldomain(parser->db, parser->origin);
1953 (yyvsp[-1].domain)->usage --;
1954 }
1955 parser->origin = (yyvsp[-1].domain);
1956 }
1957 #line 1958 "zparser.c"
1958 break;
1959
1960 case 19: /* origin_directive: DOLLAR_ORIGIN sp rel_dname trail */
1961 #line 172 "zparser.y"
1962 {
1963 zc_error_prev_line("$ORIGIN directive requires absolute domain name");
1964 }
1965 #line 1966 "zparser.c"
1966 break;
1967
1968 case 20: /* rr: owner classttl type_and_rdata */
1969 #line 178 "zparser.y"
1970 {
1971 parser->current_rr.owner = (yyvsp[-2].domain);
1972 parser->current_rr.type = (yyvsp[0].type);
1973 }
1974 #line 1975 "zparser.c"
1975 break;
1976
1977 case 21: /* owner: dname sp */
1978 #line 185 "zparser.y"
1979 {
1980 parser->prev_dname = (yyvsp[-1].domain);
1981 (yyval.domain) = (yyvsp[-1].domain);
1982 }
1983 #line 1984 "zparser.c"
1984 break;
1985
1986 case 22: /* owner: PREV */
1987 #line 190 "zparser.y"
1988 {
1989 (yyval.domain) = parser->prev_dname;
1990 }
1991 #line 1992 "zparser.c"
1992 break;
1993
1994 case 23: /* classttl: %empty */
1995 #line 196 "zparser.y"
1996 {
1997 parser->current_rr.ttl = parser->default_ttl;
1998 parser->current_rr.klass = parser->default_class;
1999 }
2000 #line 2001 "zparser.c"
2001 break;
2002
2003 case 24: /* classttl: T_RRCLASS sp */
2004 #line 201 "zparser.y"
2005 {
2006 parser->current_rr.ttl = parser->default_ttl;
2007 parser->current_rr.klass = (yyvsp[-1].klass);
2008 }
2009 #line 2010 "zparser.c"
2010 break;
2011
2012 case 25: /* classttl: T_TTL sp */
2013 #line 206 "zparser.y"
2014 {
2015 parser->current_rr.ttl = (yyvsp[-1].ttl);
2016 parser->current_rr.klass = parser->default_class;
2017 }
2018 #line 2019 "zparser.c"
2019 break;
2020
2021 case 26: /* classttl: T_TTL sp T_RRCLASS sp */
2022 #line 211 "zparser.y"
2023 {
2024 parser->current_rr.ttl = (yyvsp[-3].ttl);
2025 parser->current_rr.klass = (yyvsp[-1].klass);
2026 }
2027 #line 2028 "zparser.c"
2028 break;
2029
2030 case 27: /* classttl: T_RRCLASS sp T_TTL sp */
2031 #line 216 "zparser.y"
2032 {
2033 parser->current_rr.ttl = (yyvsp[-1].ttl);
2034 parser->current_rr.klass = (yyvsp[-3].klass);
2035 }
2036 #line 2037 "zparser.c"
2037 break;
2038
2039 case 29: /* dname: rel_dname */
2040 #line 224 "zparser.y"
2041 {
2042 if ((yyvsp[0].dname) == error_dname) {
2043 (yyval.domain) = error_domain;
2044 } else if(parser->origin == error_domain) {
2045 zc_error("cannot concatenate origin to domain name, because origin failed to parse");
2046 (yyval.domain) = error_domain;
2047 } else if ((yyvsp[0].dname)->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN) {
2048 zc_error("domain name exceeds %d character limit", MAXDOMAINLEN);
2049 (yyval.domain) = error_domain;
2050 } else {
2051 (yyval.domain) = domain_table_insert(
2052 parser->db->domains,
2053 dname_concatenate(
2054 parser->rr_region,
2055 (yyvsp[0].dname),
2056 domain_dname(parser->origin)));
2057 }
2058 }
2059 #line 2060 "zparser.c"
2060 break;
2061
2062 case 30: /* abs_dname: '.' */
2063 #line 245 "zparser.y"
2064 {
2065 (yyval.domain) = parser->db->domains->root;
2066 }
2067 #line 2068 "zparser.c"
2068 break;
2069
2070 case 31: /* abs_dname: '@' */
2071 #line 249 "zparser.y"
2072 {
2073 (yyval.domain) = parser->origin;
2074 }
2075 #line 2076 "zparser.c"
2076 break;
2077
2078 case 32: /* abs_dname: rel_dname '.' */
2079 #line 253 "zparser.y"
2080 {
2081 if ((yyvsp[-1].dname) != error_dname) {
2082 (yyval.domain) = domain_table_insert(parser->db->domains, (yyvsp[-1].dname));
2083 } else {
2084 (yyval.domain) = error_domain;
2085 }
2086 }
2087 #line 2088 "zparser.c"
2088 break;
2089
2090 case 33: /* label: str */
2091 #line 263 "zparser.y"
2092 {
2093 if ((yyvsp[0].data).len > MAXLABELLEN) {
2094 zc_error("label exceeds %d character limit", MAXLABELLEN);
2095 (yyval.dname) = error_dname;
2096 } else if ((yyvsp[0].data).len <= 0) {
2097 zc_error("zero label length");
2098 (yyval.dname) = error_dname;
2099 } else {
2100 (yyval.dname) = dname_make_from_label(parser->rr_region,
2101 (uint8_t *) (yyvsp[0].data).str,
2102 (yyvsp[0].data).len);
2103 }
2104 }
2105 #line 2106 "zparser.c"
2106 break;
2107
2108 case 34: /* label: BITLAB */
2109 #line 277 "zparser.y"
2110 {
2111 zc_error("bitlabels are now deprecated. RFC2673 is obsoleted.");
2112 (yyval.dname) = error_dname;
2113 }
2114 #line 2115 "zparser.c"
2115 break;
2116
2117 case 36: /* rel_dname: rel_dname '.' label */
2118 #line 285 "zparser.y"
2119 {
2120 if ((yyvsp[-2].dname) == error_dname || (yyvsp[0].dname) == error_dname) {
2121 (yyval.dname) = error_dname;
2122 } else if ((yyvsp[-2].dname)->name_size + (yyvsp[0].dname)->name_size - 1 > MAXDOMAINLEN) {
2123 zc_error("domain name exceeds %d character limit",
2124 MAXDOMAINLEN);
2125 (yyval.dname) = error_dname;
2126 } else {
2127 (yyval.dname) = dname_concatenate(parser->rr_region, (yyvsp[-2].dname), (yyvsp[0].dname));
2128 }
2129 }
2130 #line 2131 "zparser.c"
2131 break;
2132
2133 case 38: /* wire_dname: wire_rel_dname */
2134 #line 304 "zparser.y"
2135 {
2136 /* terminate in root label and copy the origin in there */
2137 if(parser->origin && domain_dname(parser->origin)) {
2138 (yyval.data).len = (yyvsp[0].data).len + domain_dname(parser->origin)->name_size;
2139 if ((yyval.data).len > MAXDOMAINLEN)
2140 zc_error("domain name exceeds %d character limit",
2141 MAXDOMAINLEN);
2142 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2143 memmove((yyval.data).str, (yyvsp[0].data).str, (yyvsp[0].data).len);
2144 memmove((yyval.data).str + (yyvsp[0].data).len, dname_name(domain_dname(parser->origin)),
2145 domain_dname(parser->origin)->name_size);
2146 } else {
2147 (yyval.data).len = (yyvsp[0].data).len + 1;
2148 if ((yyval.data).len > MAXDOMAINLEN)
2149 zc_error("domain name exceeds %d character limit",
2150 MAXDOMAINLEN);
2151 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2152 memmove((yyval.data).str, (yyvsp[0].data).str, (yyvsp[0].data).len);
2153 (yyval.data).str[ (yyvsp[0].data).len ] = 0;
2154 }
2155 }
2156 #line 2157 "zparser.c"
2157 break;
2158
2159 case 39: /* wire_abs_dname: '.' */
2160 #line 328 "zparser.y"
2161 {
2162 char *result = (char *) region_alloc(parser->rr_region, 1);
2163 result[0] = 0;
2164 (yyval.data).str = result;
2165 (yyval.data).len = 1;
2166 }
2167 #line 2168 "zparser.c"
2168 break;
2169
2170 case 40: /* wire_abs_dname: '@' */
2171 #line 335 "zparser.y"
2172 {
2173 if(parser->origin && domain_dname(parser->origin)) {
2174 (yyval.data).len = domain_dname(parser->origin)->name_size;
2175 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2176 memmove((yyval.data).str, dname_name(domain_dname(parser->origin)), (yyval.data).len);
2177 } else {
2178 (yyval.data).len = 1;
2179 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2180 (yyval.data).str[0] = 0;
2181 }
2182 }
2183 #line 2184 "zparser.c"
2184 break;
2185
2186 case 41: /* wire_abs_dname: wire_rel_dname '.' */
2187 #line 347 "zparser.y"
2188 {
2189 (yyval.data).len = (yyvsp[-1].data).len + 1;
2190 if ((yyval.data).len > MAXDOMAINLEN)
2191 zc_error("domain name exceeds %d character limit",
2192 MAXDOMAINLEN);
2193 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2194 memcpy((yyval.data).str, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
2195 (yyval.data).str[(yyvsp[-1].data).len] = 0;
2196 }
2197 #line 2198 "zparser.c"
2198 break;
2199
2200 case 42: /* wire_label: str */
2201 #line 359 "zparser.y"
2202 {
2203 char *result = (char *) region_alloc(parser->rr_region,
2204 (yyvsp[0].data).len + 1);
2205
2206 if ((yyvsp[0].data).len > MAXLABELLEN)
2207 zc_error("label exceeds %d character limit", MAXLABELLEN);
2208
2209 /* make label anyway */
2210 result[0] = (yyvsp[0].data).len;
2211 memmove(result+1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2212
2213 (yyval.data).str = result;
2214 (yyval.data).len = (yyvsp[0].data).len + 1;
2215 }
2216 #line 2217 "zparser.c"
2217 break;
2218
2219 case 44: /* wire_rel_dname: wire_rel_dname '.' wire_label */
2220 #line 377 "zparser.y"
2221 {
2222 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2223 if ((yyval.data).len > MAXDOMAINLEN)
2224 zc_error("domain name exceeds %d character limit",
2225 MAXDOMAINLEN);
2226 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2227 memmove((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2228 memmove((yyval.data).str + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2229 }
2230 #line 2231 "zparser.c"
2231 break;
2232
2233 case 45: /* str_seq: unquoted_dotted_str */
2234 #line 389 "zparser.y"
2235 {
2236 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 1);
2237 }
2238 #line 2239 "zparser.c"
2239 break;
2240
2241 case 46: /* str_seq: QSTR */
2242 #line 393 "zparser.y"
2243 {
2244 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 1);
2245 }
2246 #line 2247 "zparser.c"
2247 break;
2248
2249 case 47: /* str_seq: QSTR unquoted_dotted_str */
2250 #line 397 "zparser.y"
2251 {
2252 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 1);
2253 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2254 }
2255 #line 2256 "zparser.c"
2256 break;
2257
2258 case 48: /* str_seq: str_seq QSTR */
2259 #line 402 "zparser.y"
2260 {
2261 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2262 }
2263 #line 2264 "zparser.c"
2264 break;
2265
2266 case 49: /* str_seq: str_seq QSTR unquoted_dotted_str */
2267 #line 406 "zparser.y"
2268 {
2269 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 0);
2270 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2271 }
2272 #line 2273 "zparser.c"
2273 break;
2274
2275 case 50: /* str_seq: str_seq sp unquoted_dotted_str */
2276 #line 411 "zparser.y"
2277 {
2278 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2279 }
2280 #line 2281 "zparser.c"
2281 break;
2282
2283 case 51: /* str_seq: str_seq sp QSTR */
2284 #line 415 "zparser.y"
2285 {
2286 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2287 }
2288 #line 2289 "zparser.c"
2289 break;
2290
2291 case 52: /* str_seq: str_seq sp QSTR unquoted_dotted_str */
2292 #line 419 "zparser.y"
2293 {
2294 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 0);
2295 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2296 }
2297 #line 2298 "zparser.c"
2298 break;
2299
2300 case 54: /* concatenated_str_seq: '.' */
2301 #line 431 "zparser.y"
2302 {
2303 (yyval.data).len = 1;
2304 (yyval.data).str = region_strdup(parser->rr_region, ".");
2305 }
2306 #line 2307 "zparser.c"
2307 break;
2308
2309 case 55: /* concatenated_str_seq: concatenated_str_seq sp str */
2310 #line 436 "zparser.y"
2311 {
2312 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2313 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len + 1);
2314 memcpy((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2315 memcpy((yyval.data).str + (yyvsp[-2].data).len, " ", 1);
2316 memcpy((yyval.data).str + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2317 (yyval.data).str[(yyval.data).len] = '\0';
2318 }
2319 #line 2320 "zparser.c"
2320 break;
2321
2322 case 56: /* concatenated_str_seq: concatenated_str_seq '.' str */
2323 #line 445 "zparser.y"
2324 {
2325 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2326 (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len + 1);
2327 memcpy((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2328 memcpy((yyval.data).str + (yyvsp[-2].data).len, ".", 1);
2329 memcpy((yyval.data).str + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2330 (yyval.data).str[(yyval.data).len] = '\0';
2331 }
2332 #line 2333 "zparser.c"
2333 break;
2334
2335 case 57: /* nxt_seq: str */
2336 #line 457 "zparser.y"
2337 {
2338 uint16_t type = rrtype_from_string((yyvsp[0].data).str);
2339 if (type != 0 && type < 128) {
2340 set_bit(nxtbits, type);
2341 } else {
2342 zc_error("bad type %d in NXT record", (int) type);
2343 }
2344 }
2345 #line 2346 "zparser.c"
2346 break;
2347
2348 case 58: /* nxt_seq: nxt_seq sp str */
2349 #line 466 "zparser.y"
2350 {
2351 uint16_t type = rrtype_from_string((yyvsp[0].data).str);
2352 if (type != 0 && type < 128) {
2353 set_bit(nxtbits, type);
2354 } else {
2355 zc_error("bad type %d in NXT record", (int) type);
2356 }
2357 }
2358 #line 2359 "zparser.c"
2359 break;
2360
2361 case 59: /* nsec_more: SP nsec_more */
2362 #line 477 "zparser.y"
2363 {
2364 }
2365 #line 2366 "zparser.c"
2366 break;
2367
2368 case 60: /* nsec_more: NL */
2369 #line 480 "zparser.y"
2370 {
2371 }
2372 #line 2373 "zparser.c"
2373 break;
2374
2375 case 61: /* nsec_more: str nsec_seq */
2376 #line 483 "zparser.y"
2377 {
2378 uint16_t type = rrtype_from_string((yyvsp[-1].data).str);
2379 if (type != 0) {
2380 if (type > nsec_highest_rcode) {
2381 nsec_highest_rcode = type;
2382 }
2383 set_bitnsec(nsecbits, type);
2384 } else {
2385 zc_error("bad type %d in NSEC record", (int) type);
2386 }
2387 }
2388 #line 2389 "zparser.c"
2389 break;
2390
2391 case 65: /* str_sp_seq: str_sp_seq sp str */
2392 #line 506 "zparser.y"
2393 {
2394 char *result = (char *) region_alloc(parser->rr_region,
2395 (yyvsp[-2].data).len + (yyvsp[0].data).len + 1);
2396 memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2397 memcpy(result + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2398 (yyval.data).str = result;
2399 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2400 (yyval.data).str[(yyval.data).len] = '\0';
2401 }
2402 #line 2403 "zparser.c"
2403 break;
2404
2405 case 67: /* str_dot_seq: str_dot_seq '.' str */
2406 #line 523 "zparser.y"
2407 {
2408 char *result = (char *) region_alloc(parser->rr_region,
2409 (yyvsp[-2].data).len + (yyvsp[0].data).len + 1);
2410 memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2411 memcpy(result + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2412 (yyval.data).str = result;
2413 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2414 (yyval.data).str[(yyval.data).len] = '\0';
2415 }
2416 #line 2417 "zparser.c"
2417 break;
2418
2419 case 69: /* unquoted_dotted_str: '.' */
2420 #line 539 "zparser.y"
2421 {
2422 (yyval.data).str = ".";
2423 (yyval.data).len = 1;
2424 }
2425 #line 2426 "zparser.c"
2426 break;
2427
2428 case 70: /* unquoted_dotted_str: unquoted_dotted_str '.' */
2429 #line 544 "zparser.y"
2430 {
2431 char *result = (char *) region_alloc(parser->rr_region,
2432 (yyvsp[-1].data).len + 2);
2433 memcpy(result, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
2434 result[(yyvsp[-1].data).len] = '.';
2435 (yyval.data).str = result;
2436 (yyval.data).len = (yyvsp[-1].data).len + 1;
2437 (yyval.data).str[(yyval.data).len] = '\0';
2438 }
2439 #line 2440 "zparser.c"
2440 break;
2441
2442 case 71: /* unquoted_dotted_str: unquoted_dotted_str '.' STR */
2443 #line 554 "zparser.y"
2444 {
2445 char *result = (char *) region_alloc(parser->rr_region,
2446 (yyvsp[-2].data).len + (yyvsp[0].data).len + 2);
2447 memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2448 result[(yyvsp[-2].data).len] = '.';
2449 memcpy(result + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2450 (yyval.data).str = result;
2451 (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2452 (yyval.data).str[(yyval.data).len] = '\0';
2453 }
2454 #line 2455 "zparser.c"
2455 break;
2456
2457 case 75: /* type_and_rdata: T_A sp rdata_unknown */
2458 #line 577 "zparser.y"
2459 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2460 #line 2461 "zparser.c"
2461 break;
2462
2463 case 77: /* type_and_rdata: T_NS sp rdata_unknown */
2464 #line 579 "zparser.y"
2465 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2466 #line 2467 "zparser.c"
2467 break;
2468
2469 case 78: /* type_and_rdata: T_MD sp rdata_domain_name */
2470 #line 580 "zparser.y"
2471 { zc_warning_prev_line("MD is obsolete"); }
2472 #line 2473 "zparser.c"
2473 break;
2474
2475 case 79: /* type_and_rdata: T_MD sp rdata_unknown */
2476 #line 582 "zparser.y"
2477 {
2478 zc_warning_prev_line("MD is obsolete");
2479 (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2480 }
2481 #line 2482 "zparser.c"
2482 break;
2483
2484 case 80: /* type_and_rdata: T_MF sp rdata_domain_name */
2485 #line 586 "zparser.y"
2486 { zc_warning_prev_line("MF is obsolete"); }
2487 #line 2488 "zparser.c"
2488 break;
2489
2490 case 81: /* type_and_rdata: T_MF sp rdata_unknown */
2491 #line 588 "zparser.y"
2492 {
2493 zc_warning_prev_line("MF is obsolete");
2494 (yyval.type) = (yyvsp[-2].type);
2495 parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2496 }
2497 #line 2498 "zparser.c"
2498 break;
2499
2500 case 83: /* type_and_rdata: T_CNAME sp rdata_unknown */
2501 #line 594 "zparser.y"
2502 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2503 #line 2504 "zparser.c"
2504 break;
2505
2506 case 85: /* type_and_rdata: T_SOA sp rdata_unknown */
2507 #line 596 "zparser.y"
2508 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2509 #line 2510 "zparser.c"
2510 break;
2511
2512 case 86: /* type_and_rdata: T_MB sp rdata_domain_name */
2513 #line 597 "zparser.y"
2514 { zc_warning_prev_line("MB is obsolete"); }
2515 #line 2516 "zparser.c"
2516 break;
2517
2518 case 87: /* type_and_rdata: T_MB sp rdata_unknown */
2519 #line 599 "zparser.y"
2520 {
2521 zc_warning_prev_line("MB is obsolete");
2522 (yyval.type) = (yyvsp[-2].type);
2523 parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2524 }
2525 #line 2526 "zparser.c"
2526 break;
2527
2528 case 89: /* type_and_rdata: T_MG sp rdata_unknown */
2529 #line 605 "zparser.y"
2530 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2531 #line 2532 "zparser.c"
2532 break;
2533
2534 case 91: /* type_and_rdata: T_MR sp rdata_unknown */
2535 #line 607 "zparser.y"
2536 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2537 #line 2538 "zparser.c"
2538 break;
2539
2540 case 93: /* type_and_rdata: T_WKS sp rdata_unknown */
2541 #line 610 "zparser.y"
2542 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2543 #line 2544 "zparser.c"
2544 break;
2545
2546 case 95: /* type_and_rdata: T_PTR sp rdata_unknown */
2547 #line 612 "zparser.y"
2548 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2549 #line 2550 "zparser.c"
2550 break;
2551
2552 case 97: /* type_and_rdata: T_HINFO sp rdata_unknown */
2553 #line 614 "zparser.y"
2554 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2555 #line 2556 "zparser.c"
2556 break;
2557
2558 case 99: /* type_and_rdata: T_MINFO sp rdata_unknown */
2559 #line 616 "zparser.y"
2560 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2561 #line 2562 "zparser.c"
2562 break;
2563
2564 case 101: /* type_and_rdata: T_MX sp rdata_unknown */
2565 #line 618 "zparser.y"
2566 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2567 #line 2568 "zparser.c"
2568 break;
2569
2570 case 103: /* type_and_rdata: T_TXT sp rdata_unknown */
2571 #line 620 "zparser.y"
2572 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2573 #line 2574 "zparser.c"
2574 break;
2575
2576 case 105: /* type_and_rdata: T_SPF sp rdata_unknown */
2577 #line 622 "zparser.y"
2578 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2579 #line 2580 "zparser.c"
2580 break;
2581
2582 case 107: /* type_and_rdata: T_AVC sp rdata_unknown */
2583 #line 624 "zparser.y"
2584 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2585 #line 2586 "zparser.c"
2586 break;
2587
2588 case 109: /* type_and_rdata: T_RP sp rdata_unknown */
2589 #line 626 "zparser.y"
2590 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2591 #line 2592 "zparser.c"
2592 break;
2593
2594 case 111: /* type_and_rdata: T_AFSDB sp rdata_unknown */
2595 #line 628 "zparser.y"
2596 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2597 #line 2598 "zparser.c"
2598 break;
2599
2600 case 113: /* type_and_rdata: T_X25 sp rdata_unknown */
2601 #line 630 "zparser.y"
2602 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2603 #line 2604 "zparser.c"
2604 break;
2605
2606 case 115: /* type_and_rdata: T_ISDN sp rdata_unknown */
2607 #line 632 "zparser.y"
2608 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2609 #line 2610 "zparser.c"
2610 break;
2611
2612 case 117: /* type_and_rdata: T_IPSECKEY sp rdata_unknown */
2613 #line 634 "zparser.y"
2614 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2615 #line 2616 "zparser.c"
2616 break;
2617
2618 case 119: /* type_and_rdata: T_DHCID sp rdata_unknown */
2619 #line 636 "zparser.y"
2620 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2621 #line 2622 "zparser.c"
2622 break;
2623
2624 case 121: /* type_and_rdata: T_RT sp rdata_unknown */
2625 #line 638 "zparser.y"
2626 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2627 #line 2628 "zparser.c"
2628 break;
2629
2630 case 123: /* type_and_rdata: T_NSAP sp rdata_unknown */
2631 #line 640 "zparser.y"
2632 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2633 #line 2634 "zparser.c"
2634 break;
2635
2636 case 125: /* type_and_rdata: T_SIG sp rdata_unknown */
2637 #line 642 "zparser.y"
2638 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2639 #line 2640 "zparser.c"
2640 break;
2641
2642 case 127: /* type_and_rdata: T_KEY sp rdata_unknown */
2643 #line 644 "zparser.y"
2644 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2645 #line 2646 "zparser.c"
2646 break;
2647
2648 case 129: /* type_and_rdata: T_PX sp rdata_unknown */
2649 #line 646 "zparser.y"
2650 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2651 #line 2652 "zparser.c"
2652 break;
2653
2654 case 131: /* type_and_rdata: T_AAAA sp rdata_unknown */
2655 #line 648 "zparser.y"
2656 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2657 #line 2658 "zparser.c"
2658 break;
2659
2660 case 133: /* type_and_rdata: T_LOC sp rdata_unknown */
2661 #line 650 "zparser.y"
2662 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2663 #line 2664 "zparser.c"
2664 break;
2665
2666 case 135: /* type_and_rdata: T_NXT sp rdata_unknown */
2667 #line 652 "zparser.y"
2668 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2669 #line 2670 "zparser.c"
2670 break;
2671
2672 case 137: /* type_and_rdata: T_SRV sp rdata_unknown */
2673 #line 654 "zparser.y"
2674 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2675 #line 2676 "zparser.c"
2676 break;
2677
2678 case 139: /* type_and_rdata: T_NAPTR sp rdata_unknown */
2679 #line 656 "zparser.y"
2680 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2681 #line 2682 "zparser.c"
2682 break;
2683
2684 case 141: /* type_and_rdata: T_KX sp rdata_unknown */
2685 #line 658 "zparser.y"
2686 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2687 #line 2688 "zparser.c"
2688 break;
2689
2690 case 143: /* type_and_rdata: T_CERT sp rdata_unknown */
2691 #line 660 "zparser.y"
2692 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2693 #line 2694 "zparser.c"
2694 break;
2695
2696 case 145: /* type_and_rdata: T_DNAME sp rdata_unknown */
2697 #line 662 "zparser.y"
2698 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2699 #line 2700 "zparser.c"
2700 break;
2701
2702 case 148: /* type_and_rdata: T_APL sp rdata_unknown */
2703 #line 665 "zparser.y"
2704 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2705 #line 2706 "zparser.c"
2706 break;
2707
2708 case 150: /* type_and_rdata: T_DS sp rdata_unknown */
2709 #line 667 "zparser.y"
2710 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2711 #line 2712 "zparser.c"
2712 break;
2713
2714 case 151: /* type_and_rdata: T_DLV sp rdata_dlv */
2715 #line 668 "zparser.y"
2716 { if (dlv_warn) { dlv_warn = 0; zc_warning_prev_line("DLV is experimental"); } }
2717 #line 2718 "zparser.c"
2718 break;
2719
2720 case 152: /* type_and_rdata: T_DLV sp rdata_unknown */
2721 #line 669 "zparser.y"
2722 { if (dlv_warn) { dlv_warn = 0; zc_warning_prev_line("DLV is experimental"); } (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2723 #line 2724 "zparser.c"
2724 break;
2725
2726 case 154: /* type_and_rdata: T_SSHFP sp rdata_unknown */
2727 #line 671 "zparser.y"
2728 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); check_sshfp(); }
2729 #line 2730 "zparser.c"
2730 break;
2731
2732 case 156: /* type_and_rdata: T_RRSIG sp rdata_unknown */
2733 #line 673 "zparser.y"
2734 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2735 #line 2736 "zparser.c"
2736 break;
2737
2738 case 158: /* type_and_rdata: T_NSEC sp rdata_unknown */
2739 #line 675 "zparser.y"
2740 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2741 #line 2742 "zparser.c"
2742 break;
2743
2744 case 160: /* type_and_rdata: T_NSEC3 sp rdata_unknown */
2745 #line 677 "zparser.y"
2746 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2747 #line 2748 "zparser.c"
2748 break;
2749
2750 case 162: /* type_and_rdata: T_NSEC3PARAM sp rdata_unknown */
2751 #line 679 "zparser.y"
2752 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2753 #line 2754 "zparser.c"
2754 break;
2755
2756 case 164: /* type_and_rdata: T_DNSKEY sp rdata_unknown */
2757 #line 681 "zparser.y"
2758 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2759 #line 2760 "zparser.c"
2760 break;
2761
2762 case 166: /* type_and_rdata: T_TLSA sp rdata_unknown */
2763 #line 683 "zparser.y"
2764 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2765 #line 2766 "zparser.c"
2766 break;
2767
2768 case 168: /* type_and_rdata: T_SMIMEA sp rdata_unknown */
2769 #line 685 "zparser.y"
2770 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2771 #line 2772 "zparser.c"
2772 break;
2773
2774 case 170: /* type_and_rdata: T_NID sp rdata_unknown */
2775 #line 687 "zparser.y"
2776 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2777 #line 2778 "zparser.c"
2778 break;
2779
2780 case 172: /* type_and_rdata: T_L32 sp rdata_unknown */
2781 #line 689 "zparser.y"
2782 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2783 #line 2784 "zparser.c"
2784 break;
2785
2786 case 174: /* type_and_rdata: T_L64 sp rdata_unknown */
2787 #line 691 "zparser.y"
2788 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2789 #line 2790 "zparser.c"
2790 break;
2791
2792 case 176: /* type_and_rdata: T_LP sp rdata_unknown */
2793 #line 693 "zparser.y"
2794 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2795 #line 2796 "zparser.c"
2796 break;
2797
2798 case 178: /* type_and_rdata: T_EUI48 sp rdata_unknown */
2799 #line 695 "zparser.y"
2800 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2801 #line 2802 "zparser.c"
2802 break;
2803
2804 case 180: /* type_and_rdata: T_EUI64 sp rdata_unknown */
2805 #line 697 "zparser.y"
2806 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2807 #line 2808 "zparser.c"
2808 break;
2809
2810 case 182: /* type_and_rdata: T_CAA sp rdata_unknown */
2811 #line 699 "zparser.y"
2812 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2813 #line 2814 "zparser.c"
2814 break;
2815
2816 case 184: /* type_and_rdata: T_CDS sp rdata_unknown */
2817 #line 701 "zparser.y"
2818 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2819 #line 2820 "zparser.c"
2820 break;
2821
2822 case 186: /* type_and_rdata: T_CDNSKEY sp rdata_unknown */
2823 #line 703 "zparser.y"
2824 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2825 #line 2826 "zparser.c"
2826 break;
2827
2828 case 188: /* type_and_rdata: T_OPENPGPKEY sp rdata_unknown */
2829 #line 705 "zparser.y"
2830 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2831 #line 2832 "zparser.c"
2832 break;
2833
2834 case 190: /* type_and_rdata: T_CSYNC sp rdata_unknown */
2835 #line 707 "zparser.y"
2836 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2837 #line 2838 "zparser.c"
2838 break;
2839
2840 case 192: /* type_and_rdata: T_ZONEMD sp rdata_unknown */
2841 #line 709 "zparser.y"
2842 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2843 #line 2844 "zparser.c"
2844 break;
2845
2846 case 194: /* type_and_rdata: T_SVCB sp rdata_unknown */
2847 #line 711 "zparser.y"
2848 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2849 #line 2850 "zparser.c"
2850 break;
2851
2852 case 196: /* type_and_rdata: T_HTTPS sp rdata_unknown */
2853 #line 713 "zparser.y"
2854 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2855 #line 2856 "zparser.c"
2856 break;
2857
2858 case 198: /* type_and_rdata: T_URI sp rdata_unknown */
2859 #line 715 "zparser.y"
2860 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2861 #line 2862 "zparser.c"
2862 break;
2863
2864 case 199: /* type_and_rdata: T_UTYPE sp rdata_unknown */
2865 #line 716 "zparser.y"
2866 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2867 #line 2868 "zparser.c"
2868 break;
2869
2870 case 200: /* type_and_rdata: str error NL */
2871 #line 718 "zparser.y"
2872 {
2873 zc_error_prev_line("unrecognized RR type '%s'", (yyvsp[-2].data).str);
2874 }
2875 #line 2876 "zparser.c"
2876 break;
2877
2878 case 201: /* rdata_a: dotted_str trail */
2879 #line 730 "zparser.y"
2880 {
2881 zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-1].data).str));
2882 }
2883 #line 2884 "zparser.c"
2884 break;
2885
2886 case 202: /* rdata_domain_name: dname trail */
2887 #line 736 "zparser.y"
2888 {
2889 /* convert a single dname record */
2890 zadd_rdata_domain((yyvsp[-1].domain));
2891 }
2892 #line 2893 "zparser.c"
2893 break;
2894
2895 case 203: /* rdata_soa: dname sp dname sp str sp str sp str sp str sp str trail */
2896 #line 743 "zparser.y"
2897 {
2898 /* convert the soa data */
2899 zadd_rdata_domain((yyvsp[-13].domain)); /* prim. ns */
2900 zadd_rdata_domain((yyvsp[-11].domain)); /* email */
2901 zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-9].data).str)); /* serial */
2902 zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-7].data).str)); /* refresh */
2903 zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-5].data).str)); /* retry */
2904 zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-3].data).str)); /* expire */
2905 zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-1].data).str)); /* minimum */
2906 }
2907 #line 2908 "zparser.c"
2908 break;
2909
2910 case 204: /* rdata_wks: dotted_str sp str sp concatenated_str_seq trail */
2911 #line 756 "zparser.y"
2912 {
2913 zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-5].data).str)); /* address */
2914 zadd_rdata_wireformat(zparser_conv_services(parser->region, (yyvsp[-3].data).str, (yyvsp[-1].data).str)); /* protocol and services */
2915 }
2916 #line 2917 "zparser.c"
2917 break;
2918
2919 case 205: /* rdata_hinfo: str sp str trail */
2920 #line 763 "zparser.y"
2921 {
2922 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* CPU */
2923 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* OS*/
2924 }
2925 #line 2926 "zparser.c"
2926 break;
2927
2928 case 206: /* rdata_minfo: dname sp dname trail */
2929 #line 770 "zparser.y"
2930 {
2931 /* convert a single dname record */
2932 zadd_rdata_domain((yyvsp[-3].domain));
2933 zadd_rdata_domain((yyvsp[-1].domain));
2934 }
2935 #line 2936 "zparser.c"
2936 break;
2937
2938 case 207: /* rdata_mx: str sp dname trail */
2939 #line 778 "zparser.y"
2940 {
2941 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* priority */
2942 zadd_rdata_domain((yyvsp[-1].domain)); /* MX host */
2943 }
2944 #line 2945 "zparser.c"
2945 break;
2946
2947 case 208: /* rdata_txt: str_seq trail */
2948 #line 785 "zparser.y"
2949 {
2950 zadd_rdata_txt_clean_wireformat();
2951 }
2952 #line 2953 "zparser.c"
2953 break;
2954
2955 case 209: /* rdata_rp: dname sp dname trail */
2956 #line 792 "zparser.y"
2957 {
2958 zadd_rdata_domain((yyvsp[-3].domain)); /* mbox d-name */
2959 zadd_rdata_domain((yyvsp[-1].domain)); /* txt d-name */
2960 }
2961 #line 2962 "zparser.c"
2962 break;
2963
2964 case 210: /* rdata_afsdb: str sp dname trail */
2965 #line 800 "zparser.y"
2966 {
2967 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* subtype */
2968 zadd_rdata_domain((yyvsp[-1].domain)); /* domain name */
2969 }
2970 #line 2971 "zparser.c"
2971 break;
2972
2973 case 211: /* rdata_x25: str trail */
2974 #line 808 "zparser.y"
2975 {
2976 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* X.25 address. */
2977 }
2978 #line 2979 "zparser.c"
2979 break;
2980
2981 case 212: /* rdata_isdn: str trail */
2982 #line 815 "zparser.y"
2983 {
2984 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* address */
2985 }
2986 #line 2987 "zparser.c"
2987 break;
2988
2989 case 213: /* rdata_isdn: str sp str trail */
2990 #line 819 "zparser.y"
2991 {
2992 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* address */
2993 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* sub-address */
2994 }
2995 #line 2996 "zparser.c"
2996 break;
2997
2998 case 214: /* rdata_rt: str sp dname trail */
2999 #line 827 "zparser.y"
3000 {
3001 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3002 zadd_rdata_domain((yyvsp[-1].domain)); /* intermediate host */
3003 }
3004 #line 3005 "zparser.c"
3005 break;
3006
3007 case 215: /* rdata_nsap: str_dot_seq trail */
3008 #line 835 "zparser.y"
3009 {
3010 /* String must start with "0x" or "0X". */
3011 if (strncasecmp((yyvsp[-1].data).str, "0x", 2) != 0) {
3012 zc_error_prev_line("NSAP rdata must start with '0x'");
3013 } else {
3014 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str + 2, (yyvsp[-1].data).len - 2)); /* NSAP */
3015 }
3016 }
3017 #line 3018 "zparser.c"
3018 break;
3019
3020 case 216: /* rdata_px: str sp dname sp dname trail */
3021 #line 847 "zparser.y"
3022 {
3023 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* preference */
3024 zadd_rdata_domain((yyvsp[-3].domain)); /* MAP822 */
3025 zadd_rdata_domain((yyvsp[-1].domain)); /* MAPX400 */
3026 }
3027 #line 3028 "zparser.c"
3028 break;
3029
3030 case 217: /* rdata_aaaa: dotted_str trail */
3031 #line 855 "zparser.y"
3032 {
3033 zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, (yyvsp[-1].data).str)); /* IPv6 address */
3034 }
3035 #line 3036 "zparser.c"
3036 break;
3037
3038 case 218: /* rdata_loc: concatenated_str_seq trail */
3039 #line 861 "zparser.y"
3040 {
3041 zadd_rdata_wireformat(zparser_conv_loc(parser->region, (yyvsp[-1].data).str)); /* Location */
3042 }
3043 #line 3044 "zparser.c"
3044 break;
3045
3046 case 219: /* rdata_nxt: dname sp nxt_seq trail */
3047 #line 867 "zparser.y"
3048 {
3049 zadd_rdata_domain((yyvsp[-3].domain)); /* nxt name */
3050 zadd_rdata_wireformat(zparser_conv_nxt(parser->region, nxtbits)); /* nxt bitlist */
3051 memset(nxtbits, 0, sizeof(nxtbits));
3052 }
3053 #line 3054 "zparser.c"
3054 break;
3055
3056 case 220: /* rdata_srv: str sp str sp str sp dname trail */
3057 #line 875 "zparser.y"
3058 {
3059 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* prio */
3060 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* weight */
3061 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* port */
3062 zadd_rdata_domain((yyvsp[-1].domain)); /* target name */
3063 }
3064 #line 3065 "zparser.c"
3065 break;
3066
3067 case 221: /* rdata_naptr: str sp str sp str sp str sp str sp dname trail */
3068 #line 885 "zparser.y"
3069 {
3070 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-11].data).str)); /* order */
3071 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-9].data).str)); /* preference */
3072 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-7].data).str, (yyvsp[-7].data).len)); /* flags */
3073 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-5].data).str, (yyvsp[-5].data).len)); /* service */
3074 zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* regexp */
3075 zadd_rdata_domain((yyvsp[-1].domain)); /* target name */
3076 }
3077 #line 3078 "zparser.c"
3078 break;
3079
3080 case 222: /* rdata_kx: str sp dname trail */
3081 #line 897 "zparser.y"
3082 {
3083 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3084 zadd_rdata_domain((yyvsp[-1].domain)); /* exchanger */
3085 }
3086 #line 3087 "zparser.c"
3087 break;
3088
3089 case 223: /* rdata_cert: str sp str sp str sp str_sp_seq trail */
3090 #line 905 "zparser.y"
3091 {
3092 zadd_rdata_wireformat(zparser_conv_certificate_type(parser->region, (yyvsp[-7].data).str)); /* type */
3093 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* key tag */
3094 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-3].data).str)); /* algorithm */
3095 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* certificate or CRL */
3096 }
3097 #line 3098 "zparser.c"
3098 break;
3099
3100 case 225: /* rdata_apl_seq: dotted_str */
3101 #line 918 "zparser.y"
3102 {
3103 zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, (yyvsp[0].data).str));
3104 }
3105 #line 3106 "zparser.c"
3106 break;
3107
3108 case 226: /* rdata_apl_seq: rdata_apl_seq sp dotted_str */
3109 #line 922 "zparser.y"
3110 {
3111 zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, (yyvsp[0].data).str));
3112 }
3113 #line 3114 "zparser.c"
3114 break;
3115
3116 case 227: /* rdata_ds: str sp str sp str sp str_sp_seq trail */
3117 #line 928 "zparser.y"
3118 {
3119 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* keytag */
3120 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-5].data).str)); /* alg */
3121 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* type */
3122 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3123 }
3124 #line 3125 "zparser.c"
3125 break;
3126
3127 case 228: /* rdata_dlv: str sp str sp str sp str_sp_seq trail */
3128 #line 937 "zparser.y"
3129 {
3130 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* keytag */
3131 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-5].data).str)); /* alg */
3132 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* type */
3133 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3134 }
3135 #line 3136 "zparser.c"
3136 break;
3137
3138 case 229: /* rdata_sshfp: str sp str sp str_sp_seq trail */
3139 #line 946 "zparser.y"
3140 {
3141 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* alg */
3142 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* fp type */
3143 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3144 check_sshfp();
3145 }
3146 #line 3147 "zparser.c"
3147 break;
3148
3149 case 230: /* rdata_dhcid: str_sp_seq trail */
3150 #line 955 "zparser.y"
3151 {
3152 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* data blob */
3153 }
3154 #line 3155 "zparser.c"
3155 break;
3156
3157 case 231: /* rdata_rrsig: str sp str sp str sp str sp str sp str sp str sp wire_dname sp str_sp_seq trail */
3158 #line 961 "zparser.y"
3159 {
3160 zadd_rdata_wireformat(zparser_conv_rrtype(parser->region, (yyvsp[-17].data).str)); /* rr covered */
3161 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-15].data).str)); /* alg */
3162 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-13].data).str)); /* # labels */
3163 zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-11].data).str)); /* # orig TTL */
3164 zadd_rdata_wireformat(zparser_conv_time(parser->region, (yyvsp[-9].data).str)); /* sig exp */
3165 zadd_rdata_wireformat(zparser_conv_time(parser->region, (yyvsp[-7].data).str)); /* sig inc */
3166 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* key id */
3167 zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
3168 (const uint8_t*) (yyvsp[-3].data).str,(yyvsp[-3].data).len)); /* sig name */
3169 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* sig data */
3170 }
3171 #line 3172 "zparser.c"
3172 break;
3173
3174 case 232: /* rdata_nsec: wire_dname nsec_seq */
3175 #line 976 "zparser.y"
3176 {
3177 zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
3178 (const uint8_t*) (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* nsec name */
3179 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3180 memset(nsecbits, 0, sizeof(nsecbits));
3181 nsec_highest_rcode = 0;
3182 }
3183 #line 3184 "zparser.c"
3184 break;
3185
3186 case 233: /* rdata_nsec3: str sp str sp str sp str sp str nsec_seq */
3187 #line 986 "zparser.y"
3188 {
3189 #ifdef NSEC3
3190 nsec3_add_params((yyvsp[-9].data).str, (yyvsp[-7].data).str, (yyvsp[-5].data).str, (yyvsp[-3].data).str, (yyvsp[-3].data).len);
3191
3192 zadd_rdata_wireformat(zparser_conv_b32(parser->region, (yyvsp[-1].data).str)); /* next hashed name */
3193 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3194 memset(nsecbits, 0, sizeof(nsecbits));
3195 nsec_highest_rcode = 0;
3196 #else
3197 zc_error_prev_line("nsec3 not supported");
3198 #endif /* NSEC3 */
3199 }
3200 #line 3201 "zparser.c"
3201 break;
3202
3203 case 234: /* rdata_nsec3_param: str sp str sp str sp str trail */
3204 #line 1001 "zparser.y"
3205 {
3206 #ifdef NSEC3
3207 nsec3_add_params((yyvsp[-7].data).str, (yyvsp[-5].data).str, (yyvsp[-3].data).str, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
3208 #else
3209 zc_error_prev_line("nsec3 not supported");
3210 #endif /* NSEC3 */
3211 }
3212 #line 3213 "zparser.c"
3213 break;
3214
3215 case 235: /* rdata_tlsa: str sp str sp str sp str_sp_seq trail */
3216 #line 1011 "zparser.y"
3217 {
3218 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-7].data).str)); /* usage */
3219 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* selector */
3220 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* matching type */
3221 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* ca data */
3222 }
3223 #line 3224 "zparser.c"
3224 break;
3225
3226 case 236: /* rdata_smimea: str sp str sp str sp str_sp_seq trail */
3227 #line 1020 "zparser.y"
3228 {
3229 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-7].data).str)); /* usage */
3230 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* selector */
3231 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* matching type */
3232 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* ca data */
3233 }
3234 #line 3235 "zparser.c"
3235 break;
3236
3237 case 237: /* rdata_dnskey: str sp str sp str sp str_sp_seq trail */
3238 #line 1029 "zparser.y"
3239 {
3240 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* flags */
3241 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* proto */
3242 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-3].data).str)); /* alg */
3243 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* hash */
3244 }
3245 #line 3246 "zparser.c"
3246 break;
3247
3248 case 238: /* rdata_ipsec_base: str sp str sp str sp dotted_str */
3249 #line 1038 "zparser.y"
3250 {
3251 const dname_type* name = 0;
3252 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-6].data).str)); /* precedence */
3253 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-4].data).str)); /* gateway type */
3254 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-2].data).str)); /* algorithm */
3255 switch(atoi((yyvsp[-4].data).str)) {
3256 case IPSECKEY_NOGATEWAY:
3257 zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 0));
3258 break;
3259 case IPSECKEY_IP4:
3260 zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[0].data).str));
3261 break;
3262 case IPSECKEY_IP6:
3263 zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, (yyvsp[0].data).str));
3264 break;
3265 case IPSECKEY_DNAME:
3266 /* convert and insert the dname */
3267 if(strlen((yyvsp[0].data).str) == 0)
3268 zc_error_prev_line("IPSECKEY must specify gateway name");
3269 if(!(name = dname_parse(parser->region, (yyvsp[0].data).str))) {
3270 zc_error_prev_line("IPSECKEY bad gateway dname %s", (yyvsp[0].data).str);
3271 break;
3272 }
3273 if((yyvsp[0].data).str[strlen((yyvsp[0].data).str)-1] != '.') {
3274 if(parser->origin == error_domain) {
3275 zc_error("cannot concatenate origin to domain name, because origin failed to parse");
3276 break;
3277 } else if(name->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN) {
3278 zc_error("ipsec gateway name exceeds %d character limit",
3279 MAXDOMAINLEN);
3280 break;
3281 }
3282 name = dname_concatenate(parser->rr_region, name,
3283 domain_dname(parser->origin));
3284 }
3285 zadd_rdata_wireformat(alloc_rdata_init(parser->region,
3286 dname_name(name), name->name_size));
3287 break;
3288 default:
3289 zc_error_prev_line("unknown IPSECKEY gateway type");
3290 }
3291 }
3292 #line 3293 "zparser.c"
3293 break;
3294
3295 case 239: /* rdata_ipseckey: rdata_ipsec_base sp str_sp_seq trail */
3296 #line 1083 "zparser.y"
3297 {
3298 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* public key */
3299 }
3300 #line 3301 "zparser.c"
3301 break;
3302
3303 case 241: /* rdata_nid: str sp dotted_str trail */
3304 #line 1091 "zparser.y"
3305 {
3306 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3307 zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, (yyvsp[-1].data).str)); /* NodeID */
3308 }
3309 #line 3310 "zparser.c"
3310 break;
3311
3312 case 242: /* rdata_l32: str sp dotted_str trail */
3313 #line 1098 "zparser.y"
3314 {
3315 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3316 zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-1].data).str)); /* Locator32 */
3317 }
3318 #line 3319 "zparser.c"
3319 break;
3320
3321 case 243: /* rdata_l64: str sp dotted_str trail */
3322 #line 1105 "zparser.y"
3323 {
3324 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3325 zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, (yyvsp[-1].data).str)); /* Locator64 */
3326 }
3327 #line 3328 "zparser.c"
3328 break;
3329
3330 case 244: /* rdata_lp: str sp dname trail */
3331 #line 1112 "zparser.y"
3332 {
3333 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3334 zadd_rdata_domain((yyvsp[-1].domain)); /* FQDN */
3335 }
3336 #line 3337 "zparser.c"
3337 break;
3338
3339 case 245: /* rdata_eui48: str trail */
3340 #line 1119 "zparser.y"
3341 {
3342 zadd_rdata_wireformat(zparser_conv_eui(parser->region, (yyvsp[-1].data).str, 48));
3343 }
3344 #line 3345 "zparser.c"
3345 break;
3346
3347 case 246: /* rdata_eui64: str trail */
3348 #line 1125 "zparser.y"
3349 {
3350 zadd_rdata_wireformat(zparser_conv_eui(parser->region, (yyvsp[-1].data).str, 64));
3351 }
3352 #line 3353 "zparser.c"
3353 break;
3354
3355 case 247: /* rdata_uri: str sp str sp dotted_str trail */
3356 #line 1132 "zparser.y"
3357 {
3358 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* priority */
3359 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* weight */
3360 zadd_rdata_wireformat(zparser_conv_long_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* target */
3361 }
3362 #line 3363 "zparser.c"
3363 break;
3364
3365 case 248: /* rdata_caa: str sp str sp dotted_str trail */
3366 #line 1141 "zparser.y"
3367 {
3368 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* Flags */
3369 zadd_rdata_wireformat(zparser_conv_tag(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* Tag */
3370 zadd_rdata_wireformat(zparser_conv_long_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* Value */
3371 }
3372 #line 3373 "zparser.c"
3373 break;
3374
3375 case 249: /* rdata_openpgpkey: str_sp_seq trail */
3376 #line 1150 "zparser.y"
3377 {
3378 zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str));
3379 }
3380 #line 3381 "zparser.c"
3381 break;
3382
3383 case 250: /* rdata_csync: str sp str nsec_seq */
3384 #line 1157 "zparser.y"
3385 {
3386 zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-3].data).str));
3387 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-1].data).str));
3388 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3389 memset(nsecbits, 0, sizeof(nsecbits));
3390 nsec_highest_rcode = 0;
3391 }
3392 #line 3393 "zparser.c"
3393 break;
3394
3395 case 251: /* rdata_zonemd: str sp str sp str sp str_sp_seq trail */
3396 #line 1168 "zparser.y"
3397 {
3398 zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-7].data).str)); /* serial */
3399 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* scheme */
3400 zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* hash algorithm */
3401 zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* digest */
3402 }
3403 #line 3404 "zparser.c"
3404 break;
3405
3406 case 252: /* svcparam: dotted_str QSTR */
3407 #line 1177 "zparser.y"
3408 {
3409 zadd_rdata_wireformat(zparser_conv_svcbparam(
3410 parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len));
3411 }
3412 #line 3413 "zparser.c"
3413 break;
3414
3415 case 253: /* svcparam: dotted_str */
3416 #line 1182 "zparser.y"
3417 {
3418 zadd_rdata_wireformat(zparser_conv_svcbparam(
3419 parser->region, (yyvsp[0].data).str, (yyvsp[0].data).len, NULL, 0));
3420 }
3421 #line 3422 "zparser.c"
3422 break;
3423
3424 case 256: /* rdata_svcb_base: str sp dname */
3425 #line 1192 "zparser.y"
3426 {
3427 /* SvcFieldPriority */
3428 zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-2].data).str));
3429 /* SvcDomainName */
3430 zadd_rdata_domain((yyvsp[0].domain));
3431 }
3432 #line 3433 "zparser.c"
3433 break;
3434
3435 case 257: /* rdata_svcb: rdata_svcb_base sp svcparams trail */
3436 #line 1199 "zparser.y"
3437 {
3438 zadd_rdata_svcb_check_wireformat();
3439 }
3440 #line 3441 "zparser.c"
3441 break;
3442
3443 case 259: /* rdata_unknown: URR sp str sp str_sp_seq trail */
3444 #line 1206 "zparser.y"
3445 {
3446 /* $2 is the number of octets, currently ignored */
3447 (yyval.unknown) = zparser_conv_hex(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
3448
3449 }
3450 #line 3451 "zparser.c"
3451 break;
3452
3453 case 260: /* rdata_unknown: URR sp str trail */
3454 #line 1212 "zparser.y"
3455 {
3456 (yyval.unknown) = zparser_conv_hex(parser->rr_region, "", 0);
3457 }
3458 #line 3459 "zparser.c"
3459 break;
3460
3461 case 261: /* rdata_unknown: URR error NL */
3462 #line 1216 "zparser.y"
3463 {
3464 (yyval.unknown) = zparser_conv_hex(parser->rr_region, "", 0);
3465 }
3466 #line 3467 "zparser.c"
3467 break;
3468
3469
3470 #line 3471 "zparser.c"
3471
3472 default: break;
3473 }
3474 /* User semantic actions sometimes alter yychar, and that requires
3475 that yytoken be updated with the new translation. We take the
3476 approach of translating immediately before every use of yytoken.
3477 One alternative is translating here after every semantic action,
3478 but that translation would be missed if the semantic action invokes
3479 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3480 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3481 incorrect destructor might then be invoked immediately. In the
3482 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3483 to an incorrect destructor call or verbose syntax error message
3484 before the lookahead is translated. */
3485 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3486
3487 YYPOPSTACK (yylen);
3488 yylen = 0;
3489
3490 *++yyvsp = yyval;
3491
3492 /* Now 'shift' the result of the reduction. Determine what state
3493 that goes to, based on the state we popped back to and the rule
3494 number reduced by. */
3495 {
3496 const int yylhs = yyr1[yyn] - YYNTOKENS;
3497 const int yyi = yypgoto[yylhs] + *yyssp;
3498 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3499 ? yytable[yyi]
3500 : yydefgoto[yylhs]);
3501 }
3502
3503 goto yynewstate;
3504
3505
3506 /*--------------------------------------.
3507 | yyerrlab -- here on detecting error. |
3508 `--------------------------------------*/
3509 yyerrlab:
3510 /* Make sure we have latest lookahead translation. See comments at
3511 user semantic actions for why this is necessary. */
3512 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3513 /* If not already recovering from an error, report this error. */
3514 if (!yyerrstatus)
3515 {
3516 ++yynerrs;
3517 yyerror (YY_("syntax error"));
3518 }
3519
3520 if (yyerrstatus == 3)
3521 {
3522 /* If just tried and failed to reuse lookahead token after an
3523 error, discard it. */
3524
3525 if (yychar <= YYEOF)
3526 {
3527 /* Return failure if at end of input. */
3528 if (yychar == YYEOF)
3529 YYABORT;
3530 }
3531 else
3532 {
3533 yydestruct ("Error: discarding",
3534 yytoken, &yylval);
3535 yychar = YYEMPTY;
3536 }
3537 }
3538
3539 /* Else will try to reuse lookahead token after shifting the error
3540 token. */
3541 goto yyerrlab1;
3542
3543
3544 /*---------------------------------------------------.
3545 | yyerrorlab -- error raised explicitly by YYERROR. |
3546 `---------------------------------------------------*/
3547 yyerrorlab:
3548 /* Pacify compilers when the user code never invokes YYERROR and the
3549 label yyerrorlab therefore never appears in user code. */
3550 if (0)
3551 YYERROR;
3552
3553 /* Do not reclaim the symbols of the rule whose action triggered
3554 this YYERROR. */
3555 YYPOPSTACK (yylen);
3556 yylen = 0;
3557 YY_STACK_PRINT (yyss, yyssp);
3558 yystate = *yyssp;
3559 goto yyerrlab1;
3560
3561
3562 /*-------------------------------------------------------------.
3563 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3564 `-------------------------------------------------------------*/
3565 yyerrlab1:
3566 yyerrstatus = 3; /* Each real token shifted decrements this. */
3567
3568 /* Pop stack until we find a state that shifts the error token. */
3569 for (;;)
3570 {
3571 yyn = yypact[yystate];
3572 if (!yypact_value_is_default (yyn))
3573 {
3574 yyn += YYSYMBOL_YYerror;
3575 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
3576 {
3577 yyn = yytable[yyn];
3578 if (0 < yyn)
3579 break;
3580 }
3581 }
3582
3583 /* Pop the current state because it cannot handle the error token. */
3584 if (yyssp == yyss)
3585 YYABORT;
3586
3587
3588 yydestruct ("Error: popping",
3589 YY_ACCESSING_SYMBOL (yystate), yyvsp);
3590 YYPOPSTACK (1);
3591 yystate = *yyssp;
3592 YY_STACK_PRINT (yyss, yyssp);
3593 }
3594
3595 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3596 *++yyvsp = yylval;
3597 YY_IGNORE_MAYBE_UNINITIALIZED_END
3598
3599
3600 /* Shift the error token. */
3601 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3602
3603 yystate = yyn;
3604 goto yynewstate;
3605
3606
3607 /*-------------------------------------.
3608 | yyacceptlab -- YYACCEPT comes here. |
3609 `-------------------------------------*/
3610 yyacceptlab:
3611 yyresult = 0;
3612 goto yyreturn;
3613
3614
3615 /*-----------------------------------.
3616 | yyabortlab -- YYABORT comes here. |
3617 `-----------------------------------*/
3618 yyabortlab:
3619 yyresult = 1;
3620 goto yyreturn;
3621
3622
3623 #if !defined yyoverflow
3624 /*-------------------------------------------------.
3625 | yyexhaustedlab -- memory exhaustion comes here. |
3626 `-------------------------------------------------*/
3627 yyexhaustedlab:
3628 yyerror (YY_("memory exhausted"));
3629 yyresult = 2;
3630 goto yyreturn;
3631 #endif
3632
3633
3634 /*-------------------------------------------------------.
3635 | yyreturn -- parsing is finished, clean up and return. |
3636 `-------------------------------------------------------*/
3637 yyreturn:
3638 if (yychar != YYEMPTY)
3639 {
3640 /* Make sure we have latest lookahead translation. See comments at
3641 user semantic actions for why this is necessary. */
3642 yytoken = YYTRANSLATE (yychar);
3643 yydestruct ("Cleanup: discarding lookahead",
3644 yytoken, &yylval);
3645 }
3646 /* Do not reclaim the symbols of the rule whose action triggered
3647 this YYABORT or YYACCEPT. */
3648 YYPOPSTACK (yylen);
3649 YY_STACK_PRINT (yyss, yyssp);
3650 while (yyssp != yyss)
3651 {
3652 yydestruct ("Cleanup: popping",
3653 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
3654 YYPOPSTACK (1);
3655 }
3656 #ifndef yyoverflow
3657 if (yyss != yyssa)
3658 YYSTACK_FREE (yyss);
3659 #endif
3660
3661 return yyresult;
3662 }
3663
3664 #line 1220 "zparser.y"
3665
3666
3667 int
yywrap(void)3668 yywrap(void)
3669 {
3670 return 1;
3671 }
3672
3673 /*
3674 * Create the parser.
3675 */
3676 zparser_type *
zparser_create(region_type * region,region_type * rr_region,namedb_type * db)3677 zparser_create(region_type *region, region_type *rr_region, namedb_type *db)
3678 {
3679 zparser_type *result;
3680
3681 result = (zparser_type *) region_alloc(region, sizeof(zparser_type));
3682 result->region = region;
3683 result->rr_region = rr_region;
3684 result->db = db;
3685
3686 result->filename = NULL;
3687 result->current_zone = NULL;
3688 result->origin = NULL;
3689 result->prev_dname = NULL;
3690
3691 result->temporary_rdatas = (rdata_atom_type *) region_alloc_array(
3692 result->region, MAXRDATALEN, sizeof(rdata_atom_type));
3693
3694 return result;
3695 }
3696
3697 /*
3698 * Initialize the parser for a new zone file.
3699 */
3700 void
zparser_init(const char * filename,uint32_t ttl,uint16_t klass,const dname_type * origin)3701 zparser_init(const char *filename, uint32_t ttl, uint16_t klass,
3702 const dname_type *origin)
3703 {
3704 memset(nxtbits, 0, sizeof(nxtbits));
3705 memset(nsecbits, 0, sizeof(nsecbits));
3706 nsec_highest_rcode = 0;
3707
3708 parser->default_ttl = ttl;
3709 parser->default_class = klass;
3710 parser->current_zone = NULL;
3711 parser->origin = domain_table_insert(parser->db->domains, origin);
3712 parser->prev_dname = parser->origin;
3713 parser->error_occurred = 0;
3714 parser->errors = 0;
3715 parser->line = 1;
3716 parser->filename = filename;
3717 parser->current_rr.rdata_count = 0;
3718 parser->current_rr.rdatas = parser->temporary_rdatas;
3719 }
3720
3721 void
yyerror(const char * message)3722 yyerror(const char *message)
3723 {
3724 zc_error("%s", message);
3725 }
3726
3727 static void
error_va_list(unsigned line,const char * fmt,va_list args)3728 error_va_list(unsigned line, const char *fmt, va_list args)
3729 {
3730 if (parser->filename) {
3731 char message[MAXSYSLOGMSGLEN];
3732 vsnprintf(message, sizeof(message), fmt, args);
3733 log_msg(LOG_ERR, "%s:%u: %s", parser->filename, line, message);
3734 }
3735 else log_vmsg(LOG_ERR, fmt, args);
3736
3737 ++parser->errors;
3738 parser->error_occurred = 1;
3739 }
3740
3741 /* the line counting sux, to say the least
3742 * with this grose hack we try do give sane
3743 * numbers back */
3744 void
zc_error_prev_line(const char * fmt,...)3745 zc_error_prev_line(const char *fmt, ...)
3746 {
3747 va_list args;
3748 va_start(args, fmt);
3749 error_va_list(parser->line - 1, fmt, args);
3750 va_end(args);
3751 }
3752
3753 void
zc_error(const char * fmt,...)3754 zc_error(const char *fmt, ...)
3755 {
3756 /* send an error message to stderr */
3757 va_list args;
3758 va_start(args, fmt);
3759 error_va_list(parser->line, fmt, args);
3760 va_end(args);
3761 }
3762
3763 static void
warning_va_list(unsigned line,const char * fmt,va_list args)3764 warning_va_list(unsigned line, const char *fmt, va_list args)
3765 {
3766 if (parser->filename) {
3767 char m[MAXSYSLOGMSGLEN];
3768 vsnprintf(m, sizeof(m), fmt, args);
3769 log_msg(LOG_WARNING, "%s:%u: %s", parser->filename, line, m);
3770 }
3771 else log_vmsg(LOG_WARNING, fmt, args);
3772 }
3773
3774 void
zc_warning_prev_line(const char * fmt,...)3775 zc_warning_prev_line(const char *fmt, ...)
3776 {
3777 va_list args;
3778 va_start(args, fmt);
3779 warning_va_list(parser->line - 1, fmt, args);
3780 va_end(args);
3781 }
3782
3783 void
zc_warning(const char * fmt,...)3784 zc_warning(const char *fmt, ... )
3785 {
3786 va_list args;
3787 va_start(args, fmt);
3788 warning_va_list(parser->line, fmt, args);
3789 va_end(args);
3790 }
3791
3792 #ifdef NSEC3
3793 static void
nsec3_add_params(const char * hashalgo_str,const char * flag_str,const char * iter_str,const char * salt_str,int salt_len)3794 nsec3_add_params(const char* hashalgo_str, const char* flag_str,
3795 const char* iter_str, const char* salt_str, int salt_len)
3796 {
3797 zadd_rdata_wireformat(zparser_conv_byte(parser->region, hashalgo_str));
3798 zadd_rdata_wireformat(zparser_conv_byte(parser->region, flag_str));
3799 zadd_rdata_wireformat(zparser_conv_short(parser->region, iter_str));
3800
3801 /* salt */
3802 if(strcmp(salt_str, "-") != 0)
3803 zadd_rdata_wireformat(zparser_conv_hex_length(parser->region,
3804 salt_str, salt_len));
3805 else
3806 zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 1));
3807 }
3808 #endif /* NSEC3 */
3809