Bug Summary

File:src/usr.sbin/nsd/obj/zparser.c
Warning:line 1366, column 13
Attempt to free released memory

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name zparser.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/usr.sbin/nsd/obj -resource-dir /usr/local/lib/clang/13.0.0 -I . -I /usr/src/usr.sbin/nsd -internal-isystem /usr/local/lib/clang/13.0.0/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/usr.sbin/nsd/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/vmm/scan-build/2022-01-12-194120-40624-1 -x c zparser.c
1#include <stdlib.h>
2#include <string.h>
3#define YYBYACC1 1
4#define YYMAJOR1 1
5#define YYMINOR9 9
6#define YYLEXyylex() yylex()
7#define YYEMPTY-1 -1
8#define yyclearin(yychar=(-1)) (yychar=(YYEMPTY-1))
9#define yyerrok(yyerrflag=0) (yyerrflag=0)
10#define YYRECOVERING()(yyerrflag!=0) (yyerrflag!=0)
11#define YYPREFIX"yy" "yy"
12#line 2 "/usr/src/usr.sbin/nsd/zparser.y"
13/*
14 * zyparser.y -- yacc grammar for (DNS) zone files
15 *
16 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
17 *
18 * See LICENSE for the license.
19 *
20 */
21
22#include "config.h"
23
24#include <stdarg.h>
25#include <stdio.h>
26#include <string.h>
27
28#include "dname.h"
29#include "namedb.h"
30#include "zonec.h"
31
32/* these need to be global, otherwise they cannot be used inside yacc */
33zparser_type *parser;
34
35#ifdef __cplusplus
36extern "C"
37#endif /* __cplusplus */
38int yywrap(void);
39
40/* this hold the nxt bits */
41static uint8_t nxtbits[16];
42static int dlv_warn = 1;
43
44/* 256 windows of 256 bits (32 bytes) */
45/* still need to reset the bastard somewhere */
46static uint8_t nsecbits[NSEC_WINDOW_COUNT256][NSEC_WINDOW_BITS_SIZE(256 / 8)];
47
48/* hold the highest rcode seen in a NSEC rdata , BUG #106 */
49uint16_t nsec_highest_rcode;
50
51void yyerror(const char *message);
52
53#ifdef NSEC3
54/* parse nsec3 parameters and add the (first) rdata elements */
55static void
56nsec3_add_params(const char* hash_algo_str, const char* flag_str,
57 const char* iter_str, const char* salt_str, int salt_len);
58#endif /* NSEC3 */
59
60#line 50 "/usr/src/usr.sbin/nsd/zparser.y"
61#ifndef YYSTYPE_DEFINED
62#define YYSTYPE_DEFINED
63typedef union {
64 domain_type *domain;
65 const dname_type *dname;
66 struct lex_data data;
67 uint32_t ttl;
68 uint16_t klass;
69 uint16_t type;
70 uint16_t *unknown;
71} YYSTYPE;
72#endif /* YYSTYPE_DEFINED */
73#line 74 "zparser.c"
74#define T_A257 257
75#define T_NS258 258
76#define T_MX259 259
77#define T_TXT260 260
78#define T_CNAME261 261
79#define T_AAAA262 262
80#define T_PTR263 263
81#define T_NXT264 264
82#define T_KEY265 265
83#define T_SOA266 266
84#define T_SIG267 267
85#define T_SRV268 268
86#define T_CERT269 269
87#define T_LOC270 270
88#define T_MD271 271
89#define T_MF272 272
90#define T_MB273 273
91#define T_MG274 274
92#define T_MR275 275
93#define T_NULL276 276
94#define T_WKS277 277
95#define T_HINFO278 278
96#define T_MINFO279 279
97#define T_RP280 280
98#define T_AFSDB281 281
99#define T_X25282 282
100#define T_ISDN283 283
101#define T_RT284 284
102#define T_NSAP285 285
103#define T_NSAP_PTR286 286
104#define T_PX287 287
105#define T_GPOS288 288
106#define T_EID289 289
107#define T_NIMLOC290 290
108#define T_ATMA291 291
109#define T_NAPTR292 292
110#define T_KX293 293
111#define T_A6294 294
112#define T_DNAME295 295
113#define T_SINK296 296
114#define T_OPT297 297
115#define T_APL298 298
116#define T_UINFO299 299
117#define T_UID300 300
118#define T_GID301 301
119#define T_UNSPEC302 302
120#define T_TKEY303 303
121#define T_TSIG304 304
122#define T_IXFR305 305
123#define T_AXFR306 306
124#define T_MAILB307 307
125#define T_MAILA308 308
126#define T_DS309 309
127#define T_DLV310 310
128#define T_SSHFP311 311
129#define T_RRSIG312 312
130#define T_NSEC313 313
131#define T_DNSKEY314 314
132#define T_SPF315 315
133#define T_NSEC3316 316
134#define T_IPSECKEY317 317
135#define T_DHCID318 318
136#define T_NSEC3PARAM319 319
137#define T_TLSA320 320
138#define T_URI321 321
139#define T_NID322 322
140#define T_L32323 323
141#define T_L64324 324
142#define T_LP325 325
143#define T_EUI48326 326
144#define T_EUI64327 327
145#define T_CAA328 328
146#define T_CDS329 329
147#define T_CDNSKEY330 330
148#define T_OPENPGPKEY331 331
149#define T_CSYNC332 332
150#define T_ZONEMD333 333
151#define T_AVC334 334
152#define T_SMIMEA335 335
153#define T_SVCB336 336
154#define T_HTTPS337 337
155#define DOLLAR_TTL338 338
156#define DOLLAR_ORIGIN339 339
157#define NL340 340
158#define SP341 341
159#define QSTR342 342
160#define STR343 343
161#define PREV344 344
162#define BITLAB345 345
163#define T_TTL346 346
164#define T_RRCLASS347 347
165#define URR348 348
166#define T_UTYPE349 349
167#define YYERRCODE256 256
168const short yylhs[] =
169 { -1,
170 0, 0, 22, 22, 22, 22, 22, 22, 22, 23,
171 23, 11, 11, 27, 27, 24, 25, 25, 26, 2,
172 2, 28, 28, 28, 28, 28, 3, 3, 4, 4,
173 4, 6, 6, 5, 5, 7, 7, 8, 8, 8,
174 10, 9, 9, 29, 29, 29, 29, 29, 29, 29,
175 29, 12, 12, 12, 12, 19, 19, 20, 20, 20,
176 30, 30, 13, 13, 14, 14, 15, 15, 15, 15,
177 16, 16, 1, 1, 1, 1, 1, 1, 1, 1,
178 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
179 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
180 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
181 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
184 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
186 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
187 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
188 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
189 1, 1, 1, 1, 1, 1, 1, 1, 1, 31,
190 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
191 42, 42, 45, 46, 49, 50, 51, 52, 53, 54,
192 55, 56, 57, 78, 78, 58, 59, 60, 44, 47,
193 61, 62, 63, 64, 65, 48, 79, 43, 43, 66,
194 67, 68, 69, 70, 71, 77, 72, 73, 74, 75,
195 17, 17, 18, 18, 80, 76, 76, 21, 21, 21,
196};
197const short yylen[] =
198 { 2,
199 0, 2, 1, 2, 2, 1, 1, 1, 2, 1,
200 2, 1, 1, 1, 2, 4, 4, 4, 3, 2,
201 1, 0, 2, 2, 4, 4, 1, 1, 1, 1,
202 2, 1, 1, 1, 3, 1, 1, 1, 1, 2,
203 1, 1, 3, 1, 1, 2, 2, 3, 3, 3,
204 4, 1, 1, 3, 3, 1, 3, 2, 1, 2,
205 1, 2, 1, 3, 1, 3, 1, 1, 2, 3,
206 1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
207 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
208 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
209 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
210 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
211 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
212 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
213 3, 3, 3, 3, 2, 3, 3, 3, 3, 3,
214 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
215 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
216 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
217 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
218 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
219 2, 14, 6, 4, 4, 4, 2, 4, 4, 2,
220 2, 4, 4, 2, 6, 2, 2, 4, 8, 12,
221 4, 8, 2, 1, 3, 8, 8, 6, 2, 18,
222 2, 10, 8, 8, 8, 8, 7, 4, 2, 4,
223 4, 4, 4, 2, 2, 6, 6, 2, 4, 8,
224 2, 1, 1, 3, 3, 4, 2, 6, 4, 3,
225};
226const short yydefred[] =
227 { 1,
228 0, 0, 0, 0, 3, 10, 13, 12, 0, 33,
229 29, 30, 0, 0, 27, 0, 34, 32, 2, 0,
230 6, 7, 8, 9, 0, 0, 5, 0, 0, 0,
231 0, 0, 4, 11, 0, 0, 0, 0, 0, 0,
232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 19, 0, 35, 14, 0, 16, 17, 18,
239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 145, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
245 0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
246 72, 67, 0, 68, 0, 0, 74, 73, 0, 76,
247 75, 0, 100, 99, 0, 0, 102, 0, 101, 82,
248 81, 0, 130, 129, 94, 93, 0, 134, 133, 0,
249 126, 125, 0, 84, 83, 0, 124, 123, 0, 136,
250 135, 0, 142, 141, 53, 52, 0, 132, 131, 78,
251 77, 80, 79, 86, 85, 88, 87, 90, 89, 0,
252 92, 91, 0, 96, 95, 0, 98, 97, 0, 108,
253 107, 0, 110, 109, 0, 112, 111, 0, 114, 113,
254 0, 120, 119, 65, 0, 122, 121, 0, 128, 127,
255 0, 138, 137, 0, 140, 139, 144, 143, 224, 147,
256 146, 0, 0, 149, 148, 0, 151, 150, 0, 153,
257 152, 155, 154, 38, 39, 0, 36, 0, 42, 41,
258 157, 156, 163, 162, 104, 103, 0, 159, 158, 0,
259 116, 115, 0, 63, 0, 118, 117, 0, 161, 160,
260 0, 165, 164, 0, 197, 196, 0, 169, 168, 0,
261 171, 170, 0, 173, 172, 0, 175, 174, 0, 177,
262 176, 0, 179, 178, 0, 181, 180, 183, 182, 185,
263 184, 0, 187, 186, 0, 189, 188, 0, 191, 190,
264 106, 105, 0, 167, 166, 0, 193, 192, 0, 195,
265 194, 198, 199, 0, 0, 0, 200, 201, 0, 0,
266 0, 0, 207, 216, 0, 0, 0, 0, 0, 0,
267 0, 0, 217, 0, 0, 0, 0, 0, 210, 0,
268 211, 0, 0, 214, 0, 0, 0, 0, 223, 0,
269 0, 0, 61, 0, 231, 0, 0, 0, 0, 239,
270 0, 229, 0, 0, 0, 0, 0, 0, 0, 244,
271 245, 0, 248, 0, 0, 0, 0, 0, 257, 260,
272 0, 70, 0, 0, 0, 0, 56, 0, 0, 0,
273 0, 0, 0, 55, 54, 0, 0, 0, 0, 0,
274 0, 0, 66, 0, 0, 0, 225, 0, 0, 0,
275 59, 0, 0, 62, 43, 0, 0, 0, 64, 0,
276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
277 255, 0, 253, 0, 0, 259, 206, 0, 0, 218,
278 0, 0, 0, 0, 0, 0, 204, 205, 208, 209,
279 212, 213, 0, 0, 221, 0, 0, 0, 58, 60,
280 0, 0, 238, 0, 0, 0, 240, 241, 242, 243,
281 0, 249, 0, 0, 251, 0, 256, 0, 57, 0,
282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0, 254, 258,
284 0, 0, 0, 0, 0, 203, 215, 0, 0, 0,
285 228, 0, 0, 0, 0, 246, 247, 0, 0, 0,
286 0, 0, 0, 0, 0, 0, 0, 0, 237, 0,
287 0, 0, 0, 236, 0, 0, 219, 222, 0, 226,
288 227, 0, 233, 234, 250, 235, 0, 0, 0, 0,
289 0, 0, 0, 232, 0, 0, 0, 0, 0, 220,
290 0, 0, 202, 0, 0, 0, 0, 230,
291};
292const short yydgoto[] =
293 { 1,
294 103, 13, 189, 15, 16, 17, 296, 297, 298, 299,
295 18, 227, 315, 265, 185, 492, 493, 494, 448, 474,
296 187, 19, 107, 21, 22, 23, 108, 30, 198, 415,
297 188, 191, 215, 242, 245, 248, 194, 199, 251, 254,
298 257, 260, 312, 317, 263, 267, 218, 212, 270, 204,
299 229, 209, 221, 273, 276, 224, 281, 285, 288, 291,
300 302, 309, 320, 323, 365, 329, 332, 335, 338, 341,
301 344, 347, 354, 357, 360, 368, 326, 282, 313, 369,
302};
303const short yysindex[] =
304 { 0,
305 164, -326, -330, -330, 0, 0, 0, 0, -320, 0,
306 0, 0, -309, -330, 0, -23, 0, 0, 0, -208,
307 0, 0, 0, 0, -212, 101, 0, -330, -330, 1239,
308 -237, -223, 0, 0, -204, -204, -36, -332, -329, -330,
309 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
310 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
311 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
312 -330, -204, -330, -330, -330, -330, -330, -330, -330, -330,
313 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
314 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
315 -330, -330, 0, -150, 0, 0, -192, 0, 0, 0,
316 -330, -330, 82, -45, -312, 130, -45, 82, -45, -45,
317 -312, -45, -312, -312, -312, 149, -45, -45, -45, -45,
318 -45, 82, -312, -45, -45, -312, -312, -312, -312, -312,
319 -312, -312, -312, -45, 117, 0, -312, -312, -312, -312,
320 71, -312, 130, -312, -312, -312, -312, -312, -312, -312,
321 -312, -312, -312, -312, -312, -312, -312, -312, -312, -312,
322 -312, 130, -312, -312, -312, -236, -222, 0, -237, -237,
323 0, 0, -238, 0, 77, -204, 0, 0, -204, 0,
324 0, -330, 0, 0, -42, 77, 0, -185, 0, 0,
325 0, -204, 0, 0, 0, 0, -330, 0, 0, -330,
326 0, 0, -330, 0, 0, -330, 0, 0, -330, 0,
327 0, -330, 0, 0, 0, 0, -30, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0, 0, -330,
329 0, 0, -330, 0, 0, -330, 0, 0, -330, 0,
330 0, -330, 0, 0, -204, 0, 0, -204, 0, 0,
331 -330, 0, 0, 0, -25, 0, 0, -330, 0, 0,
332 -330, 0, 0, -330, 0, 0, 0, 0, 0, 0,
333 0, -204, -330, 0, 0, -330, 0, 0, -330, 0,
334 0, 0, 0, 0, 0, -179, 0, 79, 0, 0,
335 0, 0, 0, 0, 0, 0, -330, 0, 0, -330,
336 0, 0, -204, 0, -204, 0, 0, -330, 0, 0,
337 -330, 0, 0, -330, 0, 0, -330, 0, 0, -330,
338 0, 0, -330, 0, 0, -330, 0, 0, -204, 0,
339 0, -204, 0, 0, -330, 0, 0, 0, 0, 0,
340 0, -204, 0, 0, -330, 0, 0, -330, 0, 0,
341 0, 0, -330, 0, 0, -330, 0, 0, -204, 0,
342 0, 0, 0, -213, -212, -202, 0, 0, 101, 77,
343 -42, 158, 0, 0, -212, -212, 101, -212, -212, -212,
344 -168, -308, 0, -212, -212, 101, 101, 101, 0, -308,
345 0, 101, -168, 0, 101, -212, 101, 170, 0, -212,
346 -212, -212, 0, -227, 0, -168, -212, -212, -308, 0,
347 -308, 0, -212, -212, -212, 181, 181, 181, 101, 0,
348 0, -212, 0, -212, -212, -212, 101, 170, 0, 0,
349 -204, 0, -204, 77, -42, 77, 0, -204, -330, -330,
350 -330, -330, -330, 0, 0, -330, -204, -204, -204, -204,
351 -204, -204, 0, -330, -330, -204, 0, -330, -330, -330,
352 0, -227, -179, 0, 0, -330, -330, -204, 0, -330,
353 -330, -330, -204, -204, -204, -204, -330, -179, -330, -330,
354 0, -199, 0, -204, -308, 0, 0, 77, -308, 0,
355 -212, -212, -212, -212, -212, 184, 0, 0, 0, 0,
356 0, 0, 101, -212, 0, -212, -212, -212, 0, 0,
357 -212, -212, 0, -212, -212, 181, 0, 0, 0, 0,
358 181, 0, -212, -212, 0, 170, 0, -204, 0, -330,
359 -330, -330, -330, -330, -30, -204, -330, -330, -330, -204,
360 -330, -330, -330, -330, -204, -204, -330, -330, 0, 0,
361 -212, -212, -212, 101, -212, 0, 0, -212, -212, -212,
362 0, -212, 181, -212, -212, 0, 0, -212, -212, -204,
363 -330, -330, -204, -204, -330, -204, -204, -330, 0, -204,
364 -204, -204, -204, 0, -212, -212, 0, 0, -212, 0,
365 0, -212, 0, 0, 0, 0, -330, -330, -330, -179,
366 -212, -212, 101, 0, -330, -330, -204, -212, -212, 0,
367 -204, -330, 0, 153, -330, -212, -204, 0,};
368const short yyrindex[] =
369 { 0,
370 0, 0, 0, 0, 0, 0, 0, 0, 423, 0,
371 0, 0, 1332, 0, 0, -160, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
373 1146, -133, 0, 0, 0, 0, 0, 1425, 1518, 0,
374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0, 1611, 1704,
388 0, 0, 0, 0, -182, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, -172, -169, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, -127, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 63, 0, 0, 0, -163,
408 -157, 0, 0, 0, 0, 0, 0, 0, 0, 0,
409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411 0, 0, 0, 0, 0, -121, 0, 0, 0, 0,
412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
414 0, 0, 0, -152, -148, -140, 0, 0, 0, 0,
415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
419 0, -109, 0, 0, 0, 0, 0, -118, 0, 0,
420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
432 0, 0, 0, 0, 0, 0, 0, 0,};
433const short yygindex[] =
434 { 0,
435 0, 0, 4, 120, 140, 154, -428, 0, 0, -218,
436 504, -303, -143, 0, -8, -11, -331, 0, 0, -261,
437 701, 0, -1, 0, 0, 0, 775, 0, 0, -466,
438 0, 23, 0, 0, 0, 0, 0, -147, 0, 0,
439 0, 0, 0, 0, 0, 0, 75, -144, 0, 0,
440 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 58, 0, 0, 0, 0,
443};
444#define YYTABLESIZE2053 2053
445const short yytable[] =
446 { 20,
447 11, 25, 26, 184, 14, 306, 520, 304, 34, 32,
448 6, 34, 31, 24, 111, 391, 112, 374, 12, 27,
449 403, 532, 32, 351, 362, 352, 38, 39, 34, 7,
450 8, 178, 34, 7, 8, 183, 28, 29, 113, 114,
451 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
452 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
453 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
454 145, 147, 148, 149, 150, 151, 152, 153, 154, 155,
455 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
456 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
457 176, 186, 6, 34, 34, 177, 202, 196, 69, 179,
458 180, 183, 471, 472, 7, 8, 294, 373, 7, 8,
459 240, 10, 376, 207, 416, 213, 440, 184, 34, 7,
460 8, 33, 34, 279, 295, 106, 6, 246, 249, 201,
461 442, 206, 535, 614, 196, 36, 11, 178, 34, 231,
462 233, 235, 237, 239, 106, 6, 381, 71, 71, 71,
463 413, 414, 184, 196, 12, 37, 278, 45, 45, 45,
464 44, 44, 44, 7, 8, 184, 46, 46, 46, 28,
465 28, 375, 47, 47, 47, 105, 380, 48, 48, 48,
466 379, 50, 50, 50, 225, 625, 382, 475, 294, 49,
467 49, 49, 545, 184, 559, 385, 31, 31, 386, 11,
468 519, 387, 37, 37, 388, 184, 295, 389, 40, 40,
469 390, 51, 51, 51, 293, 392, 184, 12, 349, 225,
470 252, 252, 371, 0, 0, 0, 0, 0, 394, 0,
471 0, 395, 0, 0, 396, 0, 0, 397, 0, 0,
472 398, 0, 0, 0, 0, 0, 400, 0, 0, 402,
473 0, 0, 0, 0, 0, 0, 405, 0, 0, 406,
474 0, 0, 407, 0, 0, 478, 0, 0, 0, 0,
475 408, 410, 0, 0, 411, 0, 0, 412, 0, 0,
476 0, 0, 0, 0, 0, 34, 7, 8, 0, 10,
477 182, 0, 183, 106, 6, 417, 0, 0, 418, 106,
478 6, 419, 0, 421, 106, 6, 423, 0, 0, 424,
479 0, 0, 425, 0, 0, 426, 0, 0, 427, 0,
480 0, 428, 0, 0, 429, 0, 0, 0, 0, 0,
481 0, 0, 0, 432, 0, 0, 0, 0, 0, 0,
482 421, 538, 0, 434, 0, 0, 435, 0, 0, 0,
483 0, 436, 0, 0, 437, 0, 0, 438, 0, 0,
484 0, 0, 444, 446, 550, 0, 0, 0, 0, 0,
485 0, 0, 443, 0, 0, 0, 0, 0, 0, 0,
486 450, 0, 0, 0, 0, 0, 467, 0, 0, 458,
487 459, 460, 69, 69, 69, 462, 0, 0, 464, 0,
488 466, 34, 7, 8, 483, 484, 485, 580, 183, 2,
489 0, 584, 34, 181, 182, 586, 587, 0, 0, 183,
490 0, 591, 486, 0, 592, 593, 498, 0, 0, 495,
491 491, 34, 7, 8, 0, 10, 499, 501, 502, 503,
492 504, 505, 0, 0, 506, 0, 178, 34, 181, 182,
493 0, 0, 513, 514, 183, 0, 516, 517, 518, 0,
494 34, 195, 182, 0, 521, 522, 421, 183, 524, 525,
495 526, 0, 627, 0, 0, 531, 0, 533, 534, 34,
496 7, 8, 536, 34, 7, 8, 183, 178, 34, 445,
497 182, 3, 4, 5, 6, 7, 8, 9, 10, 178,
498 34, 181, 182, 0, 555, 0, 546, 0, 0, 556,
499 0, 34, 181, 182, 34, 7, 8, 0, 35, 0,
500 0, 0, 0, 104, 0, 0, 421, 0, 561, 562,
501 563, 564, 565, 392, 0, 568, 569, 570, 421, 572,
502 573, 574, 575, 0, 0, 578, 579, 0, 0, 0,
503 0, 589, 0, 0, 0, 0, 0, 583, 0, 0,
504 0, 0, 0, 0, 0, 0, 0, 0, 421, 595,
505 596, 0, 421, 599, 421, 421, 602, 0, 0, 421,
506 421, 421, 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 611, 612, 613, 0, 0,
508 0, 0, 0, 618, 619, 0, 617, 0, 192, 0,
509 624, 0, 0, 626, 210, 421, 216, 219, 222, 226,
510 0, 0, 0, 0, 0, 0, 243, 0, 0, 252,
511 255, 258, 261, 264, 268, 271, 274, 0, 0, 0,
512 283, 286, 289, 216, 300, 210, 0, 307, 310, 314,
513 318, 321, 324, 327, 330, 333, 336, 339, 342, 345,
514 283, 210, 314, 355, 358, 0, 363, 366, 366, 21,
515 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
516 21, 21, 21, 21, 21, 21, 21, 21, 0, 21,
517 21, 21, 21, 21, 21, 21, 21, 21, 0, 21,
518 0, 0, 0, 0, 21, 21, 0, 21, 0, 0,
519 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
520 0, 21, 21, 21, 21, 21, 21, 21, 21, 21,
521 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
522 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
523 0, 0, 0, 0, 21, 21, 0, 0, 21, 21,
524 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
528 109, 110, 0, 0, 190, 193, 197, 200, 203, 205,
529 208, 211, 214, 217, 220, 223, 228, 230, 232, 234,
530 236, 238, 241, 244, 247, 250, 253, 256, 259, 262,
531 266, 269, 272, 275, 277, 280, 146, 284, 287, 290,
532 292, 301, 303, 305, 308, 311, 316, 319, 322, 325,
533 328, 331, 334, 337, 340, 343, 346, 348, 350, 353,
534 356, 359, 361, 364, 367, 370, 372, 0, 441, 0,
535 0, 0, 0, 0, 0, 0, 0, 0, 447, 449,
536 0, 451, 452, 453, 454, 455, 0, 456, 457, 0,
537 0, 0, 0, 461, 0, 0, 463, 0, 0, 465,
538 0, 0, 0, 468, 469, 470, 0, 473, 0, 300,
539 476, 477, 314, 0, 479, 0, 480, 481, 482, 0,
540 0, 0, 0, 0, 0, 487, 0, 488, 489, 490,
541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543 377, 0, 0, 378, 0, 0, 0, 0, 0, 0,
544 0, 0, 383, 0, 0, 473, 384, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546 0, 0, 0, 0, 0, 0, 0, 0, 314, 0,
547 0, 393, 539, 0, 540, 541, 542, 543, 544, 226,
548 0, 0, 0, 0, 0, 0, 0, 547, 0, 548,
549 549, 314, 0, 0, 551, 552, 0, 553, 554, 399,
550 0, 0, 401, 0, 0, 0, 557, 558, 0, 404,
551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 0, 0, 0, 0, 409, 0, 0, 0,
553 0, 0, 0, 0, 314, 581, 582, 0, 314, 0,
554 0, 585, 314, 314, 0, 588, 0, 590, 314, 0,
555 0, 314, 314, 0, 0, 0, 0, 420, 0, 422,
556 0, 0, 0, 0, 0, 0, 0, 0, 607, 608,
557 0, 0, 609, 0, 0, 610, 0, 0, 0, 0,
558 0, 0, 0, 430, 615, 616, 431, 0, 0, 0,
559 0, 621, 622, 0, 0, 0, 433, 300, 0, 314,
560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 439, 0, 0, 0, 0, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 496, 0, 497, 0, 0,
569 0, 0, 500, 0, 0, 0, 0, 0, 0, 0,
570 0, 507, 508, 509, 510, 511, 512, 0, 0, 0,
571 515, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 523, 0, 0, 0, 0, 527, 528, 529,
573 530, 0, 0, 0, 0, 0, 0, 0, 537, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 0, 0, 560, 0, 0, 0, 0, 0, 0, 566,
579 567, 0, 0, 0, 571, 0, 0, 0, 0, 576,
580 577, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 594, 0, 0, 597, 598, 0,
583 600, 601, 0, 0, 603, 604, 605, 606, 0, 0,
584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
586 0, 620, 0, 0, 0, 623, 0, 0, 0, 0,
587 0, 628, 20, 20, 20, 20, 20, 20, 20, 20,
588 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
589 20, 0, 20, 20, 20, 20, 20, 20, 20, 20,
590 20, 0, 20, 0, 0, 0, 0, 20, 20, 0,
591 20, 0, 0, 20, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 20, 20, 20, 20, 20, 20,
593 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
594 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
595 20, 20, 20, 0, 0, 0, 0, 20, 20, 0,
596 0, 20, 20, 0, 20, 40, 41, 42, 43, 44,
597 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
598 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
599 64, 65, 66, 67, 0, 68, 0, 0, 0, 0,
600 69, 70, 0, 71, 0, 0, 72, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 73, 74, 75,
602 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
603 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
604 96, 97, 98, 99, 100, 101, 0, 0, 0, 0,
605 7, 8, 0, 0, 0, 0, 0, 102, 22, 22,
606 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
607 22, 22, 22, 22, 22, 22, 22, 0, 22, 22,
608 22, 22, 22, 22, 22, 22, 22, 0, 22, 0,
609 0, 0, 0, 22, 22, 0, 22, 0, 0, 22,
610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
612 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
613 22, 22, 22, 22, 22, 22, 22, 22, 22, 0,
614 0, 0, 0, 22, 22, 0, 0, 0, 0, 0,
615 22, 24, 24, 24, 24, 24, 24, 24, 24, 24,
616 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
617 0, 24, 24, 24, 24, 24, 24, 24, 24, 24,
618 0, 24, 0, 0, 0, 0, 24, 24, 0, 24,
619 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
620 0, 0, 0, 24, 24, 24, 24, 24, 24, 24,
621 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
622 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
623 24, 24, 0, 0, 0, 0, 24, 24, 0, 0,
624 0, 0, 0, 24, 23, 23, 23, 23, 23, 23,
625 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
626 23, 23, 23, 0, 23, 23, 23, 23, 23, 23,
627 23, 23, 23, 0, 23, 0, 0, 0, 0, 23,
628 23, 0, 23, 0, 0, 23, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 23, 23, 23, 23,
630 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
631 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
632 23, 23, 23, 23, 23, 0, 0, 0, 0, 23,
633 23, 0, 0, 0, 0, 0, 23, 25, 25, 25,
634 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
635 25, 25, 25, 25, 25, 25, 0, 25, 25, 25,
636 25, 25, 25, 25, 25, 25, 0, 25, 0, 0,
637 0, 0, 25, 25, 0, 25, 0, 0, 25, 0,
638 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
639 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
640 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
641 25, 25, 25, 25, 25, 25, 25, 25, 0, 0,
642 0, 0, 25, 25, 0, 0, 0, 0, 0, 25,
643 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
644 26, 26, 26, 26, 26, 26, 26, 26, 26, 0,
645 26, 26, 26, 26, 26, 26, 26, 26, 26, 0,
646 26, 0, 0, 0, 0, 26, 26, 0, 26, 0,
647 0, 26, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 26, 26, 26, 26, 26, 26, 26, 26,
649 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
650 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
651 26, 0, 0, 0, 0, 26, 26, 0, 0, 0,
652 0, 0, 26,
653};
654const short yycheck[] =
655 { 1,
656 46, 3, 4, 46, 1, 153, 473, 152, 341, 46,
657 341, 341, 14, 340, 347, 46, 346, 256, 64, 340,
658 46, 488, 46, 168, 172, 169, 28, 29, 341, 342,
659 343, 340, 341, 342, 343, 348, 346, 347, 40, 41,
660 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
661 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
662 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
663 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
664 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
665 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
666 102, 113, 341, 341, 341, 256, 118, 116, 46, 111,
667 112, 348, 340, 341, 342, 343, 46, 340, 342, 343,
668 132, 345, 46, 120, 46, 122, 340, 46, 341, 342,
669 343, 340, 341, 145, 64, 340, 341, 134, 135, 117,
670 343, 119, 342, 610, 153, 26, 46, 340, 341, 127,
671 128, 129, 130, 131, 340, 341, 342, 340, 341, 342,
672 340, 341, 46, 172, 64, 26, 144, 340, 341, 342,
673 340, 341, 342, 342, 343, 46, 340, 341, 342, 340,
674 341, 183, 340, 341, 342, 32, 195, 340, 341, 342,
675 192, 340, 341, 342, 46, 624, 198, 416, 46, 340,
676 341, 342, 506, 46, 536, 207, 340, 341, 210, 46,
677 472, 213, 340, 341, 216, 46, 64, 219, 340, 341,
678 222, 340, 341, 342, 150, 227, 46, 64, 167, 46,
679 340, 341, 175, -1, -1, -1, -1, -1, 240, -1,
680 -1, 243, -1, -1, 246, -1, -1, 249, -1, -1,
681 252, -1, -1, -1, -1, -1, 258, -1, -1, 261,
682 -1, -1, -1, -1, -1, -1, 268, -1, -1, 271,
683 -1, -1, 274, -1, -1, 419, -1, -1, -1, -1,
684 282, 283, -1, -1, 286, -1, -1, 289, -1, -1,
685 -1, -1, -1, -1, -1, 341, 342, 343, -1, 345,
686 343, -1, 348, 340, 341, 307, -1, -1, 310, 340,
687 341, 313, -1, 315, 340, 341, 318, -1, -1, 321,
688 -1, -1, 324, -1, -1, 327, -1, -1, 330, -1,
689 -1, 333, -1, -1, 336, -1, -1, -1, -1, -1,
690 -1, -1, -1, 345, -1, -1, -1, -1, -1, -1,
691 352, 495, -1, 355, -1, -1, 358, -1, -1, -1,
692 -1, 363, -1, -1, 366, -1, -1, 369, -1, -1,
693 -1, -1, 381, 382, 518, -1, -1, -1, -1, -1,
694 -1, -1, 379, -1, -1, -1, -1, -1, -1, -1,
695 387, -1, -1, -1, -1, -1, 408, -1, -1, 396,
696 397, 398, 340, 341, 342, 402, -1, -1, 405, -1,
697 407, 341, 342, 343, 426, 427, 428, 561, 348, 256,
698 -1, 565, 341, 342, 343, 569, 570, -1, -1, 348,
699 -1, 575, 429, -1, 578, 579, 445, -1, -1, 441,
700 437, 341, 342, 343, -1, 345, 448, 449, 450, 451,
701 452, 453, -1, -1, 456, -1, 340, 341, 342, 343,
702 -1, -1, 464, 465, 348, -1, 468, 469, 470, -1,
703 341, 342, 343, -1, 476, 477, 478, 348, 480, 481,
704 482, -1, 626, -1, -1, 487, -1, 489, 490, 341,
705 342, 343, 494, 341, 342, 343, 348, 340, 341, 342,
706 343, 338, 339, 340, 341, 342, 343, 344, 345, 340,
707 341, 342, 343, -1, 526, -1, 513, -1, -1, 531,
708 -1, 341, 342, 343, 341, 342, 343, -1, 25, -1,
709 -1, -1, -1, 30, -1, -1, 538, -1, 540, 541,
710 542, 543, 544, 545, -1, 547, 548, 549, 550, 551,
711 552, 553, 554, -1, -1, 557, 558, -1, -1, -1,
712 -1, 573, -1, -1, -1, -1, -1, 564, -1, -1,
713 -1, -1, -1, -1, -1, -1, -1, -1, 580, 581,
714 582, -1, 584, 585, 586, 587, 588, -1, -1, 591,
715 592, 593, -1, -1, -1, -1, -1, -1, -1, -1,
716 -1, -1, -1, -1, -1, 607, 608, 609, -1, -1,
717 -1, -1, -1, 615, 616, -1, 613, -1, 115, -1,
718 622, -1, -1, 625, 121, 627, 123, 124, 125, 126,
719 -1, -1, -1, -1, -1, -1, 133, -1, -1, 136,
720 137, 138, 139, 140, 141, 142, 143, -1, -1, -1,
721 147, 148, 149, 150, 151, 152, -1, 154, 155, 156,
722 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
723 167, 168, 169, 170, 171, -1, 173, 174, 175, 257,
724 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
725 268, 269, 270, 271, 272, 273, 274, 275, -1, 277,
726 278, 279, 280, 281, 282, 283, 284, 285, -1, 287,
727 -1, -1, -1, -1, 292, 293, -1, 295, -1, -1,
728 298, -1, -1, -1, -1, -1, -1, -1, -1, -1,
729 -1, 309, 310, 311, 312, 313, 314, 315, 316, 317,
730 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
731 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
732 -1, -1, -1, -1, 342, 343, -1, -1, 346, 347,
733 -1, 349, -1, -1, -1, -1, -1, -1, -1, -1,
734 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
737 36, 37, -1, -1, 114, 115, 116, 117, 118, 119,
738 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
739 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
740 140, 141, 142, 143, 144, 145, 72, 147, 148, 149,
741 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
742 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
743 170, 171, 172, 173, 174, 175, 176, -1, 375, -1,
744 -1, -1, -1, -1, -1, -1, -1, -1, 385, 386,
745 -1, 388, 389, 390, 391, 392, -1, 394, 395, -1,
746 -1, -1, -1, 400, -1, -1, 403, -1, -1, 406,
747 -1, -1, -1, 410, 411, 412, -1, 414, -1, 416,
748 417, 418, 419, -1, 421, -1, 423, 424, 425, -1,
749 -1, -1, -1, -1, -1, 432, -1, 434, 435, 436,
750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
751 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
752 186, -1, -1, 189, -1, -1, -1, -1, -1, -1,
753 -1, -1, 198, -1, -1, 472, 202, -1, -1, -1,
754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
755 -1, -1, -1, -1, -1, -1, -1, -1, 495, -1,
756 -1, 227, 499, -1, 501, 502, 503, 504, 505, 506,
757 -1, -1, -1, -1, -1, -1, -1, 514, -1, 516,
758 517, 518, -1, -1, 521, 522, -1, 524, 525, 255,
759 -1, -1, 258, -1, -1, -1, 533, 534, -1, 265,
760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
761 -1, -1, -1, -1, -1, -1, 282, -1, -1, -1,
762 -1, -1, -1, -1, 561, 562, 563, -1, 565, -1,
763 -1, 568, 569, 570, -1, 572, -1, 574, 575, -1,
764 -1, 578, 579, -1, -1, -1, -1, 313, -1, 315,
765 -1, -1, -1, -1, -1, -1, -1, -1, 595, 596,
766 -1, -1, 599, -1, -1, 602, -1, -1, -1, -1,
767 -1, -1, -1, 339, 611, 612, 342, -1, -1, -1,
768 -1, 618, 619, -1, -1, -1, 352, 624, -1, 626,
769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
770 -1, -1, -1, 369, -1, -1, -1, -1, -1, -1,
771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
777 -1, -1, -1, -1, -1, 441, -1, 443, -1, -1,
778 -1, -1, 448, -1, -1, -1, -1, -1, -1, -1,
779 -1, 457, 458, 459, 460, 461, 462, -1, -1, -1,
780 466, -1, -1, -1, -1, -1, -1, -1, -1, -1,
781 -1, -1, 478, -1, -1, -1, -1, 483, 484, 485,
782 486, -1, -1, -1, -1, -1, -1, -1, 494, -1,
783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
787 -1, -1, 538, -1, -1, -1, -1, -1, -1, 545,
788 546, -1, -1, -1, 550, -1, -1, -1, -1, 555,
789 556, -1, -1, -1, -1, -1, -1, -1, -1, -1,
790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
791 -1, -1, -1, -1, 580, -1, -1, 583, 584, -1,
792 586, 587, -1, -1, 590, 591, 592, 593, -1, -1,
793 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
794 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
795 -1, 617, -1, -1, -1, 621, -1, -1, -1, -1,
796 -1, 627, 257, 258, 259, 260, 261, 262, 263, 264,
797 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
798 275, -1, 277, 278, 279, 280, 281, 282, 283, 284,
799 285, -1, 287, -1, -1, -1, -1, 292, 293, -1,
800 295, -1, -1, 298, -1, -1, -1, -1, -1, -1,
801 -1, -1, -1, -1, 309, 310, 311, 312, 313, 314,
802 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
803 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
804 335, 336, 337, -1, -1, -1, -1, 342, 343, -1,
805 -1, 346, 347, -1, 349, 257, 258, 259, 260, 261,
806 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
807 272, 273, 274, 275, -1, 277, 278, 279, 280, 281,
808 282, 283, 284, 285, -1, 287, -1, -1, -1, -1,
809 292, 293, -1, 295, -1, -1, 298, -1, -1, -1,
810 -1, -1, -1, -1, -1, -1, -1, 309, 310, 311,
811 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
812 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
813 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
814 342, 343, -1, -1, -1, -1, -1, 349, 257, 258,
815 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
816 269, 270, 271, 272, 273, 274, 275, -1, 277, 278,
817 279, 280, 281, 282, 283, 284, 285, -1, 287, -1,
818 -1, -1, -1, 292, 293, -1, 295, -1, -1, 298,
819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
820 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
821 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
822 329, 330, 331, 332, 333, 334, 335, 336, 337, -1,
823 -1, -1, -1, 342, 343, -1, -1, -1, -1, -1,
824 349, 257, 258, 259, 260, 261, 262, 263, 264, 265,
825 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
826 -1, 277, 278, 279, 280, 281, 282, 283, 284, 285,
827 -1, 287, -1, -1, -1, -1, 292, 293, -1, 295,
828 -1, -1, 298, -1, -1, -1, -1, -1, -1, -1,
829 -1, -1, -1, 309, 310, 311, 312, 313, 314, 315,
830 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
831 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
832 336, 337, -1, -1, -1, -1, 342, 343, -1, -1,
833 -1, -1, -1, 349, 257, 258, 259, 260, 261, 262,
834 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
835 273, 274, 275, -1, 277, 278, 279, 280, 281, 282,
836 283, 284, 285, -1, 287, -1, -1, -1, -1, 292,
837 293, -1, 295, -1, -1, 298, -1, -1, -1, -1,
838 -1, -1, -1, -1, -1, -1, 309, 310, 311, 312,
839 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
840 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
841 333, 334, 335, 336, 337, -1, -1, -1, -1, 342,
842 343, -1, -1, -1, -1, -1, 349, 257, 258, 259,
843 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
844 270, 271, 272, 273, 274, 275, -1, 277, 278, 279,
845 280, 281, 282, 283, 284, 285, -1, 287, -1, -1,
846 -1, -1, 292, 293, -1, 295, -1, -1, 298, -1,
847 -1, -1, -1, -1, -1, -1, -1, -1, -1, 309,
848 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
849 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
850 330, 331, 332, 333, 334, 335, 336, 337, -1, -1,
851 -1, -1, 342, 343, -1, -1, -1, -1, -1, 349,
852 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
853 267, 268, 269, 270, 271, 272, 273, 274, 275, -1,
854 277, 278, 279, 280, 281, 282, 283, 284, 285, -1,
855 287, -1, -1, -1, -1, 292, 293, -1, 295, -1,
856 -1, 298, -1, -1, -1, -1, -1, -1, -1, -1,
857 -1, -1, 309, 310, 311, 312, 313, 314, 315, 316,
858 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
859 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
860 337, -1, -1, -1, -1, 342, 343, -1, -1, -1,
861 -1, -1, 349,
862};
863#define YYFINAL1 1
864#ifndef YYDEBUG0
865#define YYDEBUG0 0
866#endif
867#define YYMAXTOKEN349 349
868#if YYDEBUG0
869const char * const yyname[] =
870 {
871"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8720,0,0,0,0,0,0,0,0,0,0,0,"'.'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'@'",0,0,0,0,0,
8730,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8740,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8750,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8760,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8770,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"T_A","T_NS","T_MX",
878"T_TXT","T_CNAME","T_AAAA","T_PTR","T_NXT","T_KEY","T_SOA","T_SIG","T_SRV",
879"T_CERT","T_LOC","T_MD","T_MF","T_MB","T_MG","T_MR","T_NULL","T_WKS","T_HINFO",
880"T_MINFO","T_RP","T_AFSDB","T_X25","T_ISDN","T_RT","T_NSAP","T_NSAP_PTR","T_PX",
881"T_GPOS","T_EID","T_NIMLOC","T_ATMA","T_NAPTR","T_KX","T_A6","T_DNAME","T_SINK",
882"T_OPT","T_APL","T_UINFO","T_UID","T_GID","T_UNSPEC","T_TKEY","T_TSIG","T_IXFR",
883"T_AXFR","T_MAILB","T_MAILA","T_DS","T_DLV","T_SSHFP","T_RRSIG","T_NSEC",
884"T_DNSKEY","T_SPF","T_NSEC3","T_IPSECKEY","T_DHCID","T_NSEC3PARAM","T_TLSA",
885"T_URI","T_NID","T_L32","T_L64","T_LP","T_EUI48","T_EUI64","T_CAA","T_CDS",
886"T_CDNSKEY","T_OPENPGPKEY","T_CSYNC","T_ZONEMD","T_AVC","T_SMIMEA","T_SVCB",
887"T_HTTPS","DOLLAR_TTL","DOLLAR_ORIGIN","NL","SP","QSTR","STR","PREV","BITLAB",
888"T_TTL","T_RRCLASS","URR","T_UTYPE",
889};
890const char * const yyrule[] =
891 {"$accept : lines",
892"lines :",
893"lines : lines line",
894"line : NL",
895"line : sp NL",
896"line : PREV NL",
897"line : ttl_directive",
898"line : origin_directive",
899"line : rr",
900"line : error NL",
901"sp : SP",
902"sp : sp SP",
903"str : STR",
904"str : QSTR",
905"trail : NL",
906"trail : sp NL",
907"ttl_directive : DOLLAR_TTL sp str trail",
908"origin_directive : DOLLAR_ORIGIN sp abs_dname trail",
909"origin_directive : DOLLAR_ORIGIN sp rel_dname trail",
910"rr : owner classttl type_and_rdata",
911"owner : dname sp",
912"owner : PREV",
913"classttl :",
914"classttl : T_RRCLASS sp",
915"classttl : T_TTL sp",
916"classttl : T_TTL sp T_RRCLASS sp",
917"classttl : T_RRCLASS sp T_TTL sp",
918"dname : abs_dname",
919"dname : rel_dname",
920"abs_dname : '.'",
921"abs_dname : '@'",
922"abs_dname : rel_dname '.'",
923"label : str",
924"label : BITLAB",
925"rel_dname : label",
926"rel_dname : rel_dname '.' label",
927"wire_dname : wire_abs_dname",
928"wire_dname : wire_rel_dname",
929"wire_abs_dname : '.'",
930"wire_abs_dname : '@'",
931"wire_abs_dname : wire_rel_dname '.'",
932"wire_label : str",
933"wire_rel_dname : wire_label",
934"wire_rel_dname : wire_rel_dname '.' wire_label",
935"str_seq : unquoted_dotted_str",
936"str_seq : QSTR",
937"str_seq : QSTR unquoted_dotted_str",
938"str_seq : str_seq QSTR",
939"str_seq : str_seq QSTR unquoted_dotted_str",
940"str_seq : str_seq sp unquoted_dotted_str",
941"str_seq : str_seq sp QSTR",
942"str_seq : str_seq sp QSTR unquoted_dotted_str",
943"concatenated_str_seq : str",
944"concatenated_str_seq : '.'",
945"concatenated_str_seq : concatenated_str_seq sp str",
946"concatenated_str_seq : concatenated_str_seq '.' str",
947"nxt_seq : str",
948"nxt_seq : nxt_seq sp str",
949"nsec_more : SP nsec_more",
950"nsec_more : NL",
951"nsec_more : str nsec_seq",
952"nsec_seq : NL",
953"nsec_seq : SP nsec_more",
954"str_sp_seq : str",
955"str_sp_seq : str_sp_seq sp str",
956"str_dot_seq : str",
957"str_dot_seq : str_dot_seq '.' str",
958"unquoted_dotted_str : STR",
959"unquoted_dotted_str : '.'",
960"unquoted_dotted_str : unquoted_dotted_str '.'",
961"unquoted_dotted_str : unquoted_dotted_str '.' STR",
962"dotted_str : unquoted_dotted_str",
963"dotted_str : QSTR",
964"type_and_rdata : T_A sp rdata_a",
965"type_and_rdata : T_A sp rdata_unknown",
966"type_and_rdata : T_NS sp rdata_domain_name",
967"type_and_rdata : T_NS sp rdata_unknown",
968"type_and_rdata : T_MD sp rdata_domain_name",
969"type_and_rdata : T_MD sp rdata_unknown",
970"type_and_rdata : T_MF sp rdata_domain_name",
971"type_and_rdata : T_MF sp rdata_unknown",
972"type_and_rdata : T_CNAME sp rdata_domain_name",
973"type_and_rdata : T_CNAME sp rdata_unknown",
974"type_and_rdata : T_SOA sp rdata_soa",
975"type_and_rdata : T_SOA sp rdata_unknown",
976"type_and_rdata : T_MB sp rdata_domain_name",
977"type_and_rdata : T_MB sp rdata_unknown",
978"type_and_rdata : T_MG sp rdata_domain_name",
979"type_and_rdata : T_MG sp rdata_unknown",
980"type_and_rdata : T_MR sp rdata_domain_name",
981"type_and_rdata : T_MR sp rdata_unknown",
982"type_and_rdata : T_WKS sp rdata_wks",
983"type_and_rdata : T_WKS sp rdata_unknown",
984"type_and_rdata : T_PTR sp rdata_domain_name",
985"type_and_rdata : T_PTR sp rdata_unknown",
986"type_and_rdata : T_HINFO sp rdata_hinfo",
987"type_and_rdata : T_HINFO sp rdata_unknown",
988"type_and_rdata : T_MINFO sp rdata_minfo",
989"type_and_rdata : T_MINFO sp rdata_unknown",
990"type_and_rdata : T_MX sp rdata_mx",
991"type_and_rdata : T_MX sp rdata_unknown",
992"type_and_rdata : T_TXT sp rdata_txt",
993"type_and_rdata : T_TXT sp rdata_unknown",
994"type_and_rdata : T_SPF sp rdata_txt",
995"type_and_rdata : T_SPF sp rdata_unknown",
996"type_and_rdata : T_AVC sp rdata_txt",
997"type_and_rdata : T_AVC sp rdata_unknown",
998"type_and_rdata : T_RP sp rdata_rp",
999"type_and_rdata : T_RP sp rdata_unknown",
1000"type_and_rdata : T_AFSDB sp rdata_afsdb",
1001"type_and_rdata : T_AFSDB sp rdata_unknown",
1002"type_and_rdata : T_X25 sp rdata_x25",
1003"type_and_rdata : T_X25 sp rdata_unknown",
1004"type_and_rdata : T_ISDN sp rdata_isdn",
1005"type_and_rdata : T_ISDN sp rdata_unknown",
1006"type_and_rdata : T_IPSECKEY sp rdata_ipseckey",
1007"type_and_rdata : T_IPSECKEY sp rdata_unknown",
1008"type_and_rdata : T_DHCID sp rdata_dhcid",
1009"type_and_rdata : T_DHCID sp rdata_unknown",
1010"type_and_rdata : T_RT sp rdata_rt",
1011"type_and_rdata : T_RT sp rdata_unknown",
1012"type_and_rdata : T_NSAP sp rdata_nsap",
1013"type_and_rdata : T_NSAP sp rdata_unknown",
1014"type_and_rdata : T_SIG sp rdata_rrsig",
1015"type_and_rdata : T_SIG sp rdata_unknown",
1016"type_and_rdata : T_KEY sp rdata_dnskey",
1017"type_and_rdata : T_KEY sp rdata_unknown",
1018"type_and_rdata : T_PX sp rdata_px",
1019"type_and_rdata : T_PX sp rdata_unknown",
1020"type_and_rdata : T_AAAA sp rdata_aaaa",
1021"type_and_rdata : T_AAAA sp rdata_unknown",
1022"type_and_rdata : T_LOC sp rdata_loc",
1023"type_and_rdata : T_LOC sp rdata_unknown",
1024"type_and_rdata : T_NXT sp rdata_nxt",
1025"type_and_rdata : T_NXT sp rdata_unknown",
1026"type_and_rdata : T_SRV sp rdata_srv",
1027"type_and_rdata : T_SRV sp rdata_unknown",
1028"type_and_rdata : T_NAPTR sp rdata_naptr",
1029"type_and_rdata : T_NAPTR sp rdata_unknown",
1030"type_and_rdata : T_KX sp rdata_kx",
1031"type_and_rdata : T_KX sp rdata_unknown",
1032"type_and_rdata : T_CERT sp rdata_cert",
1033"type_and_rdata : T_CERT sp rdata_unknown",
1034"type_and_rdata : T_DNAME sp rdata_domain_name",
1035"type_and_rdata : T_DNAME sp rdata_unknown",
1036"type_and_rdata : T_APL trail",
1037"type_and_rdata : T_APL sp rdata_apl",
1038"type_and_rdata : T_APL sp rdata_unknown",
1039"type_and_rdata : T_DS sp rdata_ds",
1040"type_and_rdata : T_DS sp rdata_unknown",
1041"type_and_rdata : T_DLV sp rdata_dlv",
1042"type_and_rdata : T_DLV sp rdata_unknown",
1043"type_and_rdata : T_SSHFP sp rdata_sshfp",
1044"type_and_rdata : T_SSHFP sp rdata_unknown",
1045"type_and_rdata : T_RRSIG sp rdata_rrsig",
1046"type_and_rdata : T_RRSIG sp rdata_unknown",
1047"type_and_rdata : T_NSEC sp rdata_nsec",
1048"type_and_rdata : T_NSEC sp rdata_unknown",
1049"type_and_rdata : T_NSEC3 sp rdata_nsec3",
1050"type_and_rdata : T_NSEC3 sp rdata_unknown",
1051"type_and_rdata : T_NSEC3PARAM sp rdata_nsec3_param",
1052"type_and_rdata : T_NSEC3PARAM sp rdata_unknown",
1053"type_and_rdata : T_DNSKEY sp rdata_dnskey",
1054"type_and_rdata : T_DNSKEY sp rdata_unknown",
1055"type_and_rdata : T_TLSA sp rdata_tlsa",
1056"type_and_rdata : T_TLSA sp rdata_unknown",
1057"type_and_rdata : T_SMIMEA sp rdata_smimea",
1058"type_and_rdata : T_SMIMEA sp rdata_unknown",
1059"type_and_rdata : T_NID sp rdata_nid",
1060"type_and_rdata : T_NID sp rdata_unknown",
1061"type_and_rdata : T_L32 sp rdata_l32",
1062"type_and_rdata : T_L32 sp rdata_unknown",
1063"type_and_rdata : T_L64 sp rdata_l64",
1064"type_and_rdata : T_L64 sp rdata_unknown",
1065"type_and_rdata : T_LP sp rdata_lp",
1066"type_and_rdata : T_LP sp rdata_unknown",
1067"type_and_rdata : T_EUI48 sp rdata_eui48",
1068"type_and_rdata : T_EUI48 sp rdata_unknown",
1069"type_and_rdata : T_EUI64 sp rdata_eui64",
1070"type_and_rdata : T_EUI64 sp rdata_unknown",
1071"type_and_rdata : T_CAA sp rdata_caa",
1072"type_and_rdata : T_CAA sp rdata_unknown",
1073"type_and_rdata : T_CDS sp rdata_ds",
1074"type_and_rdata : T_CDS sp rdata_unknown",
1075"type_and_rdata : T_CDNSKEY sp rdata_dnskey",
1076"type_and_rdata : T_CDNSKEY sp rdata_unknown",
1077"type_and_rdata : T_OPENPGPKEY sp rdata_openpgpkey",
1078"type_and_rdata : T_OPENPGPKEY sp rdata_unknown",
1079"type_and_rdata : T_CSYNC sp rdata_csync",
1080"type_and_rdata : T_CSYNC sp rdata_unknown",
1081"type_and_rdata : T_ZONEMD sp rdata_zonemd",
1082"type_and_rdata : T_ZONEMD sp rdata_unknown",
1083"type_and_rdata : T_SVCB sp rdata_svcb",
1084"type_and_rdata : T_SVCB sp rdata_unknown",
1085"type_and_rdata : T_HTTPS sp rdata_svcb",
1086"type_and_rdata : T_HTTPS sp rdata_unknown",
1087"type_and_rdata : T_URI sp rdata_uri",
1088"type_and_rdata : T_URI sp rdata_unknown",
1089"type_and_rdata : T_UTYPE sp rdata_unknown",
1090"type_and_rdata : str error NL",
1091"rdata_a : dotted_str trail",
1092"rdata_domain_name : dname trail",
1093"rdata_soa : dname sp dname sp str sp str sp str sp str sp str trail",
1094"rdata_wks : dotted_str sp str sp concatenated_str_seq trail",
1095"rdata_hinfo : str sp str trail",
1096"rdata_minfo : dname sp dname trail",
1097"rdata_mx : str sp dname trail",
1098"rdata_txt : str_seq trail",
1099"rdata_rp : dname sp dname trail",
1100"rdata_afsdb : str sp dname trail",
1101"rdata_x25 : str trail",
1102"rdata_isdn : str trail",
1103"rdata_isdn : str sp str trail",
1104"rdata_rt : str sp dname trail",
1105"rdata_nsap : str_dot_seq trail",
1106"rdata_px : str sp dname sp dname trail",
1107"rdata_aaaa : dotted_str trail",
1108"rdata_loc : concatenated_str_seq trail",
1109"rdata_nxt : dname sp nxt_seq trail",
1110"rdata_srv : str sp str sp str sp dname trail",
1111"rdata_naptr : str sp str sp str sp str sp str sp dname trail",
1112"rdata_kx : str sp dname trail",
1113"rdata_cert : str sp str sp str sp str_sp_seq trail",
1114"rdata_apl : rdata_apl_seq trail",
1115"rdata_apl_seq : dotted_str",
1116"rdata_apl_seq : rdata_apl_seq sp dotted_str",
1117"rdata_ds : str sp str sp str sp str_sp_seq trail",
1118"rdata_dlv : str sp str sp str sp str_sp_seq trail",
1119"rdata_sshfp : str sp str sp str_sp_seq trail",
1120"rdata_dhcid : str_sp_seq trail",
1121"rdata_rrsig : str sp str sp str sp str sp str sp str sp str sp wire_dname sp str_sp_seq trail",
1122"rdata_nsec : wire_dname nsec_seq",
1123"rdata_nsec3 : str sp str sp str sp str sp str nsec_seq",
1124"rdata_nsec3_param : str sp str sp str sp str trail",
1125"rdata_tlsa : str sp str sp str sp str_sp_seq trail",
1126"rdata_smimea : str sp str sp str sp str_sp_seq trail",
1127"rdata_dnskey : str sp str sp str sp str_sp_seq trail",
1128"rdata_ipsec_base : str sp str sp str sp dotted_str",
1129"rdata_ipseckey : rdata_ipsec_base sp str_sp_seq trail",
1130"rdata_ipseckey : rdata_ipsec_base trail",
1131"rdata_nid : str sp dotted_str trail",
1132"rdata_l32 : str sp dotted_str trail",
1133"rdata_l64 : str sp dotted_str trail",
1134"rdata_lp : str sp dname trail",
1135"rdata_eui48 : str trail",
1136"rdata_eui64 : str trail",
1137"rdata_uri : str sp str sp dotted_str trail",
1138"rdata_caa : str sp str sp dotted_str trail",
1139"rdata_openpgpkey : str_sp_seq trail",
1140"rdata_csync : str sp str nsec_seq",
1141"rdata_zonemd : str sp str sp str sp str_sp_seq trail",
1142"svcparam : dotted_str QSTR",
1143"svcparam : dotted_str",
1144"svcparams : svcparam",
1145"svcparams : svcparams sp svcparam",
1146"rdata_svcb_base : str sp dname",
1147"rdata_svcb : rdata_svcb_base sp svcparams trail",
1148"rdata_svcb : rdata_svcb_base trail",
1149"rdata_unknown : URR sp str sp str_sp_seq trail",
1150"rdata_unknown : URR sp str trail",
1151"rdata_unknown : URR error NL",
1152};
1153#endif
1154#ifdef YYSTACKSIZE10000
1155#undef YYMAXDEPTH10000
1156#define YYMAXDEPTH10000 YYSTACKSIZE10000
1157#else
1158#ifdef YYMAXDEPTH10000
1159#define YYSTACKSIZE10000 YYMAXDEPTH10000
1160#else
1161#define YYSTACKSIZE10000 10000
1162#define YYMAXDEPTH10000 10000
1163#endif
1164#endif
1165#define YYINITSTACKSIZE200 200
1166/* LINTUSED */
1167int yydebug;
1168int yynerrs;
1169int yyerrflag;
1170int yychar;
1171short *yyssp;
1172YYSTYPE *yyvsp;
1173YYSTYPE yyval;
1174YYSTYPE yylval;
1175short *yyss;
1176short *yysslim;
1177YYSTYPE *yyvs;
1178unsigned int yystacksize;
1179int yyparse(void);
1180#line 1221 "/usr/src/usr.sbin/nsd/zparser.y"
1181
1182int
1183yywrap(void)
1184{
1185 return 1;
1186}
1187
1188/*
1189 * Create the parser.
1190 */
1191zparser_type *
1192zparser_create(region_type *region, region_type *rr_region, namedb_type *db)
1193{
1194 zparser_type *result;
1195
1196 result = (zparser_type *) region_alloc(region, sizeof(zparser_type));
1197 result->region = region;
1198 result->rr_region = rr_region;
1199 result->db = db;
1200
1201 result->filename = NULL((void*)0);
1202 result->current_zone = NULL((void*)0);
1203 result->origin = NULL((void*)0);
1204 result->prev_dname = NULL((void*)0);
1205
1206 result->temporary_rdatas = (rdata_atom_type *) region_alloc_array(
1207 result->region, MAXRDATALEN64, sizeof(rdata_atom_type));
1208
1209 return result;
1210}
1211
1212/*
1213 * Initialize the parser for a new zone file.
1214 */
1215void
1216zparser_init(const char *filename, uint32_t ttl, uint16_t klass,
1217 const dname_type *origin)
1218{
1219 memset(nxtbits, 0, sizeof(nxtbits));
1220 memset(nsecbits, 0, sizeof(nsecbits));
1221 nsec_highest_rcode = 0;
1222
1223 parser->default_ttl = ttl;
1224 parser->default_class = klass;
1225 parser->current_zone = NULL((void*)0);
1226 parser->origin = domain_table_insert(parser->db->domains, origin);
1227 parser->prev_dname = parser->origin;
1228 parser->error_occurred = 0;
1229 parser->errors = 0;
1230 parser->line = 1;
1231 parser->filename = filename;
1232 parser->current_rr.rdata_count = 0;
1233 parser->current_rr.rdatas = parser->temporary_rdatas;
1234}
1235
1236void
1237yyerror(const char *message)
1238{
1239 zc_error("%s", message);
1240}
1241
1242static void
1243error_va_list(unsigned line, const char *fmt, va_list args)
1244{
1245 if (parser->filename) {
1246 char message[MAXSYSLOGMSGLEN512];
1247 vsnprintf(message, sizeof(message), fmt, args);
1248 log_msg(LOG_ERR3, "%s:%u: %s", parser->filename, line, message);
1249 }
1250 else log_vmsg(LOG_ERR3, fmt, args);
1251
1252 ++parser->errors;
1253 parser->error_occurred = 1;
1254}
1255
1256/* the line counting sux, to say the least
1257 * with this grose hack we try do give sane
1258 * numbers back */
1259void
1260zc_error_prev_line(const char *fmt, ...)
1261{
1262 va_list args;
1263 va_start(args, fmt)__builtin_va_start(args, fmt);
1264 error_va_list(parser->line - 1, fmt, args);
1265 va_end(args)__builtin_va_end(args);
1266}
1267
1268void
1269zc_error(const char *fmt, ...)
1270{
1271 /* send an error message to stderr */
1272 va_list args;
1273 va_start(args, fmt)__builtin_va_start(args, fmt);
1274 error_va_list(parser->line, fmt, args);
1275 va_end(args)__builtin_va_end(args);
1276}
1277
1278static void
1279warning_va_list(unsigned line, const char *fmt, va_list args)
1280{
1281 if (parser->filename) {
1282 char m[MAXSYSLOGMSGLEN512];
1283 vsnprintf(m, sizeof(m), fmt, args);
1284 log_msg(LOG_WARNING4, "%s:%u: %s", parser->filename, line, m);
1285 }
1286 else log_vmsg(LOG_WARNING4, fmt, args);
1287}
1288
1289void
1290zc_warning_prev_line(const char *fmt, ...)
1291{
1292 va_list args;
1293 va_start(args, fmt)__builtin_va_start(args, fmt);
1294 warning_va_list(parser->line - 1, fmt, args);
1295 va_end(args)__builtin_va_end(args);
1296}
1297
1298void
1299zc_warning(const char *fmt, ... )
1300{
1301 va_list args;
1302 va_start(args, fmt)__builtin_va_start(args, fmt);
1303 warning_va_list(parser->line, fmt, args);
1304 va_end(args)__builtin_va_end(args);
1305}
1306
1307#ifdef NSEC3
1308static void
1309nsec3_add_params(const char* hashalgo_str, const char* flag_str,
1310 const char* iter_str, const char* salt_str, int salt_len)
1311{
1312 zadd_rdata_wireformat(zparser_conv_byte(parser->region, hashalgo_str));
1313 zadd_rdata_wireformat(zparser_conv_byte(parser->region, flag_str));
1314 zadd_rdata_wireformat(zparser_conv_short(parser->region, iter_str));
1315
1316 /* salt */
1317 if(strcmp(salt_str, "-") != 0)
1318 zadd_rdata_wireformat(zparser_conv_hex_length(parser->region,
1319 salt_str, salt_len));
1320 else
1321 zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 1));
1322}
1323#endif /* NSEC3 */
1324#line 1317 "zparser.c"
1325/* allocate initial stack or double stack size, up to YYMAXDEPTH */
1326static int yygrowstack(void)
1327{
1328 unsigned int newsize;
1329 long sslen;
1330 short *newss;
1331 YYSTYPE *newvs;
1332
1333 if ((newsize = yystacksize) == 0)
3
Assuming the condition is false
4
Taking false branch
1334 newsize = YYINITSTACKSIZE200;
1335 else if (newsize >= YYMAXDEPTH10000)
5
Assuming 'newsize' is < YYMAXDEPTH
6
Taking false branch
1336 return -1;
1337 else if ((newsize *= 2) > YYMAXDEPTH10000)
7
Assuming the condition is false
8
Taking false branch
1338 newsize = YYMAXDEPTH10000;
1339 sslen = yyssp - yyss;
1340#ifdef SIZE_MAX0xffffffffffffffffUL
1341#define YY_SIZE_MAX0xffffffffffffffffUL SIZE_MAX0xffffffffffffffffUL
1342#else
1343#define YY_SIZE_MAX0xffffffffffffffffUL 0xffffffffU
1344#endif
1345 if (newsize && YY_SIZE_MAX0xffffffffffffffffUL / newsize < sizeof *newss)
9
Assuming 'newsize' is 0
1346 goto bail;
1347 newss = (short *)realloc(yyss, newsize * sizeof *newss);
1348 if (newss == NULL((void*)0))
10
Assuming 'newss' is not equal to NULL
11
Taking false branch
1349 goto bail;
1350 yyss = newss;
1351 yyssp = newss + sslen;
1352 if (newsize
11.1
'newsize' is 0
&& YY_SIZE_MAX0xffffffffffffffffUL / newsize < sizeof *newvs)
1353 goto bail;
1354 newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs);
12
Memory is released
1355 if (newvs == NULL((void*)0))
13
Assuming 'newvs' is equal to NULL
14
Taking true branch
1356 goto bail;
15
Control jumps to line 1363
1357 yyvs = newvs;
1358 yyvsp = newvs + sslen;
1359 yystacksize = newsize;
1360 yysslim = yyss + newsize - 1;
1361 return 0;
1362bail:
1363 if (yyss
15.1
'yyss' is non-null
)
16
Taking true branch
1364 free(yyss);
1365 if (yyvs)
17
Assuming 'yyvs' is non-null
18
Taking true branch
1366 free(yyvs);
19
Attempt to free released memory
1367 yyss = yyssp = NULL((void*)0);
1368 yyvs = yyvsp = NULL((void*)0);
1369 yystacksize = 0;
1370 return -1;
1371}
1372
1373#define YYABORTgoto yyabort goto yyabort
1374#define YYREJECTgoto yyabort goto yyabort
1375#define YYACCEPTgoto yyaccept goto yyaccept
1376#define YYERRORgoto yyerrlab goto yyerrlab
1377int
1378yyparse(void)
1379{
1380 int yym, yyn, yystate;
1381#if YYDEBUG0
1382 const char *yys;
1383
1384 if ((yys = getenv("YYDEBUG")))
1385 {
1386 yyn = *yys;
1387 if (yyn >= '0' && yyn <= '9')
1388 yydebug = yyn - '0';
1389 }
1390#endif /* YYDEBUG */
1391
1392 yynerrs = 0;
1393 yyerrflag = 0;
1394 yychar = (-1);
1395
1396 if (yyss == NULL((void*)0) && yygrowstack()) goto yyoverflow;
1
Assuming 'yyss' is equal to NULL
2
Calling 'yygrowstack'
1397 yyssp = yyss;
1398 yyvsp = yyvs;
1399 *yyssp = yystate = 0;
1400
1401yyloop:
1402 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1403 if (yychar < 0)
1404 {
1405 if ((yychar = yylex()) < 0) yychar = 0;
1406#if YYDEBUG0
1407 if (yydebug)
1408 {
1409 yys = 0;
1410 if (yychar <= YYMAXTOKEN349) yys = yyname[yychar];
1411 if (!yys) yys = "illegal-symbol";
1412 printf("%sdebug: state %d, reading %d (%s)\n",
1413 YYPREFIX"yy", yystate, yychar, yys);
1414 }
1415#endif
1416 }
1417 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
1418 yyn <= YYTABLESIZE2053 && yycheck[yyn] == yychar)
1419 {
1420#if YYDEBUG0
1421 if (yydebug)
1422 printf("%sdebug: state %d, shifting to state %d\n",
1423 YYPREFIX"yy", yystate, yytable[yyn]);
1424#endif
1425 if (yyssp >= yysslim && yygrowstack())
1426 {
1427 goto yyoverflow;
1428 }
1429 *++yyssp = yystate = yytable[yyn];
1430 *++yyvsp = yylval;
1431 yychar = (-1);
1432 if (yyerrflag > 0) --yyerrflag;
1433 goto yyloop;
1434 }
1435 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
1436 yyn <= YYTABLESIZE2053 && yycheck[yyn] == yychar)
1437 {
1438 yyn = yytable[yyn];
1439 goto yyreduce;
1440 }
1441 if (yyerrflag) goto yyinrecovery;
1442#if defined(__GNUC__4)
1443 goto yynewerror;
1444#endif
1445yynewerror:
1446 yyerror("syntax error");
1447#if defined(__GNUC__4)
1448 goto yyerrlab;
1449#endif
1450yyerrlab:
1451 ++yynerrs;
1452yyinrecovery:
1453 if (yyerrflag < 3)
1454 {
1455 yyerrflag = 3;
1456 for (;;)
1457 {
1458 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE256) >= 0 &&
1459 yyn <= YYTABLESIZE2053 && yycheck[yyn] == YYERRCODE256)
1460 {
1461#if YYDEBUG0
1462 if (yydebug)
1463 printf("%sdebug: state %d, error recovery shifting\
1464 to state %d\n", YYPREFIX"yy", *yyssp, yytable[yyn]);
1465#endif
1466 if (yyssp >= yysslim && yygrowstack())
1467 {
1468 goto yyoverflow;
1469 }
1470 *++yyssp = yystate = yytable[yyn];
1471 *++yyvsp = yylval;
1472 goto yyloop;
1473 }
1474 else
1475 {
1476#if YYDEBUG0
1477 if (yydebug)
1478 printf("%sdebug: error recovery discarding state %d\n",
1479 YYPREFIX"yy", *yyssp);
1480#endif
1481 if (yyssp <= yyss) goto yyabort;
1482 --yyssp;
1483 --yyvsp;
1484 }
1485 }
1486 }
1487 else
1488 {
1489 if (yychar == 0) goto yyabort;
1490#if YYDEBUG0
1491 if (yydebug)
1492 {
1493 yys = 0;
1494 if (yychar <= YYMAXTOKEN349) yys = yyname[yychar];
1495 if (!yys) yys = "illegal-symbol";
1496 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1497 YYPREFIX"yy", yystate, yychar, yys);
1498 }
1499#endif
1500 yychar = (-1);
1501 goto yyloop;
1502 }
1503yyreduce:
1504#if YYDEBUG0
1505 if (yydebug)
1506 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1507 YYPREFIX"yy", yystate, yyn, yyrule[yyn]);
1508#endif
1509 yym = yylen[yyn];
1510 if (yym)
1511 yyval = yyvsp[1-yym];
1512 else
1513 memset(&yyval, 0, sizeof yyval);
1514 switch (yyn)
1515 {
1516case 5:
1517#line 99 "/usr/src/usr.sbin/nsd/zparser.y"
1518{}
1519break;
1520case 6:
1521#line 101 "/usr/src/usr.sbin/nsd/zparser.y"
1522{
1523 region_free_all(parser->rr_region);
1524 parser->current_rr.type = 0;
1525 parser->current_rr.rdata_count = 0;
1526 parser->current_rr.rdatas = parser->temporary_rdatas;
1527 parser->error_occurred = 0;
1528 }
1529break;
1530case 7:
1531#line 109 "/usr/src/usr.sbin/nsd/zparser.y"
1532{
1533 region_free_all(parser->rr_region);
1534 parser->current_rr.type = 0;
1535 parser->current_rr.rdata_count = 0;
1536 parser->current_rr.rdatas = parser->temporary_rdatas;
1537 parser->error_occurred = 0;
1538 }
1539break;
1540case 8:
1541#line 117 "/usr/src/usr.sbin/nsd/zparser.y"
1542{ /* rr should be fully parsed */
1543 if (!parser->error_occurred) {
1544 parser->current_rr.rdatas
1545 =(rdata_atom_type *)region_alloc_array_init(
1546 parser->region,
1547 parser->current_rr.rdatas,
1548 parser->current_rr.rdata_count,
1549 sizeof(rdata_atom_type));
1550
1551 process_rr();
1552 }
1553
1554 region_free_all(parser->rr_region);
1555
1556 parser->current_rr.type = 0;
1557 parser->current_rr.rdata_count = 0;
1558 parser->current_rr.rdatas = parser->temporary_rdatas;
1559 parser->error_occurred = 0;
1560 }
1561break;
1562case 16:
1563#line 151 "/usr/src/usr.sbin/nsd/zparser.y"
1564{
1565 parser->default_ttl = zparser_ttl2int(yyvsp[-1].data.str, &(parser->error_occurred));
1566 if (parser->error_occurred == 1) {
1567 parser->default_ttl = DEFAULT_TTL3600;
1568 parser->error_occurred = 0;
1569 }
1570 }
1571break;
1572case 17:
1573#line 161 "/usr/src/usr.sbin/nsd/zparser.y"
1574{
1575 /* if previous origin is unused, remove it, do not leak it */
1576 if(parser->origin != error_domain && parser->origin != yyvsp[-1].domain) {
1577 /* protect $3 from deletion, because deldomain walks up */
1578 yyvsp[-1].domain->usage ++;
1579 domain_table_deldomain(parser->db, parser->origin);
1580 yyvsp[-1].domain->usage --;
1581 }
1582 parser->origin = yyvsp[-1].domain;
1583 }
1584break;
1585case 18:
1586#line 172 "/usr/src/usr.sbin/nsd/zparser.y"
1587{
1588 zc_error_prev_line("$ORIGIN directive requires absolute domain name");
1589 }
1590break;
1591case 19:
1592#line 178 "/usr/src/usr.sbin/nsd/zparser.y"
1593{
1594 parser->current_rr.owner = yyvsp[-2].domain;
1595 parser->current_rr.type = yyvsp[0].type;
1596 }
1597break;
1598case 20:
1599#line 185 "/usr/src/usr.sbin/nsd/zparser.y"
1600{
1601 parser->prev_dname = yyvsp[-1].domain;
1602 yyval.domain = yyvsp[-1].domain;
1603 }
1604break;
1605case 21:
1606#line 190 "/usr/src/usr.sbin/nsd/zparser.y"
1607{
1608 yyval.domain = parser->prev_dname;
1609 }
1610break;
1611case 22:
1612#line 196 "/usr/src/usr.sbin/nsd/zparser.y"
1613{
1614 parser->current_rr.ttl = parser->default_ttl;
1615 parser->current_rr.klass = parser->default_class;
1616 }
1617break;
1618case 23:
1619#line 201 "/usr/src/usr.sbin/nsd/zparser.y"
1620{
1621 parser->current_rr.ttl = parser->default_ttl;
1622 parser->current_rr.klass = yyvsp[-1].klass;
1623 }
1624break;
1625case 24:
1626#line 206 "/usr/src/usr.sbin/nsd/zparser.y"
1627{
1628 parser->current_rr.ttl = yyvsp[-1].ttl;
1629 parser->current_rr.klass = parser->default_class;
1630 }
1631break;
1632case 25:
1633#line 211 "/usr/src/usr.sbin/nsd/zparser.y"
1634{
1635 parser->current_rr.ttl = yyvsp[-3].ttl;
1636 parser->current_rr.klass = yyvsp[-1].klass;
1637 }
1638break;
1639case 26:
1640#line 216 "/usr/src/usr.sbin/nsd/zparser.y"
1641{
1642 parser->current_rr.ttl = yyvsp[-1].ttl;
1643 parser->current_rr.klass = yyvsp[-3].klass;
1644 }
1645break;
1646case 28:
1647#line 224 "/usr/src/usr.sbin/nsd/zparser.y"
1648{
1649 if (yyvsp[0].dname == error_dname) {
1650 yyval.domain = error_domain;
1651 } else if(parser->origin == error_domain) {
1652 zc_error("cannot concatenate origin to domain name, because origin failed to parse");
1653 yyval.domain = error_domain;
1654 } else if (yyvsp[0].dname->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN255) {
1655 zc_error("domain name exceeds %d character limit", MAXDOMAINLEN255);
1656 yyval.domain = error_domain;
1657 } else {
1658 yyval.domain = domain_table_insert(
1659 parser->db->domains,
1660 dname_concatenate(
1661 parser->rr_region,
1662 yyvsp[0].dname,
1663 domain_dname(parser->origin)));
1664 }
1665 }
1666break;
1667case 29:
1668#line 245 "/usr/src/usr.sbin/nsd/zparser.y"
1669{
1670 yyval.domain = parser->db->domains->root;
1671 }
1672break;
1673case 30:
1674#line 249 "/usr/src/usr.sbin/nsd/zparser.y"
1675{
1676 yyval.domain = parser->origin;
1677 }
1678break;
1679case 31:
1680#line 253 "/usr/src/usr.sbin/nsd/zparser.y"
1681{
1682 if (yyvsp[-1].dname != error_dname) {
1683 yyval.domain = domain_table_insert(parser->db->domains, yyvsp[-1].dname);
1684 } else {
1685 yyval.domain = error_domain;
1686 }
1687 }
1688break;
1689case 32:
1690#line 263 "/usr/src/usr.sbin/nsd/zparser.y"
1691{
1692 if (yyvsp[0].data.len > MAXLABELLEN63) {
1693 zc_error("label exceeds %d character limit", MAXLABELLEN63);
1694 yyval.dname = error_dname;
1695 } else if (yyvsp[0].data.len <= 0) {
1696 zc_error("zero label length");
1697 yyval.dname = error_dname;
1698 } else {
1699 yyval.dname = dname_make_from_label(parser->rr_region,
1700 (uint8_t *) yyvsp[0].data.str,
1701 yyvsp[0].data.len);
1702 }
1703 }
1704break;
1705case 33:
1706#line 277 "/usr/src/usr.sbin/nsd/zparser.y"
1707{
1708 zc_error("bitlabels are now deprecated. RFC2673 is obsoleted.");
1709 yyval.dname = error_dname;
1710 }
1711break;
1712case 35:
1713#line 285 "/usr/src/usr.sbin/nsd/zparser.y"
1714{
1715 if (yyvsp[-2].dname == error_dname || yyvsp[0].dname == error_dname) {
1716 yyval.dname = error_dname;
1717 } else if (yyvsp[-2].dname->name_size + yyvsp[0].dname->name_size - 1 > MAXDOMAINLEN255) {
1718 zc_error("domain name exceeds %d character limit",
1719 MAXDOMAINLEN255);
1720 yyval.dname = error_dname;
1721 } else {
1722 yyval.dname = dname_concatenate(parser->rr_region, yyvsp[-2].dname, yyvsp[0].dname);
1723 }
1724 }
1725break;
1726case 37:
1727#line 304 "/usr/src/usr.sbin/nsd/zparser.y"
1728{
1729 /* terminate in root label and copy the origin in there */
1730 if(parser->origin && domain_dname(parser->origin)) {
1731 yyval.data.len = yyvsp[0].data.len + domain_dname(parser->origin)->name_size;
1732 if (yyval.data.len > MAXDOMAINLEN255)
1733 zc_error("domain name exceeds %d character limit",
1734 MAXDOMAINLEN255);
1735 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1736 memmove(yyval.data.str, yyvsp[0].data.str, yyvsp[0].data.len);
1737 memmove(yyval.data.str + yyvsp[0].data.len, dname_name(domain_dname(parser->origin)),
1738 domain_dname(parser->origin)->name_size);
1739 } else {
1740 yyval.data.len = yyvsp[0].data.len + 1;
1741 if (yyval.data.len > MAXDOMAINLEN255)
1742 zc_error("domain name exceeds %d character limit",
1743 MAXDOMAINLEN255);
1744 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1745 memmove(yyval.data.str, yyvsp[0].data.str, yyvsp[0].data.len);
1746 yyval.data.str[ yyvsp[0].data.len ] = 0;
1747 }
1748 }
1749break;
1750case 38:
1751#line 328 "/usr/src/usr.sbin/nsd/zparser.y"
1752{
1753 char *result = (char *) region_alloc(parser->rr_region, 1);
1754 result[0] = 0;
1755 yyval.data.str = result;
1756 yyval.data.len = 1;
1757 }
1758break;
1759case 39:
1760#line 335 "/usr/src/usr.sbin/nsd/zparser.y"
1761{
1762 if(parser->origin && domain_dname(parser->origin)) {
1763 yyval.data.len = domain_dname(parser->origin)->name_size;
1764 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1765 memmove(yyval.data.str, dname_name(domain_dname(parser->origin)), yyval.data.len);
1766 } else {
1767 yyval.data.len = 1;
1768 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1769 yyval.data.str[0] = 0;
1770 }
1771 }
1772break;
1773case 40:
1774#line 347 "/usr/src/usr.sbin/nsd/zparser.y"
1775{
1776 yyval.data.len = yyvsp[-1].data.len + 1;
1777 if (yyval.data.len > MAXDOMAINLEN255)
1778 zc_error("domain name exceeds %d character limit",
1779 MAXDOMAINLEN255);
1780 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1781 memcpy(yyval.data.str, yyvsp[-1].data.str, yyvsp[-1].data.len);
1782 yyval.data.str[yyvsp[-1].data.len] = 0;
1783 }
1784break;
1785case 41:
1786#line 359 "/usr/src/usr.sbin/nsd/zparser.y"
1787{
1788 char *result = (char *) region_alloc(parser->rr_region,
1789 yyvsp[0].data.len + 1);
1790
1791 if (yyvsp[0].data.len > MAXLABELLEN63)
1792 zc_error("label exceeds %d character limit", MAXLABELLEN63);
1793
1794 /* make label anyway */
1795 result[0] = yyvsp[0].data.len;
1796 memmove(result+1, yyvsp[0].data.str, yyvsp[0].data.len);
1797
1798 yyval.data.str = result;
1799 yyval.data.len = yyvsp[0].data.len + 1;
1800 }
1801break;
1802case 43:
1803#line 377 "/usr/src/usr.sbin/nsd/zparser.y"
1804{
1805 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len;
1806 if (yyval.data.len > MAXDOMAINLEN255)
1807 zc_error("domain name exceeds %d character limit",
1808 MAXDOMAINLEN255);
1809 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len);
1810 memmove(yyval.data.str, yyvsp[-2].data.str, yyvsp[-2].data.len);
1811 memmove(yyval.data.str + yyvsp[-2].data.len, yyvsp[0].data.str, yyvsp[0].data.len);
1812 }
1813break;
1814case 44:
1815#line 389 "/usr/src/usr.sbin/nsd/zparser.y"
1816{
1817 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 1);
1818 }
1819break;
1820case 45:
1821#line 393 "/usr/src/usr.sbin/nsd/zparser.y"
1822{
1823 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 1);
1824 }
1825break;
1826case 46:
1827#line 397 "/usr/src/usr.sbin/nsd/zparser.y"
1828{
1829 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[-1].data.str, yyvsp[-1].data.len), 1);
1830 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1831 }
1832break;
1833case 47:
1834#line 402 "/usr/src/usr.sbin/nsd/zparser.y"
1835{
1836 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1837 }
1838break;
1839case 48:
1840#line 406 "/usr/src/usr.sbin/nsd/zparser.y"
1841{
1842 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[-1].data.str, yyvsp[-1].data.len), 0);
1843 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1844 }
1845break;
1846case 49:
1847#line 411 "/usr/src/usr.sbin/nsd/zparser.y"
1848{
1849 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1850 }
1851break;
1852case 50:
1853#line 415 "/usr/src/usr.sbin/nsd/zparser.y"
1854{
1855 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1856 }
1857break;
1858case 51:
1859#line 419 "/usr/src/usr.sbin/nsd/zparser.y"
1860{
1861 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[-1].data.str, yyvsp[-1].data.len), 0);
1862 zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, yyvsp[0].data.str, yyvsp[0].data.len), 0);
1863 }
1864break;
1865case 53:
1866#line 431 "/usr/src/usr.sbin/nsd/zparser.y"
1867{
1868 yyval.data.len = 1;
1869 yyval.data.str = region_strdup(parser->rr_region, ".");
1870 }
1871break;
1872case 54:
1873#line 436 "/usr/src/usr.sbin/nsd/zparser.y"
1874{
1875 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len + 1;
1876 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len + 1);
1877 memcpy(yyval.data.str, yyvsp[-2].data.str, yyvsp[-2].data.len);
1878 memcpy(yyval.data.str + yyvsp[-2].data.len, " ", 1);
1879 memcpy(yyval.data.str + yyvsp[-2].data.len + 1, yyvsp[0].data.str, yyvsp[0].data.len);
1880 yyval.data.str[yyval.data.len] = '\0';
1881 }
1882break;
1883case 55:
1884#line 445 "/usr/src/usr.sbin/nsd/zparser.y"
1885{
1886 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len + 1;
1887 yyval.data.str = (char *) region_alloc(parser->rr_region, yyval.data.len + 1);
1888 memcpy(yyval.data.str, yyvsp[-2].data.str, yyvsp[-2].data.len);
1889 memcpy(yyval.data.str + yyvsp[-2].data.len, ".", 1);
1890 memcpy(yyval.data.str + yyvsp[-2].data.len + 1, yyvsp[0].data.str, yyvsp[0].data.len);
1891 yyval.data.str[yyval.data.len] = '\0';
1892 }
1893break;
1894case 56:
1895#line 457 "/usr/src/usr.sbin/nsd/zparser.y"
1896{
1897 uint16_t type = rrtype_from_string(yyvsp[0].data.str);
1898 if (type != 0 && type < 128) {
1899 set_bit(nxtbits, type);
1900 } else {
1901 zc_error("bad type %d in NXT record", (int) type);
1902 }
1903 }
1904break;
1905case 57:
1906#line 466 "/usr/src/usr.sbin/nsd/zparser.y"
1907{
1908 uint16_t type = rrtype_from_string(yyvsp[0].data.str);
1909 if (type != 0 && type < 128) {
1910 set_bit(nxtbits, type);
1911 } else {
1912 zc_error("bad type %d in NXT record", (int) type);
1913 }
1914 }
1915break;
1916case 58:
1917#line 477 "/usr/src/usr.sbin/nsd/zparser.y"
1918{
1919 }
1920break;
1921case 59:
1922#line 480 "/usr/src/usr.sbin/nsd/zparser.y"
1923{
1924 }
1925break;
1926case 60:
1927#line 483 "/usr/src/usr.sbin/nsd/zparser.y"
1928{
1929 uint16_t type = rrtype_from_string(yyvsp[-1].data.str);
1930 if (type != 0) {
1931 if (type > nsec_highest_rcode) {
1932 nsec_highest_rcode = type;
1933 }
1934 set_bitnsec(nsecbits, type);
1935 } else {
1936 zc_error("bad type %d in NSEC record", (int) type);
1937 }
1938 }
1939break;
1940case 64:
1941#line 506 "/usr/src/usr.sbin/nsd/zparser.y"
1942{
1943 char *result = (char *) region_alloc(parser->rr_region,
1944 yyvsp[-2].data.len + yyvsp[0].data.len + 1);
1945 memcpy(result, yyvsp[-2].data.str, yyvsp[-2].data.len);
1946 memcpy(result + yyvsp[-2].data.len, yyvsp[0].data.str, yyvsp[0].data.len);
1947 yyval.data.str = result;
1948 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len;
1949 yyval.data.str[yyval.data.len] = '\0';
1950 }
1951break;
1952case 66:
1953#line 523 "/usr/src/usr.sbin/nsd/zparser.y"
1954{
1955 char *result = (char *) region_alloc(parser->rr_region,
1956 yyvsp[-2].data.len + yyvsp[0].data.len + 1);
1957 memcpy(result, yyvsp[-2].data.str, yyvsp[-2].data.len);
1958 memcpy(result + yyvsp[-2].data.len, yyvsp[0].data.str, yyvsp[0].data.len);
1959 yyval.data.str = result;
1960 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len;
1961 yyval.data.str[yyval.data.len] = '\0';
1962 }
1963break;
1964case 68:
1965#line 539 "/usr/src/usr.sbin/nsd/zparser.y"
1966{
1967 yyval.data.str = ".";
1968 yyval.data.len = 1;
1969 }
1970break;
1971case 69:
1972#line 544 "/usr/src/usr.sbin/nsd/zparser.y"
1973{
1974 char *result = (char *) region_alloc(parser->rr_region,
1975 yyvsp[-1].data.len + 2);
1976 memcpy(result, yyvsp[-1].data.str, yyvsp[-1].data.len);
1977 result[yyvsp[-1].data.len] = '.';
1978 yyval.data.str = result;
1979 yyval.data.len = yyvsp[-1].data.len + 1;
1980 yyval.data.str[yyval.data.len] = '\0';
1981 }
1982break;
1983case 70:
1984#line 554 "/usr/src/usr.sbin/nsd/zparser.y"
1985{
1986 char *result = (char *) region_alloc(parser->rr_region,
1987 yyvsp[-2].data.len + yyvsp[0].data.len + 2);
1988 memcpy(result, yyvsp[-2].data.str, yyvsp[-2].data.len);
1989 result[yyvsp[-2].data.len] = '.';
1990 memcpy(result + yyvsp[-2].data.len + 1, yyvsp[0].data.str, yyvsp[0].data.len);
1991 yyval.data.str = result;
1992 yyval.data.len = yyvsp[-2].data.len + yyvsp[0].data.len + 1;
1993 yyval.data.str[yyval.data.len] = '\0';
1994 }
1995break;
1996case 74:
1997#line 577 "/usr/src/usr.sbin/nsd/zparser.y"
1998{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
1999break;
2000case 76:
2001#line 579 "/usr/src/usr.sbin/nsd/zparser.y"
2002{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2003break;
2004case 77:
2005#line 580 "/usr/src/usr.sbin/nsd/zparser.y"
2006{ zc_warning_prev_line("MD is obsolete"); }
2007break;
2008case 78:
2009#line 582 "/usr/src/usr.sbin/nsd/zparser.y"
2010{
2011 zc_warning_prev_line("MD is obsolete");
2012 yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown);
2013 }
2014break;
2015case 79:
2016#line 586 "/usr/src/usr.sbin/nsd/zparser.y"
2017{ zc_warning_prev_line("MF is obsolete"); }
2018break;
2019case 80:
2020#line 588 "/usr/src/usr.sbin/nsd/zparser.y"
2021{
2022 zc_warning_prev_line("MF is obsolete");
2023 yyval.type = yyvsp[-2].type;
2024 parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown);
2025 }
2026break;
2027case 82:
2028#line 594 "/usr/src/usr.sbin/nsd/zparser.y"
2029{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2030break;
2031case 84:
2032#line 596 "/usr/src/usr.sbin/nsd/zparser.y"
2033{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2034break;
2035case 85:
2036#line 597 "/usr/src/usr.sbin/nsd/zparser.y"
2037{ zc_warning_prev_line("MB is obsolete"); }
2038break;
2039case 86:
2040#line 599 "/usr/src/usr.sbin/nsd/zparser.y"
2041{
2042 zc_warning_prev_line("MB is obsolete");
2043 yyval.type = yyvsp[-2].type;
2044 parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown);
2045 }
2046break;
2047case 88:
2048#line 605 "/usr/src/usr.sbin/nsd/zparser.y"
2049{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2050break;
2051case 90:
2052#line 607 "/usr/src/usr.sbin/nsd/zparser.y"
2053{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2054break;
2055case 92:
2056#line 610 "/usr/src/usr.sbin/nsd/zparser.y"
2057{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2058break;
2059case 94:
2060#line 612 "/usr/src/usr.sbin/nsd/zparser.y"
2061{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2062break;
2063case 96:
2064#line 614 "/usr/src/usr.sbin/nsd/zparser.y"
2065{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2066break;
2067case 98:
2068#line 616 "/usr/src/usr.sbin/nsd/zparser.y"
2069{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2070break;
2071case 100:
2072#line 618 "/usr/src/usr.sbin/nsd/zparser.y"
2073{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2074break;
2075case 102:
2076#line 620 "/usr/src/usr.sbin/nsd/zparser.y"
2077{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2078break;
2079case 104:
2080#line 622 "/usr/src/usr.sbin/nsd/zparser.y"
2081{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2082break;
2083case 106:
2084#line 624 "/usr/src/usr.sbin/nsd/zparser.y"
2085{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2086break;
2087case 108:
2088#line 626 "/usr/src/usr.sbin/nsd/zparser.y"
2089{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2090break;
2091case 110:
2092#line 628 "/usr/src/usr.sbin/nsd/zparser.y"
2093{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2094break;
2095case 112:
2096#line 630 "/usr/src/usr.sbin/nsd/zparser.y"
2097{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2098break;
2099case 114:
2100#line 632 "/usr/src/usr.sbin/nsd/zparser.y"
2101{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2102break;
2103case 116:
2104#line 634 "/usr/src/usr.sbin/nsd/zparser.y"
2105{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2106break;
2107case 118:
2108#line 636 "/usr/src/usr.sbin/nsd/zparser.y"
2109{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2110break;
2111case 120:
2112#line 638 "/usr/src/usr.sbin/nsd/zparser.y"
2113{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2114break;
2115case 122:
2116#line 640 "/usr/src/usr.sbin/nsd/zparser.y"
2117{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2118break;
2119case 124:
2120#line 642 "/usr/src/usr.sbin/nsd/zparser.y"
2121{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2122break;
2123case 126:
2124#line 644 "/usr/src/usr.sbin/nsd/zparser.y"
2125{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2126break;
2127case 128:
2128#line 646 "/usr/src/usr.sbin/nsd/zparser.y"
2129{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2130break;
2131case 130:
2132#line 648 "/usr/src/usr.sbin/nsd/zparser.y"
2133{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2134break;
2135case 132:
2136#line 650 "/usr/src/usr.sbin/nsd/zparser.y"
2137{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2138break;
2139case 134:
2140#line 652 "/usr/src/usr.sbin/nsd/zparser.y"
2141{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2142break;
2143case 136:
2144#line 654 "/usr/src/usr.sbin/nsd/zparser.y"
2145{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2146break;
2147case 138:
2148#line 656 "/usr/src/usr.sbin/nsd/zparser.y"
2149{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2150break;
2151case 140:
2152#line 658 "/usr/src/usr.sbin/nsd/zparser.y"
2153{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2154break;
2155case 142:
2156#line 660 "/usr/src/usr.sbin/nsd/zparser.y"
2157{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2158break;
2159case 144:
2160#line 662 "/usr/src/usr.sbin/nsd/zparser.y"
2161{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2162break;
2163case 147:
2164#line 665 "/usr/src/usr.sbin/nsd/zparser.y"
2165{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2166break;
2167case 149:
2168#line 667 "/usr/src/usr.sbin/nsd/zparser.y"
2169{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2170break;
2171case 150:
2172#line 668 "/usr/src/usr.sbin/nsd/zparser.y"
2173{ if (dlv_warn) { dlv_warn = 0; zc_warning_prev_line("DLV is experimental"); } }
2174break;
2175case 151:
2176#line 669 "/usr/src/usr.sbin/nsd/zparser.y"
2177{ 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); }
2178break;
2179case 153:
2180#line 671 "/usr/src/usr.sbin/nsd/zparser.y"
2181{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); check_sshfp(); }
2182break;
2183case 155:
2184#line 673 "/usr/src/usr.sbin/nsd/zparser.y"
2185{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2186break;
2187case 157:
2188#line 675 "/usr/src/usr.sbin/nsd/zparser.y"
2189{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2190break;
2191case 159:
2192#line 677 "/usr/src/usr.sbin/nsd/zparser.y"
2193{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2194break;
2195case 161:
2196#line 679 "/usr/src/usr.sbin/nsd/zparser.y"
2197{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2198break;
2199case 163:
2200#line 681 "/usr/src/usr.sbin/nsd/zparser.y"
2201{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2202break;
2203case 165:
2204#line 683 "/usr/src/usr.sbin/nsd/zparser.y"
2205{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2206break;
2207case 167:
2208#line 685 "/usr/src/usr.sbin/nsd/zparser.y"
2209{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2210break;
2211case 169:
2212#line 687 "/usr/src/usr.sbin/nsd/zparser.y"
2213{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2214break;
2215case 171:
2216#line 689 "/usr/src/usr.sbin/nsd/zparser.y"
2217{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2218break;
2219case 173:
2220#line 691 "/usr/src/usr.sbin/nsd/zparser.y"
2221{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2222break;
2223case 175:
2224#line 693 "/usr/src/usr.sbin/nsd/zparser.y"
2225{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2226break;
2227case 177:
2228#line 695 "/usr/src/usr.sbin/nsd/zparser.y"
2229{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2230break;
2231case 179:
2232#line 697 "/usr/src/usr.sbin/nsd/zparser.y"
2233{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2234break;
2235case 181:
2236#line 699 "/usr/src/usr.sbin/nsd/zparser.y"
2237{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2238break;
2239case 183:
2240#line 701 "/usr/src/usr.sbin/nsd/zparser.y"
2241{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2242break;
2243case 185:
2244#line 703 "/usr/src/usr.sbin/nsd/zparser.y"
2245{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2246break;
2247case 187:
2248#line 705 "/usr/src/usr.sbin/nsd/zparser.y"
2249{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2250break;
2251case 189:
2252#line 707 "/usr/src/usr.sbin/nsd/zparser.y"
2253{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2254break;
2255case 191:
2256#line 709 "/usr/src/usr.sbin/nsd/zparser.y"
2257{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2258break;
2259case 193:
2260#line 711 "/usr/src/usr.sbin/nsd/zparser.y"
2261{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2262break;
2263case 195:
2264#line 713 "/usr/src/usr.sbin/nsd/zparser.y"
2265{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2266break;
2267case 197:
2268#line 715 "/usr/src/usr.sbin/nsd/zparser.y"
2269{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2270break;
2271case 198:
2272#line 716 "/usr/src/usr.sbin/nsd/zparser.y"
2273{ yyval.type = yyvsp[-2].type; parse_unknown_rdata(yyvsp[-2].type, yyvsp[0].unknown); }
2274break;
2275case 199:
2276#line 718 "/usr/src/usr.sbin/nsd/zparser.y"
2277{
2278 zc_error_prev_line("unrecognized RR type '%s'", yyvsp[-2].data.str);
2279 }
2280break;
2281case 200:
2282#line 730 "/usr/src/usr.sbin/nsd/zparser.y"
2283{
2284 zadd_rdata_wireformat(zparser_conv_a(parser->region, yyvsp[-1].data.str));
2285 }
2286break;
2287case 201:
2288#line 736 "/usr/src/usr.sbin/nsd/zparser.y"
2289{
2290 /* convert a single dname record */
2291 zadd_rdata_domain(yyvsp[-1].domain);
2292 }
2293break;
2294case 202:
2295#line 743 "/usr/src/usr.sbin/nsd/zparser.y"
2296{
2297 /* convert the soa data */
2298 zadd_rdata_domain(yyvsp[-13].domain); /* prim. ns */
2299 zadd_rdata_domain(yyvsp[-11].domain); /* email */
2300 zadd_rdata_wireformat(zparser_conv_serial(parser->region, yyvsp[-9].data.str)); /* serial */
2301 zadd_rdata_wireformat(zparser_conv_period(parser->region, yyvsp[-7].data.str)); /* refresh */
2302 zadd_rdata_wireformat(zparser_conv_period(parser->region, yyvsp[-5].data.str)); /* retry */
2303 zadd_rdata_wireformat(zparser_conv_period(parser->region, yyvsp[-3].data.str)); /* expire */
2304 zadd_rdata_wireformat(zparser_conv_period(parser->region, yyvsp[-1].data.str)); /* minimum */
2305 }
2306break;
2307case 203:
2308#line 756 "/usr/src/usr.sbin/nsd/zparser.y"
2309{
2310 zadd_rdata_wireformat(zparser_conv_a(parser->region, yyvsp[-5].data.str)); /* address */
2311 zadd_rdata_wireformat(zparser_conv_services(parser->region, yyvsp[-3].data.str, yyvsp[-1].data.str)); /* protocol and services */
2312 }
2313break;
2314case 204:
2315#line 763 "/usr/src/usr.sbin/nsd/zparser.y"
2316{
2317 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-3].data.str, yyvsp[-3].data.len)); /* CPU */
2318 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* OS*/
2319 }
2320break;
2321case 205:
2322#line 770 "/usr/src/usr.sbin/nsd/zparser.y"
2323{
2324 /* convert a single dname record */
2325 zadd_rdata_domain(yyvsp[-3].domain);
2326 zadd_rdata_domain(yyvsp[-1].domain);
2327 }
2328break;
2329case 206:
2330#line 778 "/usr/src/usr.sbin/nsd/zparser.y"
2331{
2332 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* priority */
2333 zadd_rdata_domain(yyvsp[-1].domain); /* MX host */
2334 }
2335break;
2336case 207:
2337#line 785 "/usr/src/usr.sbin/nsd/zparser.y"
2338{
2339 zadd_rdata_txt_clean_wireformat();
2340 }
2341break;
2342case 208:
2343#line 792 "/usr/src/usr.sbin/nsd/zparser.y"
2344{
2345 zadd_rdata_domain(yyvsp[-3].domain); /* mbox d-name */
2346 zadd_rdata_domain(yyvsp[-1].domain); /* txt d-name */
2347 }
2348break;
2349case 209:
2350#line 800 "/usr/src/usr.sbin/nsd/zparser.y"
2351{
2352 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* subtype */
2353 zadd_rdata_domain(yyvsp[-1].domain); /* domain name */
2354 }
2355break;
2356case 210:
2357#line 808 "/usr/src/usr.sbin/nsd/zparser.y"
2358{
2359 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* X.25 address. */
2360 }
2361break;
2362case 211:
2363#line 815 "/usr/src/usr.sbin/nsd/zparser.y"
2364{
2365 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* address */
2366 }
2367break;
2368case 212:
2369#line 819 "/usr/src/usr.sbin/nsd/zparser.y"
2370{
2371 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-3].data.str, yyvsp[-3].data.len)); /* address */
2372 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* sub-address */
2373 }
2374break;
2375case 213:
2376#line 827 "/usr/src/usr.sbin/nsd/zparser.y"
2377{
2378 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2379 zadd_rdata_domain(yyvsp[-1].domain); /* intermediate host */
2380 }
2381break;
2382case 214:
2383#line 835 "/usr/src/usr.sbin/nsd/zparser.y"
2384{
2385 /* String must start with "0x" or "0X". */
2386 if (strncasecmp(yyvsp[-1].data.str, "0x", 2) != 0) {
2387 zc_error_prev_line("NSAP rdata must start with '0x'");
2388 } else {
2389 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str + 2, yyvsp[-1].data.len - 2)); /* NSAP */
2390 }
2391 }
2392break;
2393case 215:
2394#line 847 "/usr/src/usr.sbin/nsd/zparser.y"
2395{
2396 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-5].data.str)); /* preference */
2397 zadd_rdata_domain(yyvsp[-3].domain); /* MAP822 */
2398 zadd_rdata_domain(yyvsp[-1].domain); /* MAPX400 */
2399 }
2400break;
2401case 216:
2402#line 855 "/usr/src/usr.sbin/nsd/zparser.y"
2403{
2404 zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, yyvsp[-1].data.str)); /* IPv6 address */
2405 }
2406break;
2407case 217:
2408#line 861 "/usr/src/usr.sbin/nsd/zparser.y"
2409{
2410 zadd_rdata_wireformat(zparser_conv_loc(parser->region, yyvsp[-1].data.str)); /* Location */
2411 }
2412break;
2413case 218:
2414#line 867 "/usr/src/usr.sbin/nsd/zparser.y"
2415{
2416 zadd_rdata_domain(yyvsp[-3].domain); /* nxt name */
2417 zadd_rdata_wireformat(zparser_conv_nxt(parser->region, nxtbits)); /* nxt bitlist */
2418 memset(nxtbits, 0, sizeof(nxtbits));
2419 }
2420break;
2421case 219:
2422#line 875 "/usr/src/usr.sbin/nsd/zparser.y"
2423{
2424 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-7].data.str)); /* prio */
2425 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-5].data.str)); /* weight */
2426 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* port */
2427 zadd_rdata_domain(yyvsp[-1].domain); /* target name */
2428 }
2429break;
2430case 220:
2431#line 885 "/usr/src/usr.sbin/nsd/zparser.y"
2432{
2433 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-11].data.str)); /* order */
2434 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-9].data.str)); /* preference */
2435 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-7].data.str, yyvsp[-7].data.len)); /* flags */
2436 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-5].data.str, yyvsp[-5].data.len)); /* service */
2437 zadd_rdata_wireformat(zparser_conv_text(parser->region, yyvsp[-3].data.str, yyvsp[-3].data.len)); /* regexp */
2438 zadd_rdata_domain(yyvsp[-1].domain); /* target name */
2439 }
2440break;
2441case 221:
2442#line 897 "/usr/src/usr.sbin/nsd/zparser.y"
2443{
2444 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2445 zadd_rdata_domain(yyvsp[-1].domain); /* exchanger */
2446 }
2447break;
2448case 222:
2449#line 905 "/usr/src/usr.sbin/nsd/zparser.y"
2450{
2451 zadd_rdata_wireformat(zparser_conv_certificate_type(parser->region, yyvsp[-7].data.str)); /* type */
2452 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-5].data.str)); /* key tag */
2453 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, yyvsp[-3].data.str)); /* algorithm */
2454 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str)); /* certificate or CRL */
2455 }
2456break;
2457case 224:
2458#line 918 "/usr/src/usr.sbin/nsd/zparser.y"
2459{
2460 zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, yyvsp[0].data.str));
2461 }
2462break;
2463case 225:
2464#line 922 "/usr/src/usr.sbin/nsd/zparser.y"
2465{
2466 zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, yyvsp[0].data.str));
2467 }
2468break;
2469case 226:
2470#line 928 "/usr/src/usr.sbin/nsd/zparser.y"
2471{
2472 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-7].data.str)); /* keytag */
2473 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, yyvsp[-5].data.str)); /* alg */
2474 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* type */
2475 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* hash */
2476 }
2477break;
2478case 227:
2479#line 937 "/usr/src/usr.sbin/nsd/zparser.y"
2480{
2481 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-7].data.str)); /* keytag */
2482 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, yyvsp[-5].data.str)); /* alg */
2483 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* type */
2484 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* hash */
2485 }
2486break;
2487case 228:
2488#line 946 "/usr/src/usr.sbin/nsd/zparser.y"
2489{
2490 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* alg */
2491 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* fp type */
2492 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* hash */
2493 check_sshfp();
2494 }
2495break;
2496case 229:
2497#line 955 "/usr/src/usr.sbin/nsd/zparser.y"
2498{
2499 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str)); /* data blob */
2500 }
2501break;
2502case 230:
2503#line 961 "/usr/src/usr.sbin/nsd/zparser.y"
2504{
2505 zadd_rdata_wireformat(zparser_conv_rrtype(parser->region, yyvsp[-17].data.str)); /* rr covered */
2506 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, yyvsp[-15].data.str)); /* alg */
2507 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-13].data.str)); /* # labels */
2508 zadd_rdata_wireformat(zparser_conv_period(parser->region, yyvsp[-11].data.str)); /* # orig TTL */
2509 zadd_rdata_wireformat(zparser_conv_time(parser->region, yyvsp[-9].data.str)); /* sig exp */
2510 zadd_rdata_wireformat(zparser_conv_time(parser->region, yyvsp[-7].data.str)); /* sig inc */
2511 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-5].data.str)); /* key id */
2512 zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
2513 (const uint8_t*) yyvsp[-3].data.str,yyvsp[-3].data.len)); /* sig name */
2514 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str)); /* sig data */
2515 }
2516break;
2517case 231:
2518#line 976 "/usr/src/usr.sbin/nsd/zparser.y"
2519{
2520 zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
2521 (const uint8_t*) yyvsp[-1].data.str, yyvsp[-1].data.len)); /* nsec name */
2522 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
2523 memset(nsecbits, 0, sizeof(nsecbits));
2524 nsec_highest_rcode = 0;
2525 }
2526break;
2527case 232:
2528#line 986 "/usr/src/usr.sbin/nsd/zparser.y"
2529{
2530#ifdef NSEC3
2531 nsec3_add_params(yyvsp[-9].data.str, yyvsp[-7].data.str, yyvsp[-5].data.str, yyvsp[-3].data.str, yyvsp[-3].data.len);
2532
2533 zadd_rdata_wireformat(zparser_conv_b32(parser->region, yyvsp[-1].data.str)); /* next hashed name */
2534 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
2535 memset(nsecbits, 0, sizeof(nsecbits));
2536 nsec_highest_rcode = 0;
2537#else
2538 zc_error_prev_line("nsec3 not supported");
2539#endif /* NSEC3 */
2540 }
2541break;
2542case 233:
2543#line 1001 "/usr/src/usr.sbin/nsd/zparser.y"
2544{
2545#ifdef NSEC3
2546 nsec3_add_params(yyvsp[-7].data.str, yyvsp[-5].data.str, yyvsp[-3].data.str, yyvsp[-1].data.str, yyvsp[-1].data.len);
2547#else
2548 zc_error_prev_line("nsec3 not supported");
2549#endif /* NSEC3 */
2550 }
2551break;
2552case 234:
2553#line 1011 "/usr/src/usr.sbin/nsd/zparser.y"
2554{
2555 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-7].data.str)); /* usage */
2556 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* selector */
2557 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* matching type */
2558 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* ca data */
2559 }
2560break;
2561case 235:
2562#line 1020 "/usr/src/usr.sbin/nsd/zparser.y"
2563{
2564 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-7].data.str)); /* usage */
2565 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* selector */
2566 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* matching type */
2567 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* ca data */
2568 }
2569break;
2570case 236:
2571#line 1029 "/usr/src/usr.sbin/nsd/zparser.y"
2572{
2573 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-7].data.str)); /* flags */
2574 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* proto */
2575 zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, yyvsp[-3].data.str)); /* alg */
2576 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str)); /* hash */
2577 }
2578break;
2579case 237:
2580#line 1038 "/usr/src/usr.sbin/nsd/zparser.y"
2581{
2582 const dname_type* name = 0;
2583 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-6].data.str)); /* precedence */
2584 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-4].data.str)); /* gateway type */
2585 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-2].data.str)); /* algorithm */
2586 switch(atoi(yyvsp[-4].data.str)) {
2587 case IPSECKEY_NOGATEWAY0:
2588 zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 0));
2589 break;
2590 case IPSECKEY_IP41:
2591 zadd_rdata_wireformat(zparser_conv_a(parser->region, yyvsp[0].data.str));
2592 break;
2593 case IPSECKEY_IP62:
2594 zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, yyvsp[0].data.str));
2595 break;
2596 case IPSECKEY_DNAME3:
2597 /* convert and insert the dname */
2598 if(strlen(yyvsp[0].data.str) == 0)
2599 zc_error_prev_line("IPSECKEY must specify gateway name");
2600 if(!(name = dname_parse(parser->region, yyvsp[0].data.str))) {
2601 zc_error_prev_line("IPSECKEY bad gateway dname %s", yyvsp[0].data.str);
2602 break;
2603 }
2604 if(yyvsp[0].data.str[strlen(yyvsp[0].data.str)-1] != '.') {
2605 if(parser->origin == error_domain) {
2606 zc_error("cannot concatenate origin to domain name, because origin failed to parse");
2607 break;
2608 } else if(name->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN255) {
2609 zc_error("ipsec gateway name exceeds %d character limit",
2610 MAXDOMAINLEN255);
2611 break;
2612 }
2613 name = dname_concatenate(parser->rr_region, name,
2614 domain_dname(parser->origin));
2615 }
2616 zadd_rdata_wireformat(alloc_rdata_init(parser->region,
2617 dname_name(name), name->name_size));
2618 break;
2619 default:
2620 zc_error_prev_line("unknown IPSECKEY gateway type");
2621 }
2622 }
2623break;
2624case 238:
2625#line 1083 "/usr/src/usr.sbin/nsd/zparser.y"
2626{
2627 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str)); /* public key */
2628 }
2629break;
2630case 240:
2631#line 1091 "/usr/src/usr.sbin/nsd/zparser.y"
2632{
2633 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2634 zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, yyvsp[-1].data.str)); /* NodeID */
2635 }
2636break;
2637case 241:
2638#line 1098 "/usr/src/usr.sbin/nsd/zparser.y"
2639{
2640 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2641 zadd_rdata_wireformat(zparser_conv_a(parser->region, yyvsp[-1].data.str)); /* Locator32 */
2642 }
2643break;
2644case 242:
2645#line 1105 "/usr/src/usr.sbin/nsd/zparser.y"
2646{
2647 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2648 zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, yyvsp[-1].data.str)); /* Locator64 */
2649 }
2650break;
2651case 243:
2652#line 1112 "/usr/src/usr.sbin/nsd/zparser.y"
2653{
2654 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* preference */
2655 zadd_rdata_domain(yyvsp[-1].domain); /* FQDN */
2656 }
2657break;
2658case 244:
2659#line 1119 "/usr/src/usr.sbin/nsd/zparser.y"
2660{
2661 zadd_rdata_wireformat(zparser_conv_eui(parser->region, yyvsp[-1].data.str, 48));
2662 }
2663break;
2664case 245:
2665#line 1125 "/usr/src/usr.sbin/nsd/zparser.y"
2666{
2667 zadd_rdata_wireformat(zparser_conv_eui(parser->region, yyvsp[-1].data.str, 64));
2668 }
2669break;
2670case 246:
2671#line 1132 "/usr/src/usr.sbin/nsd/zparser.y"
2672{
2673 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-5].data.str)); /* priority */
2674 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-3].data.str)); /* weight */
2675 zadd_rdata_wireformat(zparser_conv_long_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* target */
2676 }
2677break;
2678case 247:
2679#line 1141 "/usr/src/usr.sbin/nsd/zparser.y"
2680{
2681 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* Flags */
2682 zadd_rdata_wireformat(zparser_conv_tag(parser->region, yyvsp[-3].data.str, yyvsp[-3].data.len)); /* Tag */
2683 zadd_rdata_wireformat(zparser_conv_long_text(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* Value */
2684 }
2685break;
2686case 248:
2687#line 1150 "/usr/src/usr.sbin/nsd/zparser.y"
2688{
2689 zadd_rdata_wireformat(zparser_conv_b64(parser->region, yyvsp[-1].data.str));
2690 }
2691break;
2692case 249:
2693#line 1157 "/usr/src/usr.sbin/nsd/zparser.y"
2694{
2695 zadd_rdata_wireformat(zparser_conv_serial(parser->region, yyvsp[-3].data.str));
2696 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-1].data.str));
2697 zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
2698 memset(nsecbits, 0, sizeof(nsecbits));
2699 nsec_highest_rcode = 0;
2700 }
2701break;
2702case 250:
2703#line 1168 "/usr/src/usr.sbin/nsd/zparser.y"
2704{
2705 zadd_rdata_wireformat(zparser_conv_serial(parser->region, yyvsp[-7].data.str)); /* serial */
2706 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-5].data.str)); /* scheme */
2707 zadd_rdata_wireformat(zparser_conv_byte(parser->region, yyvsp[-3].data.str)); /* hash algorithm */
2708 zadd_rdata_wireformat(zparser_conv_hex(parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len)); /* digest */
2709 }
2710break;
2711case 251:
2712#line 1177 "/usr/src/usr.sbin/nsd/zparser.y"
2713{
2714 zadd_rdata_wireformat(zparser_conv_svcbparam(
2715 parser->region, yyvsp[-1].data.str, yyvsp[-1].data.len, yyvsp[0].data.str, yyvsp[0].data.len));
2716 }
2717break;
2718case 252:
2719#line 1182 "/usr/src/usr.sbin/nsd/zparser.y"
2720{
2721 zadd_rdata_wireformat(zparser_conv_svcbparam(
2722 parser->region, yyvsp[0].data.str, yyvsp[0].data.len, NULL((void*)0), 0));
2723 }
2724break;
2725case 255:
2726#line 1192 "/usr/src/usr.sbin/nsd/zparser.y"
2727{
2728 /* SvcFieldPriority */
2729 zadd_rdata_wireformat(zparser_conv_short(parser->region, yyvsp[-2].data.str));
2730 /* SvcDomainName */
2731 zadd_rdata_domain(yyvsp[0].domain);
2732 }
2733break;
2734case 256:
2735#line 1199 "/usr/src/usr.sbin/nsd/zparser.y"
2736{
2737 zadd_rdata_svcb_check_wireformat();
2738 }
2739break;
2740case 258:
2741#line 1206 "/usr/src/usr.sbin/nsd/zparser.y"
2742{
2743 /* $2 is the number of octets, currently ignored */
2744 yyval.unknown = zparser_conv_hex(parser->rr_region, yyvsp[-1].data.str, yyvsp[-1].data.len);
2745
2746 }
2747break;
2748case 259:
2749#line 1212 "/usr/src/usr.sbin/nsd/zparser.y"
2750{
2751 yyval.unknown = zparser_conv_hex(parser->rr_region, "", 0);
2752 }
2753break;
2754case 260:
2755#line 1216 "/usr/src/usr.sbin/nsd/zparser.y"
2756{
2757 yyval.unknown = zparser_conv_hex(parser->rr_region, "", 0);
2758 }
2759break;
2760#line 2753 "zparser.c"
2761 }
2762 yyssp -= yym;
2763 yystate = *yyssp;
2764 yyvsp -= yym;
2765 yym = yylhs[yyn];
2766 if (yystate == 0 && yym == 0)
2767 {
2768#if YYDEBUG0
2769 if (yydebug)
2770 printf("%sdebug: after reduction, shifting from state 0 to\
2771 state %d\n", YYPREFIX"yy", YYFINAL1);
2772#endif
2773 yystate = YYFINAL1;
2774 *++yyssp = YYFINAL1;
2775 *++yyvsp = yyval;
2776 if (yychar < 0)
2777 {
2778 if ((yychar = yylex()) < 0) yychar = 0;
2779#if YYDEBUG0
2780 if (yydebug)
2781 {
2782 yys = 0;
2783 if (yychar <= YYMAXTOKEN349) yys = yyname[yychar];
2784 if (!yys) yys = "illegal-symbol";
2785 printf("%sdebug: state %d, reading %d (%s)\n",
2786 YYPREFIX"yy", YYFINAL1, yychar, yys);
2787 }
2788#endif
2789 }
2790 if (yychar == 0) goto yyaccept;
2791 goto yyloop;
2792 }
2793 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
2794 yyn <= YYTABLESIZE2053 && yycheck[yyn] == yystate)
2795 yystate = yytable[yyn];
2796 else
2797 yystate = yydgoto[yym];
2798#if YYDEBUG0
2799 if (yydebug)
2800 printf("%sdebug: after reduction, shifting from state %d \
2801to state %d\n", YYPREFIX"yy", *yyssp, yystate);
2802#endif
2803 if (yyssp >= yysslim && yygrowstack())
2804 {
2805 goto yyoverflow;
2806 }
2807 *++yyssp = yystate;
2808 *++yyvsp = yyval;
2809 goto yyloop;
2810yyoverflow:
2811 yyerror("yacc stack overflow");
2812yyabort:
2813 if (yyss)
2814 free(yyss);
2815 if (yyvs)
2816 free(yyvs);
2817 yyss = yyssp = NULL((void*)0);
2818 yyvs = yyvsp = NULL((void*)0);
2819 yystacksize = 0;
2820 return (1);
2821yyaccept:
2822 if (yyss)
2823 free(yyss);
2824 if (yyvs)
2825 free(yyvs);
2826 yyss = yyssp = NULL((void*)0);
2827 yyvs = yyvsp = NULL((void*)0);
2828 yystacksize = 0;
2829 return (0);
2830}