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 * 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 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 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 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 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 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 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 3668 yywrap(void) 3669 { 3670 return 1; 3671 } 3672 3673 /* 3674 * Create the parser. 3675 */ 3676 zparser_type * 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 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 3722 yyerror(const char *message) 3723 { 3724 zc_error("%s", message); 3725 } 3726 3727 static void 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 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 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 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 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 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 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