]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ntp/ntpd/ntp_parser.c
Fix multiple denial of service in ntpd.
[FreeBSD/FreeBSD.git] / contrib / ntp / ntpd / ntp_parser.c
1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42
43 /* Identify Bison output.  */
44 #define YYBISON 1
45
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers.  */
53 #define YYPURE 0
54
55 /* Push parsers.  */
56 #define YYPUSH 0
57
58 /* Pull parsers.  */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations.  */
65 #line 11 "../../ntpd/ntp_parser.y" /* yacc.c:339  */
66
67   #ifdef HAVE_CONFIG_H
68   # include <config.h>
69   #endif
70
71   #include "ntp.h"
72   #include "ntpd.h"
73   #include "ntp_machine.h"
74   #include "ntp_stdlib.h"
75   #include "ntp_filegen.h"
76   #include "ntp_scanner.h"
77   #include "ntp_config.h"
78   #include "ntp_crypto.h"
79   #include "ntp_calendar.h"
80
81   #include "ntpsim.h"           /* HMS: Do we really want this all the time? */
82                                 /* SK: It might be a good idea to always
83                                    include the simulator code. That way
84                                    someone can use the same configuration file
85                                    for both the simulator and the daemon
86                                 */
87
88   #define YYMALLOC      emalloc
89   #define YYFREE        free
90   #define YYERROR_VERBOSE
91   #define YYMAXDEPTH    1000    /* stop the madness sooner */
92   void yyerror(const char *msg);
93
94   #ifdef SIM
95   #  define ONLY_SIM(a) (a)
96   #else
97   #  define ONLY_SIM(a) NULL
98   #endif
99
100 #line 101 "../../ntpd/ntp_parser.c" /* yacc.c:339  */
101
102 # ifndef YY_NULLPTR
103 #  if defined __cplusplus && 201103L <= __cplusplus
104 #   define YY_NULLPTR nullptr
105 #  else
106 #   define YY_NULLPTR 0
107 #  endif
108 # endif
109
110 /* Enabling verbose error messages.  */
111 #ifdef YYERROR_VERBOSE
112 # undef YYERROR_VERBOSE
113 # define YYERROR_VERBOSE 1
114 #else
115 # define YYERROR_VERBOSE 0
116 #endif
117
118 /* In a future release of Bison, this section will be replaced
119    by #include "y.tab.h".  */
120 #ifndef YY_YY__NTPD_NTP_PARSER_H_INCLUDED
121 # define YY_YY__NTPD_NTP_PARSER_H_INCLUDED
122 /* Debug traces.  */
123 #ifndef YYDEBUG
124 # define YYDEBUG 1
125 #endif
126 #if YYDEBUG
127 extern int yydebug;
128 #endif
129
130 /* Token type.  */
131 #ifndef YYTOKENTYPE
132 # define YYTOKENTYPE
133   enum yytokentype
134   {
135     T_Abbrev = 258,
136     T_Age = 259,
137     T_All = 260,
138     T_Allan = 261,
139     T_Allpeers = 262,
140     T_Auth = 263,
141     T_Autokey = 264,
142     T_Automax = 265,
143     T_Average = 266,
144     T_Basedate = 267,
145     T_Bclient = 268,
146     T_Bcpollbstep = 269,
147     T_Beacon = 270,
148     T_Broadcast = 271,
149     T_Broadcastclient = 272,
150     T_Broadcastdelay = 273,
151     T_Burst = 274,
152     T_Calibrate = 275,
153     T_Ceiling = 276,
154     T_Checkhash = 277,
155     T_Clockstats = 278,
156     T_Cohort = 279,
157     T_ControlKey = 280,
158     T_Crypto = 281,
159     T_Cryptostats = 282,
160     T_Ctl = 283,
161     T_Day = 284,
162     T_Default = 285,
163     T_Digest = 286,
164     T_Disable = 287,
165     T_Discard = 288,
166     T_Dispersion = 289,
167     T_Double = 290,
168     T_Driftfile = 291,
169     T_Drop = 292,
170     T_Dscp = 293,
171     T_Ellipsis = 294,
172     T_Enable = 295,
173     T_End = 296,
174     T_Epeer = 297,
175     T_False = 298,
176     T_File = 299,
177     T_Filegen = 300,
178     T_Filenum = 301,
179     T_Flag1 = 302,
180     T_Flag2 = 303,
181     T_Flag3 = 304,
182     T_Flag4 = 305,
183     T_Flake = 306,
184     T_Floor = 307,
185     T_Freq = 308,
186     T_Fudge = 309,
187     T_Fuzz = 310,
188     T_Host = 311,
189     T_Huffpuff = 312,
190     T_Iburst = 313,
191     T_Ident = 314,
192     T_Ignore = 315,
193     T_Ignorehash = 316,
194     T_Incalloc = 317,
195     T_Incmem = 318,
196     T_Initalloc = 319,
197     T_Initmem = 320,
198     T_Includefile = 321,
199     T_Integer = 322,
200     T_Interface = 323,
201     T_Intrange = 324,
202     T_Io = 325,
203     T_Ippeerlimit = 326,
204     T_Ipv4 = 327,
205     T_Ipv4_flag = 328,
206     T_Ipv6 = 329,
207     T_Ipv6_flag = 330,
208     T_Kernel = 331,
209     T_Key = 332,
210     T_Keys = 333,
211     T_Keysdir = 334,
212     T_Kod = 335,
213     T_Leapfile = 336,
214     T_Leapsmearinterval = 337,
215     T_Limited = 338,
216     T_Link = 339,
217     T_Listen = 340,
218     T_Logconfig = 341,
219     T_Logfile = 342,
220     T_Loopstats = 343,
221     T_Lowpriotrap = 344,
222     T_Manycastclient = 345,
223     T_Manycastserver = 346,
224     T_Mask = 347,
225     T_Maxage = 348,
226     T_Maxclock = 349,
227     T_Maxdepth = 350,
228     T_Maxdist = 351,
229     T_Maxmem = 352,
230     T_Maxpoll = 353,
231     T_Mdnstries = 354,
232     T_Mem = 355,
233     T_Memlock = 356,
234     T_Minclock = 357,
235     T_Mindepth = 358,
236     T_Mindist = 359,
237     T_Minimum = 360,
238     T_Minjitter = 361,
239     T_Minpoll = 362,
240     T_Minsane = 363,
241     T_Mode = 364,
242     T_Mode7 = 365,
243     T_Monitor = 366,
244     T_Month = 367,
245     T_Mru = 368,
246     T_Mssntp = 369,
247     T_Multicastclient = 370,
248     T_Nic = 371,
249     T_Nolink = 372,
250     T_Nomodify = 373,
251     T_Nomrulist = 374,
252     T_None = 375,
253     T_Nonvolatile = 376,
254     T_Noepeer = 377,
255     T_Nopeer = 378,
256     T_Noquery = 379,
257     T_Noselect = 380,
258     T_Noserve = 381,
259     T_Notrap = 382,
260     T_Notrust = 383,
261     T_Ntp = 384,
262     T_Ntpport = 385,
263     T_NtpSignDsocket = 386,
264     T_Orphan = 387,
265     T_Orphanwait = 388,
266     T_PCEdigest = 389,
267     T_Panic = 390,
268     T_Peer = 391,
269     T_Peerstats = 392,
270     T_Phone = 393,
271     T_Pid = 394,
272     T_Pidfile = 395,
273     T_Poll = 396,
274     T_PollSkewList = 397,
275     T_Pool = 398,
276     T_Port = 399,
277     T_Preempt = 400,
278     T_Prefer = 401,
279     T_Protostats = 402,
280     T_Pw = 403,
281     T_Randfile = 404,
282     T_Rawstats = 405,
283     T_Refid = 406,
284     T_Requestkey = 407,
285     T_Reset = 408,
286     T_Restrict = 409,
287     T_Revoke = 410,
288     T_Rlimit = 411,
289     T_Saveconfigdir = 412,
290     T_Server = 413,
291     T_Serverresponse = 414,
292     T_ServerresponseFuzz = 415,
293     T_Setvar = 416,
294     T_Source = 417,
295     T_Stacksize = 418,
296     T_Statistics = 419,
297     T_Stats = 420,
298     T_Statsdir = 421,
299     T_Step = 422,
300     T_Stepback = 423,
301     T_Stepfwd = 424,
302     T_Stepout = 425,
303     T_Stratum = 426,
304     T_String = 427,
305     T_Sys = 428,
306     T_Sysstats = 429,
307     T_Tick = 430,
308     T_Time1 = 431,
309     T_Time2 = 432,
310     T_Timer = 433,
311     T_Timingstats = 434,
312     T_Tinker = 435,
313     T_Tos = 436,
314     T_Trap = 437,
315     T_True = 438,
316     T_Trustedkey = 439,
317     T_Ttl = 440,
318     T_Type = 441,
319     T_U_int = 442,
320     T_UEcrypto = 443,
321     T_UEcryptonak = 444,
322     T_UEdigest = 445,
323     T_Unconfig = 446,
324     T_Unpeer = 447,
325     T_Version = 448,
326     T_WanderThreshold = 449,
327     T_Week = 450,
328     T_Wildcard = 451,
329     T_Xleave = 452,
330     T_Xmtnonce = 453,
331     T_Year = 454,
332     T_Flag = 455,
333     T_EOC = 456,
334     T_Simulate = 457,
335     T_Beep_Delay = 458,
336     T_Sim_Duration = 459,
337     T_Server_Offset = 460,
338     T_Duration = 461,
339     T_Freq_Offset = 462,
340     T_Wander = 463,
341     T_Jitter = 464,
342     T_Prop_Delay = 465,
343     T_Proc_Delay = 466
344   };
345 #endif
346 /* Tokens.  */
347 #define T_Abbrev 258
348 #define T_Age 259
349 #define T_All 260
350 #define T_Allan 261
351 #define T_Allpeers 262
352 #define T_Auth 263
353 #define T_Autokey 264
354 #define T_Automax 265
355 #define T_Average 266
356 #define T_Basedate 267
357 #define T_Bclient 268
358 #define T_Bcpollbstep 269
359 #define T_Beacon 270
360 #define T_Broadcast 271
361 #define T_Broadcastclient 272
362 #define T_Broadcastdelay 273
363 #define T_Burst 274
364 #define T_Calibrate 275
365 #define T_Ceiling 276
366 #define T_Checkhash 277
367 #define T_Clockstats 278
368 #define T_Cohort 279
369 #define T_ControlKey 280
370 #define T_Crypto 281
371 #define T_Cryptostats 282
372 #define T_Ctl 283
373 #define T_Day 284
374 #define T_Default 285
375 #define T_Digest 286
376 #define T_Disable 287
377 #define T_Discard 288
378 #define T_Dispersion 289
379 #define T_Double 290
380 #define T_Driftfile 291
381 #define T_Drop 292
382 #define T_Dscp 293
383 #define T_Ellipsis 294
384 #define T_Enable 295
385 #define T_End 296
386 #define T_Epeer 297
387 #define T_False 298
388 #define T_File 299
389 #define T_Filegen 300
390 #define T_Filenum 301
391 #define T_Flag1 302
392 #define T_Flag2 303
393 #define T_Flag3 304
394 #define T_Flag4 305
395 #define T_Flake 306
396 #define T_Floor 307
397 #define T_Freq 308
398 #define T_Fudge 309
399 #define T_Fuzz 310
400 #define T_Host 311
401 #define T_Huffpuff 312
402 #define T_Iburst 313
403 #define T_Ident 314
404 #define T_Ignore 315
405 #define T_Ignorehash 316
406 #define T_Incalloc 317
407 #define T_Incmem 318
408 #define T_Initalloc 319
409 #define T_Initmem 320
410 #define T_Includefile 321
411 #define T_Integer 322
412 #define T_Interface 323
413 #define T_Intrange 324
414 #define T_Io 325
415 #define T_Ippeerlimit 326
416 #define T_Ipv4 327
417 #define T_Ipv4_flag 328
418 #define T_Ipv6 329
419 #define T_Ipv6_flag 330
420 #define T_Kernel 331
421 #define T_Key 332
422 #define T_Keys 333
423 #define T_Keysdir 334
424 #define T_Kod 335
425 #define T_Leapfile 336
426 #define T_Leapsmearinterval 337
427 #define T_Limited 338
428 #define T_Link 339
429 #define T_Listen 340
430 #define T_Logconfig 341
431 #define T_Logfile 342
432 #define T_Loopstats 343
433 #define T_Lowpriotrap 344
434 #define T_Manycastclient 345
435 #define T_Manycastserver 346
436 #define T_Mask 347
437 #define T_Maxage 348
438 #define T_Maxclock 349
439 #define T_Maxdepth 350
440 #define T_Maxdist 351
441 #define T_Maxmem 352
442 #define T_Maxpoll 353
443 #define T_Mdnstries 354
444 #define T_Mem 355
445 #define T_Memlock 356
446 #define T_Minclock 357
447 #define T_Mindepth 358
448 #define T_Mindist 359
449 #define T_Minimum 360
450 #define T_Minjitter 361
451 #define T_Minpoll 362
452 #define T_Minsane 363
453 #define T_Mode 364
454 #define T_Mode7 365
455 #define T_Monitor 366
456 #define T_Month 367
457 #define T_Mru 368
458 #define T_Mssntp 369
459 #define T_Multicastclient 370
460 #define T_Nic 371
461 #define T_Nolink 372
462 #define T_Nomodify 373
463 #define T_Nomrulist 374
464 #define T_None 375
465 #define T_Nonvolatile 376
466 #define T_Noepeer 377
467 #define T_Nopeer 378
468 #define T_Noquery 379
469 #define T_Noselect 380
470 #define T_Noserve 381
471 #define T_Notrap 382
472 #define T_Notrust 383
473 #define T_Ntp 384
474 #define T_Ntpport 385
475 #define T_NtpSignDsocket 386
476 #define T_Orphan 387
477 #define T_Orphanwait 388
478 #define T_PCEdigest 389
479 #define T_Panic 390
480 #define T_Peer 391
481 #define T_Peerstats 392
482 #define T_Phone 393
483 #define T_Pid 394
484 #define T_Pidfile 395
485 #define T_Poll 396
486 #define T_PollSkewList 397
487 #define T_Pool 398
488 #define T_Port 399
489 #define T_Preempt 400
490 #define T_Prefer 401
491 #define T_Protostats 402
492 #define T_Pw 403
493 #define T_Randfile 404
494 #define T_Rawstats 405
495 #define T_Refid 406
496 #define T_Requestkey 407
497 #define T_Reset 408
498 #define T_Restrict 409
499 #define T_Revoke 410
500 #define T_Rlimit 411
501 #define T_Saveconfigdir 412
502 #define T_Server 413
503 #define T_Serverresponse 414
504 #define T_ServerresponseFuzz 415
505 #define T_Setvar 416
506 #define T_Source 417
507 #define T_Stacksize 418
508 #define T_Statistics 419
509 #define T_Stats 420
510 #define T_Statsdir 421
511 #define T_Step 422
512 #define T_Stepback 423
513 #define T_Stepfwd 424
514 #define T_Stepout 425
515 #define T_Stratum 426
516 #define T_String 427
517 #define T_Sys 428
518 #define T_Sysstats 429
519 #define T_Tick 430
520 #define T_Time1 431
521 #define T_Time2 432
522 #define T_Timer 433
523 #define T_Timingstats 434
524 #define T_Tinker 435
525 #define T_Tos 436
526 #define T_Trap 437
527 #define T_True 438
528 #define T_Trustedkey 439
529 #define T_Ttl 440
530 #define T_Type 441
531 #define T_U_int 442
532 #define T_UEcrypto 443
533 #define T_UEcryptonak 444
534 #define T_UEdigest 445
535 #define T_Unconfig 446
536 #define T_Unpeer 447
537 #define T_Version 448
538 #define T_WanderThreshold 449
539 #define T_Week 450
540 #define T_Wildcard 451
541 #define T_Xleave 452
542 #define T_Xmtnonce 453
543 #define T_Year 454
544 #define T_Flag 455
545 #define T_EOC 456
546 #define T_Simulate 457
547 #define T_Beep_Delay 458
548 #define T_Sim_Duration 459
549 #define T_Server_Offset 460
550 #define T_Duration 461
551 #define T_Freq_Offset 462
552 #define T_Wander 463
553 #define T_Jitter 464
554 #define T_Prop_Delay 465
555 #define T_Proc_Delay 466
556
557 /* Value type.  */
558 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
559
560 union YYSTYPE
561 {
562 #line 52 "../../ntpd/ntp_parser.y" /* yacc.c:355  */
563
564         char *                  String;
565         double                  Double;
566         int                     Integer;
567         unsigned                U_int;
568         gen_fifo *              Generic_fifo;
569         attr_val *              Attr_val;
570         attr_val_fifo *         Attr_val_fifo;
571         int_fifo *              Int_fifo;
572         string_fifo *           String_fifo;
573         address_node *          Address_node;
574         address_fifo *          Address_fifo;
575         setvar_node *           Set_var;
576         server_info *           Sim_server;
577         server_info_fifo *      Sim_server_fifo;
578         script_info *           Sim_script;
579         script_info_fifo *      Sim_script_fifo;
580
581 #line 582 "../../ntpd/ntp_parser.c" /* yacc.c:355  */
582 };
583
584 typedef union YYSTYPE YYSTYPE;
585 # define YYSTYPE_IS_TRIVIAL 1
586 # define YYSTYPE_IS_DECLARED 1
587 #endif
588
589
590 extern YYSTYPE yylval;
591
592 int yyparse (void);
593
594 #endif /* !YY_YY__NTPD_NTP_PARSER_H_INCLUDED  */
595
596 /* Copy the second part of user declarations.  */
597
598 #line 599 "../../ntpd/ntp_parser.c" /* yacc.c:358  */
599
600 #ifdef short
601 # undef short
602 #endif
603
604 #ifdef YYTYPE_UINT8
605 typedef YYTYPE_UINT8 yytype_uint8;
606 #else
607 typedef unsigned char yytype_uint8;
608 #endif
609
610 #ifdef YYTYPE_INT8
611 typedef YYTYPE_INT8 yytype_int8;
612 #else
613 typedef signed char yytype_int8;
614 #endif
615
616 #ifdef YYTYPE_UINT16
617 typedef YYTYPE_UINT16 yytype_uint16;
618 #else
619 typedef unsigned short int yytype_uint16;
620 #endif
621
622 #ifdef YYTYPE_INT16
623 typedef YYTYPE_INT16 yytype_int16;
624 #else
625 typedef short int yytype_int16;
626 #endif
627
628 #ifndef YYSIZE_T
629 # ifdef __SIZE_TYPE__
630 #  define YYSIZE_T __SIZE_TYPE__
631 # elif defined size_t
632 #  define YYSIZE_T size_t
633 # elif ! defined YYSIZE_T
634 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
635 #  define YYSIZE_T size_t
636 # else
637 #  define YYSIZE_T unsigned int
638 # endif
639 #endif
640
641 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
642
643 #ifndef YY_
644 # if defined YYENABLE_NLS && YYENABLE_NLS
645 #  if ENABLE_NLS
646 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
647 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
648 #  endif
649 # endif
650 # ifndef YY_
651 #  define YY_(Msgid) Msgid
652 # endif
653 #endif
654
655 #ifndef YY_ATTRIBUTE
656 # if (defined __GNUC__                                               \
657       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
658      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
659 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
660 # else
661 #  define YY_ATTRIBUTE(Spec) /* empty */
662 # endif
663 #endif
664
665 #ifndef YY_ATTRIBUTE_PURE
666 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
667 #endif
668
669 #ifndef YY_ATTRIBUTE_UNUSED
670 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
671 #endif
672
673 #if !defined _Noreturn \
674      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
675 # if defined _MSC_VER && 1200 <= _MSC_VER
676 #  define _Noreturn __declspec (noreturn)
677 # else
678 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
679 # endif
680 #endif
681
682 /* Suppress unused-variable warnings by "using" E.  */
683 #if ! defined lint || defined __GNUC__
684 # define YYUSE(E) ((void) (E))
685 #else
686 # define YYUSE(E) /* empty */
687 #endif
688
689 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
690 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
691 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
692     _Pragma ("GCC diagnostic push") \
693     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
694     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
695 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
696     _Pragma ("GCC diagnostic pop")
697 #else
698 # define YY_INITIAL_VALUE(Value) Value
699 #endif
700 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
701 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
702 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
703 #endif
704 #ifndef YY_INITIAL_VALUE
705 # define YY_INITIAL_VALUE(Value) /* Nothing. */
706 #endif
707
708
709 #if ! defined yyoverflow || YYERROR_VERBOSE
710
711 /* The parser invokes alloca or malloc; define the necessary symbols.  */
712
713 # ifdef YYSTACK_USE_ALLOCA
714 #  if YYSTACK_USE_ALLOCA
715 #   ifdef __GNUC__
716 #    define YYSTACK_ALLOC __builtin_alloca
717 #   elif defined __BUILTIN_VA_ARG_INCR
718 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
719 #   elif defined _AIX
720 #    define YYSTACK_ALLOC __alloca
721 #   elif defined _MSC_VER
722 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
723 #    define alloca _alloca
724 #   else
725 #    define YYSTACK_ALLOC alloca
726 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
727 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
728       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
729 #     ifndef EXIT_SUCCESS
730 #      define EXIT_SUCCESS 0
731 #     endif
732 #    endif
733 #   endif
734 #  endif
735 # endif
736
737 # ifdef YYSTACK_ALLOC
738    /* Pacify GCC's 'empty if-body' warning.  */
739 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
740 #  ifndef YYSTACK_ALLOC_MAXIMUM
741     /* The OS might guarantee only one guard page at the bottom of the stack,
742        and a page size can be as small as 4096 bytes.  So we cannot safely
743        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
744        to allow for a few compiler-allocated temporary stack slots.  */
745 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
746 #  endif
747 # else
748 #  define YYSTACK_ALLOC YYMALLOC
749 #  define YYSTACK_FREE YYFREE
750 #  ifndef YYSTACK_ALLOC_MAXIMUM
751 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
752 #  endif
753 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
754        && ! ((defined YYMALLOC || defined malloc) \
755              && (defined YYFREE || defined free)))
756 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
757 #   ifndef EXIT_SUCCESS
758 #    define EXIT_SUCCESS 0
759 #   endif
760 #  endif
761 #  ifndef YYMALLOC
762 #   define YYMALLOC malloc
763 #   if ! defined malloc && ! defined EXIT_SUCCESS
764 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
765 #   endif
766 #  endif
767 #  ifndef YYFREE
768 #   define YYFREE free
769 #   if ! defined free && ! defined EXIT_SUCCESS
770 void free (void *); /* INFRINGES ON USER NAME SPACE */
771 #   endif
772 #  endif
773 # endif
774 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
775
776
777 #if (! defined yyoverflow \
778      && (! defined __cplusplus \
779          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
780
781 /* A type that is properly aligned for any stack member.  */
782 union yyalloc
783 {
784   yytype_int16 yyss_alloc;
785   YYSTYPE yyvs_alloc;
786 };
787
788 /* The size of the maximum gap between one aligned stack and the next.  */
789 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
790
791 /* The size of an array large to enough to hold all stacks, each with
792    N elements.  */
793 # define YYSTACK_BYTES(N) \
794      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
795       + YYSTACK_GAP_MAXIMUM)
796
797 # define YYCOPY_NEEDED 1
798
799 /* Relocate STACK from its old location to the new one.  The
800    local variables YYSIZE and YYSTACKSIZE give the old and new number of
801    elements in the stack, and YYPTR gives the new location of the
802    stack.  Advance YYPTR to a properly aligned location for the next
803    stack.  */
804 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
805     do                                                                  \
806       {                                                                 \
807         YYSIZE_T yynewbytes;                                            \
808         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
809         Stack = &yyptr->Stack_alloc;                                    \
810         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
811         yyptr += yynewbytes / sizeof (*yyptr);                          \
812       }                                                                 \
813     while (0)
814
815 #endif
816
817 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
818 /* Copy COUNT objects from SRC to DST.  The source and destination do
819    not overlap.  */
820 # ifndef YYCOPY
821 #  if defined __GNUC__ && 1 < __GNUC__
822 #   define YYCOPY(Dst, Src, Count) \
823       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
824 #  else
825 #   define YYCOPY(Dst, Src, Count)              \
826       do                                        \
827         {                                       \
828           YYSIZE_T yyi;                         \
829           for (yyi = 0; yyi < (Count); yyi++)   \
830             (Dst)[yyi] = (Src)[yyi];            \
831         }                                       \
832       while (0)
833 #  endif
834 # endif
835 #endif /* !YYCOPY_NEEDED */
836
837 /* YYFINAL -- State number of the termination state.  */
838 #define YYFINAL  219
839 /* YYLAST -- Last index in YYTABLE.  */
840 #define YYLAST   740
841
842 /* YYNTOKENS -- Number of terminals.  */
843 #define YYNTOKENS  218
844 /* YYNNTS -- Number of nonterminals.  */
845 #define YYNNTS  111
846 /* YYNRULES -- Number of rules.  */
847 #define YYNRULES  336
848 /* YYNSTATES -- Number of states.  */
849 #define YYNSTATES  453
850
851 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
852    by yylex, with out-of-bounds checking.  */
853 #define YYUNDEFTOK  2
854 #define YYMAXUTOK   466
855
856 #define YYTRANSLATE(YYX)                                                \
857   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
858
859 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
860    as returned by yylex, without out-of-bounds checking.  */
861 static const yytype_uint8 yytranslate[] =
862 {
863        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
864        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
865        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
866        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
867      214,   215,     2,     2,     2,     2,     2,     2,     2,     2,
868        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
869        2,   213,     2,     2,     2,     2,     2,     2,     2,     2,
870        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
871        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
872        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
873        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
874        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
875        2,     2,     2,   216,   212,   217,     2,     2,     2,     2,
876        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
877        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
878        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
879        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
880        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
881        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
882        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
883        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
884        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
885        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
886        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
887        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
888        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
889        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
890       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
891       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
892       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
893       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
894       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
895       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
896       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
897       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
898       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
899      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
900      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
901      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
902      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
903      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
904      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
905      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
906      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
907      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
908      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
909      205,   206,   207,   208,   209,   210,   211
910 };
911
912 #if YYDEBUG
913   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
914 static const yytype_uint16 yyrline[] =
915 {
916        0,   391,   391,   395,   396,   397,   412,   413,   414,   415,
917      416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
918      433,   443,   444,   445,   446,   447,   451,   452,   457,   462,
919      464,   470,   471,   479,   480,   481,   485,   490,   491,   492,
920      493,   494,   495,   496,   497,   498,   502,   504,   509,   510,
921      511,   512,   513,   514,   518,   523,   532,   542,   543,   553,
922      555,   557,   559,   570,   577,   579,   584,   586,   588,   590,
923      592,   602,   608,   609,   617,   619,   631,   632,   633,   634,
924      635,   644,   649,   654,   662,   664,   666,   668,   673,   674,
925      675,   676,   677,   678,   679,   680,   681,   685,   686,   695,
926      697,   706,   716,   721,   729,   730,   731,   732,   733,   734,
927      735,   736,   741,   742,   750,   760,   769,   784,   789,   790,
928      794,   795,   799,   800,   801,   802,   803,   804,   805,   814,
929      818,   822,   830,   838,   846,   861,   876,   889,   890,   910,
930      911,   919,   930,   931,   932,   933,   934,   935,   936,   937,
931      938,   939,   940,   941,   942,   943,   944,   945,   946,   950,
932      955,   963,   968,   969,   970,   974,   979,   987,   992,   993,
933      994,   995,   996,   997,   998,   999,  1007,  1017,  1022,  1030,
934     1032,  1034,  1043,  1045,  1050,  1051,  1052,  1056,  1057,  1058,
935     1059,  1067,  1072,  1077,  1085,  1090,  1091,  1092,  1101,  1103,
936     1108,  1113,  1121,  1123,  1140,  1141,  1142,  1143,  1144,  1145,
937     1149,  1150,  1151,  1152,  1153,  1154,  1162,  1167,  1172,  1180,
938     1185,  1186,  1187,  1188,  1189,  1190,  1191,  1192,  1193,  1194,
939     1203,  1204,  1205,  1212,  1219,  1226,  1242,  1261,  1269,  1271,
940     1273,  1275,  1277,  1279,  1281,  1288,  1293,  1294,  1295,  1299,
941     1303,  1312,  1314,  1317,  1321,  1325,  1326,  1327,  1331,  1342,
942     1360,  1373,  1374,  1379,  1405,  1406,  1411,  1416,  1418,  1423,
943     1424,  1432,  1434,  1442,  1447,  1455,  1480,  1487,  1497,  1498,
944     1502,  1503,  1504,  1505,  1509,  1510,  1511,  1515,  1520,  1525,
945     1533,  1534,  1535,  1536,  1537,  1538,  1539,  1549,  1554,  1562,
946     1567,  1575,  1577,  1581,  1586,  1591,  1599,  1604,  1612,  1621,
947     1622,  1626,  1627,  1631,  1639,  1657,  1661,  1666,  1674,  1679,
948     1680,  1684,  1689,  1697,  1702,  1707,  1712,  1717,  1725,  1730,
949     1735,  1743,  1748,  1749,  1750,  1751,  1752
950 };
951 #endif
952
953 #if YYDEBUG || YYERROR_VERBOSE || 1
954 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
955    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
956 static const char *const yytname[] =
957 {
958   "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan",
959   "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average",
960   "T_Basedate", "T_Bclient", "T_Bcpollbstep", "T_Beacon", "T_Broadcast",
961   "T_Broadcastclient", "T_Broadcastdelay", "T_Burst", "T_Calibrate",
962   "T_Ceiling", "T_Checkhash", "T_Clockstats", "T_Cohort", "T_ControlKey",
963   "T_Crypto", "T_Cryptostats", "T_Ctl", "T_Day", "T_Default", "T_Digest",
964   "T_Disable", "T_Discard", "T_Dispersion", "T_Double", "T_Driftfile",
965   "T_Drop", "T_Dscp", "T_Ellipsis", "T_Enable", "T_End", "T_Epeer",
966   "T_False", "T_File", "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2",
967   "T_Flag3", "T_Flag4", "T_Flake", "T_Floor", "T_Freq", "T_Fudge",
968   "T_Fuzz", "T_Host", "T_Huffpuff", "T_Iburst", "T_Ident", "T_Ignore",
969   "T_Ignorehash", "T_Incalloc", "T_Incmem", "T_Initalloc", "T_Initmem",
970   "T_Includefile", "T_Integer", "T_Interface", "T_Intrange", "T_Io",
971   "T_Ippeerlimit", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag",
972   "T_Kernel", "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Leapfile",
973   "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen", "T_Logconfig",
974   "T_Logfile", "T_Loopstats", "T_Lowpriotrap", "T_Manycastclient",
975   "T_Manycastserver", "T_Mask", "T_Maxage", "T_Maxclock", "T_Maxdepth",
976   "T_Maxdist", "T_Maxmem", "T_Maxpoll", "T_Mdnstries", "T_Mem",
977   "T_Memlock", "T_Minclock", "T_Mindepth", "T_Mindist", "T_Minimum",
978   "T_Minjitter", "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7",
979   "T_Monitor", "T_Month", "T_Mru", "T_Mssntp", "T_Multicastclient",
980   "T_Nic", "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None",
981   "T_Nonvolatile", "T_Noepeer", "T_Nopeer", "T_Noquery", "T_Noselect",
982   "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport",
983   "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_PCEdigest", "T_Panic",
984   "T_Peer", "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Poll",
985   "T_PollSkewList", "T_Pool", "T_Port", "T_Preempt", "T_Prefer",
986   "T_Protostats", "T_Pw", "T_Randfile", "T_Rawstats", "T_Refid",
987   "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke", "T_Rlimit",
988   "T_Saveconfigdir", "T_Server", "T_Serverresponse",
989   "T_ServerresponseFuzz", "T_Setvar", "T_Source", "T_Stacksize",
990   "T_Statistics", "T_Stats", "T_Statsdir", "T_Step", "T_Stepback",
991   "T_Stepfwd", "T_Stepout", "T_Stratum", "T_String", "T_Sys", "T_Sysstats",
992   "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats", "T_Tinker",
993   "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl", "T_Type",
994   "T_U_int", "T_UEcrypto", "T_UEcryptonak", "T_UEdigest", "T_Unconfig",
995   "T_Unpeer", "T_Version", "T_WanderThreshold", "T_Week", "T_Wildcard",
996   "T_Xleave", "T_Xmtnonce", "T_Year", "T_Flag", "T_EOC", "T_Simulate",
997   "T_Beep_Delay", "T_Sim_Duration", "T_Server_Offset", "T_Duration",
998   "T_Freq_Offset", "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay",
999   "'|'", "'='", "'('", "')'", "'{'", "'}'", "$accept", "configuration",
1000   "command_list", "command", "server_command", "client_type", "address",
1001   "ip_address", "address_fam", "option_list", "option", "option_flag",
1002   "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
1003   "option_str_keyword", "unpeer_command", "unpeer_keyword",
1004   "other_mode_command", "authentication_command", "crypto_command_list",
1005   "crypto_command", "crypto_str_keyword", "orphan_mode_command",
1006   "tos_option_list", "tos_option", "tos_option_int_keyword",
1007   "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
1008   "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
1009   "filegen_type", "access_control_command", "res_ippeerlimit",
1010   "ac_flag_list", "access_control_flag", "discard_option_list",
1011   "discard_option", "discard_option_keyword", "mru_option_list",
1012   "mru_option", "mru_option_keyword", "fudge_command", "fudge_factor_list",
1013   "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
1014   "rlimit_command", "rlimit_option_list", "rlimit_option",
1015   "rlimit_option_keyword", "system_option_command", "system_option_list",
1016   "system_option", "system_option_flag_keyword",
1017   "system_option_local_flag_keyword", "tinker_command",
1018   "tinker_option_list", "tinker_option", "tinker_option_keyword",
1019   "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_int_keyword",
1020   "opt_hash_check", "misc_cmd_str_keyword", "misc_cmd_str_lcl_keyword",
1021   "drift_parm", "pollskew_list", "pollskew_spec", "pollskew_cycle",
1022   "variable_assign", "t_default_or_zero", "trap_option_list",
1023   "trap_option", "log_config_list", "log_config_command",
1024   "interface_command", "interface_nic", "nic_rule_class",
1025   "nic_rule_action", "reset_command", "counter_set_list",
1026   "counter_set_keyword", "integer_list", "integer_list_range",
1027   "integer_list_range_elt", "integer_range", "string_list", "address_list",
1028   "boolean", "number", "basedate", "simulate_command", "sim_conf_start",
1029   "sim_init_statement_list", "sim_init_statement", "sim_init_keyword",
1030   "sim_server_list", "sim_server", "sim_server_offset", "sim_server_name",
1031   "sim_act_list", "sim_act", "sim_act_stmt_list", "sim_act_stmt",
1032   "sim_act_keyword", YY_NULLPTR
1033 };
1034 #endif
1035
1036 # ifdef YYPRINT
1037 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1038    (internal) symbol number NUM (which must be that of a token).  */
1039 static const yytype_uint16 yytoknum[] =
1040 {
1041        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1042      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1043      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1044      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1045      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1046      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1047      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1048      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1049      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1050      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1051      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1052      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1053      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1054      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1055      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1056      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1057      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1058      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1059      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1060      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1061      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1062      465,   466,   124,    61,    40,    41,   123,   125
1063 };
1064 # endif
1065
1066 #define YYPACT_NINF -261
1067
1068 #define yypact_value_is_default(Yystate) \
1069   (!!((Yystate) == (-261)))
1070
1071 #define YYTABLE_NINF -7
1072
1073 #define yytable_value_is_error(Yytable_value) \
1074   0
1075
1076   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1077      STATE-NUM.  */
1078 static const yytype_int16 yypact[] =
1079 {
1080       19,  -163,   -36,  -261,  -261,  -261,   -25,  -261,   326,    77,
1081     -125,  -261,   326,  -261,    16,   -45,  -261,  -119,  -261,  -103,
1082     -100,   -98,  -261,   -95,  -261,  -261,   -45,    13,   238,   -45,
1083     -261,  -261,   -88,  -261,   -86,  -261,  -261,  -261,    22,   109,
1084       -8,    23,   -38,  -261,  -261,   -81,    16,   -80,  -261,   443,
1085      607,   -73,   -58,    35,  -261,  -261,  -261,   103,   229,   -90,
1086     -261,   -45,  -261,   -45,  -261,  -261,  -261,  -261,  -261,  -261,
1087     -261,  -261,  -261,  -261,    -9,    45,   -53,   -51,  -261,   -19,
1088     -261,  -261,  -102,  -261,  -261,  -261,    82,  -261,  -261,  -261,
1089     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,   326,
1090     -261,  -261,  -261,  -261,  -261,  -261,    77,  -261,    55,    91,
1091     -261,   326,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1092     -261,  -261,  -261,  -261,    46,  -261,   -42,   407,  -261,  -261,
1093      -11,  -261,   -95,  -261,  -261,   -45,  -261,  -261,  -261,  -261,
1094     -261,  -261,  -261,  -261,  -261,   238,  -261,    64,   -45,  -261,
1095     -261,   -28,   -13,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1096     -261,   109,  -261,    74,   118,   119,    74,   -31,  -261,  -261,
1097     -261,  -261,   -38,  -261,    93,   -55,  -261,    16,  -261,  -261,
1098     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1099      443,  -261,    -9,    -7,  -261,  -261,  -261,   -40,  -261,  -261,
1100     -261,  -261,  -261,  -261,  -261,  -261,   607,  -261,   100,    -9,
1101     -261,  -261,  -261,   101,   -58,  -261,  -261,  -261,   102,  -261,
1102      -23,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1103     -261,  -261,  -261,     9,  -170,  -261,  -261,  -261,  -261,  -261,
1104      122,  -261,    -2,  -261,  -261,  -261,  -261,   107,    14,  -261,
1105     -261,  -261,  -261,  -261,    20,   126,  -261,  -261,    46,  -261,
1106       -9,   -40,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1107     -261,  -261,  -261,  -261,  -261,   129,  -261,   139,  -261,    74,
1108       74,  -261,   -73,  -261,  -261,  -261,    36,  -261,  -261,  -261,
1109     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,   -62,   168,
1110     -261,  -261,  -261,   410,  -261,  -261,  -261,  -261,  -261,  -261,
1111     -261,  -261,   -96,    17,     6,  -261,  -261,  -261,  -261,    61,
1112     -261,  -261,     3,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1113     -261,  -261,    24,  -261,   534,  -261,  -261,   534,    74,   534,
1114      204,   -73,   173,  -261,   174,  -261,  -261,  -261,  -261,  -261,
1115     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1116     -261,  -261,  -261,  -261,  -261,   -63,  -261,    70,    31,    47,
1117     -146,  -261,    33,  -261,    -9,  -261,  -261,  -261,  -261,  -261,
1118     -261,  -261,  -261,  -261,   183,  -261,  -261,  -261,  -261,  -261,
1119     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1120     -261,   196,  -261,  -261,   534,   534,  -261,  -261,  -261,  -261,
1121     -261,    37,  -261,  -261,  -261,   -45,  -261,  -261,  -261,    48,
1122     -261,  -261,  -261,   534,  -261,  -261,    43,    51,    -9,    50,
1123     -193,  -261,    57,    -9,  -261,  -261,  -261,    52,     5,  -261,
1124     -261,  -261,  -261,  -261,    18,    58,    53,  -261,    63,  -261,
1125       -9,  -261,  -261
1126 };
1127
1128   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1129      Performed when YYTABLE does not specify something else to do.  Zero
1130      means the default is an error.  */
1131 static const yytype_uint16 yydefact[] =
1132 {
1133        0,     0,     0,    24,    59,   246,     0,    72,     0,     0,
1134      260,   249,     0,   238,     0,     0,   254,     0,   278,     0,
1135        0,     0,   250,     0,   255,    25,     0,     0,     0,     0,
1136      279,   247,     0,    23,     0,   256,   261,    22,     0,     0,
1137        0,     0,     0,   257,    21,     0,     0,     0,   248,     0,
1138        0,     0,     0,     0,    57,    58,   315,     0,     2,     0,
1139        7,     0,     8,     0,     9,    10,    13,    11,    12,    14,
1140       15,    16,    17,    18,     0,     0,     0,     0,   230,     0,
1141      231,    19,     0,     5,    63,    64,    65,   204,   205,   206,
1142      207,   210,   208,   209,   211,   212,   213,   214,   215,   199,
1143      201,   202,   203,   162,   163,   164,   129,   160,     0,   258,
1144      239,   198,   104,   105,   106,   107,   111,   108,   109,   110,
1145      112,    29,    30,    28,     0,    26,     0,     6,    66,    67,
1146      253,   275,   240,   274,   307,    60,    62,   168,   169,   170,
1147      171,   172,   173,   174,   175,   130,   166,     0,    61,    71,
1148      305,   241,   242,    68,   290,   291,   292,   293,   294,   295,
1149      296,   287,   289,   137,    29,    30,   137,   137,    69,   197,
1150      195,   196,   191,   193,     0,     0,   243,    99,   103,   100,
1151      220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
1152      216,   218,     0,     0,    88,    89,    90,     0,    91,    92,
1153       98,    93,    97,    94,    95,    96,    81,    83,     0,     0,
1154       87,   269,   301,     0,    70,   300,   302,   298,   245,     1,
1155        0,     4,    31,    56,   312,   311,   232,   233,   234,   235,
1156      286,   285,   284,     0,     0,    80,    76,    77,    78,    79,
1157        0,    73,     0,   200,   159,   161,   259,   101,     0,   187,
1158      188,   189,   190,   186,     0,     0,   184,   185,   176,   178,
1159        0,     0,    27,   236,   252,   251,   237,   273,   306,   165,
1160      167,   304,   265,   264,   262,     0,   288,     0,   139,   137,
1161      137,   139,     0,   139,   192,   194,     0,   102,   217,   219,
1162      313,   310,   308,   309,    86,    82,    84,    85,   244,     0,
1163      299,   297,     3,    20,   280,   281,   282,   277,   283,   276,
1164      319,   320,     0,     0,     0,    75,    74,   121,   120,     0,
1165      118,   119,     0,   113,   116,   117,   182,   183,   181,   177,
1166      179,   180,     0,   138,   133,   139,   139,   136,   137,   131,
1167      268,     0,     0,   270,     0,    37,    38,    39,    55,    48,
1168       50,    49,    52,    40,    41,    42,    43,    51,    53,    44,
1169       45,    32,    33,    36,    34,     0,    35,     0,     0,     0,
1170        0,   322,     0,   317,     0,   114,   128,   124,   126,   122,
1171      123,   125,   127,   115,     0,   142,   143,   144,   145,   146,
1172      147,   148,   150,   151,   149,   152,   153,   154,   155,   156,
1173      157,     0,   158,   140,   134,   135,   139,   267,   266,   272,
1174      271,     0,    46,    47,    54,     0,   316,   314,   321,     0,
1175      318,   263,   141,   132,   303,   325,     0,     0,     0,     0,
1176        0,   327,     0,     0,   323,   326,   324,     0,     0,   332,
1177      333,   334,   335,   336,     0,     0,     0,   328,     0,   330,
1178        0,   329,   331
1179 };
1180
1181   /* YYPGOTO[NTERM-NUM].  */
1182 static const yytype_int16 yypgoto[] =
1183 {
1184     -261,  -261,  -261,   -48,  -261,  -261,   -15,   -50,  -261,  -261,
1185     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1186     -261,  -261,  -261,  -261,  -261,  -261,    65,  -261,  -261,  -261,
1187     -261,   -41,  -261,  -261,  -261,  -261,  -261,  -261,  -151,  -260,
1188     -261,  -261,   166,  -261,  -261,   128,  -261,  -261,  -261,    21,
1189     -261,  -261,  -261,  -261,   104,  -261,  -261,   263,   -43,  -261,
1190     -261,  -261,  -261,    87,  -261,  -261,  -261,  -261,  -261,  -261,
1191     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
1192      146,  -261,  -261,  -261,  -261,  -261,  -261,   120,  -261,  -261,
1193       66,  -261,  -261,   255,    25,  -190,  -261,  -261,  -261,  -261,
1194      -27,  -261,  -261,   -78,  -261,  -261,  -261,  -141,  -261,  -154,
1195     -261
1196 };
1197
1198   /* YYDEFGOTO[NTERM-NUM].  */
1199 static const yytype_int16 yydefgoto[] =
1200 {
1201       -1,    57,    58,    59,    60,    61,   134,   125,   126,   303,
1202      361,   362,   363,   364,   365,   366,   367,    62,    63,    64,
1203       65,    86,   241,   242,    66,   206,   207,   208,   209,    67,
1204      177,   120,   247,   323,   324,   325,   383,    68,   278,   334,
1205      403,   106,   107,   108,   145,   146,   147,    69,   258,   259,
1206      260,   261,    70,   172,   173,   174,    71,    99,   100,   101,
1207      102,    72,   190,   191,   192,    73,    74,    75,   266,    76,
1208       77,   110,   152,   274,   275,   176,   408,   298,   343,   132,
1209      133,    78,    79,   309,   233,    80,   161,   162,   218,   214,
1210      215,   216,   151,   135,   294,   226,   210,    81,    82,   312,
1211      313,   314,   370,   371,   427,   372,   430,   431,   444,   445,
1212      446
1213 };
1214
1215   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1216      positive, shift that token.  If negative, reduce the rule whose
1217      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1218 static const yytype_int16 yytable[] =
1219 {
1220      124,   211,   289,   291,   412,   178,   341,   376,   169,   212,
1221      220,   264,   368,   429,   304,   281,   283,   272,   230,   297,
1222        1,   337,   163,   339,   434,   167,   224,   292,   121,     2,
1223      122,    84,   377,   310,   311,     3,     4,     5,    83,   112,
1224      277,   231,    85,   113,     6,     7,   222,   109,   223,   248,
1225      265,     8,     9,   127,   273,    10,   243,    11,   225,    12,
1226       13,   282,   368,   170,    14,   164,   232,   165,   243,   128,
1227      330,   417,   129,    15,   130,   404,   405,   131,    16,   263,
1228      136,   305,   342,   306,   149,    17,   150,    18,   103,   153,
1229      168,   175,   179,   249,   250,   251,   252,    19,    20,   123,
1230       21,    22,   217,   219,   114,    23,    24,   310,   311,    25,
1231       26,   221,   227,   235,   234,   378,   154,   155,    27,   228,
1232      268,   229,   245,   379,   413,   171,   246,   123,   335,   336,
1233      262,   270,    28,   268,    29,    30,   287,   156,   236,   317,
1234       31,   237,   380,   293,   271,   277,   423,   318,   279,   280,
1235       32,   319,   253,   115,   166,    33,   213,    34,   286,    35,
1236      285,    36,    37,   116,   123,   290,   117,   296,   299,   301,
1237      316,    38,    39,    40,    41,    42,    43,    44,   302,   157,
1238       45,   307,   104,    46,   420,    47,   326,   406,   105,   315,
1239      118,   320,   327,   328,    48,   119,   332,   254,   381,    49,
1240       50,    51,   382,    52,    53,   308,   333,   344,   340,   158,
1241       54,    55,   439,   440,   441,   442,   443,   255,   373,   374,
1242       -6,    56,   256,   257,   321,   439,   440,   441,   442,   443,
1243      238,   239,   338,   375,   407,   447,   384,   240,   432,     2,
1244      410,   411,   414,   437,   415,     3,     4,     5,   416,   419,
1245      421,   422,   424,   426,     6,     7,   428,   429,   436,   449,
1246      452,     8,     9,   433,   451,    10,   450,    11,   438,    12,
1247       13,   295,   244,   269,    14,   111,   284,   288,   267,   329,
1248      300,   276,   159,    15,   148,   369,   331,   160,    16,   435,
1249      448,   409,   418,   322,     0,    17,     0,    18,     0,     0,
1250      137,   138,   139,   140,     0,     0,     0,    19,    20,     0,
1251       21,    22,     0,     0,     0,    23,    24,     0,     0,    25,
1252       26,     0,     0,     0,     0,     0,     0,     0,    27,     0,
1253        0,   141,     0,   142,    87,   143,     0,     0,     0,    88,
1254        0,   144,    28,     0,    29,    30,    89,     0,     0,     0,
1255       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1256       32,     0,     0,     0,     0,    33,     0,    34,     0,    35,
1257        0,    36,    37,     0,     0,     0,     0,     0,     0,     0,
1258        0,    38,    39,    40,    41,    42,    43,    44,     0,     0,
1259       45,     0,     0,    46,     0,    47,     0,     0,     0,     0,
1260      425,     0,    90,     0,    48,     0,     0,     0,     0,    49,
1261       50,    51,     0,    52,    53,     0,     0,     2,     0,   345,
1262       54,    55,     0,     3,     4,     5,     0,     0,     0,   346,
1263       -6,    56,     6,     7,     0,     0,    91,    92,     0,     8,
1264        9,     0,     0,    10,     0,    11,     0,    12,    13,   180,
1265        0,     0,    14,     0,     0,    93,     0,     0,     0,     0,
1266       94,    15,     0,     0,     0,     0,    16,     0,   347,   348,
1267        0,     0,     0,    17,     0,    18,     0,   181,     0,     0,
1268        0,     0,     0,     0,     0,    19,    20,   349,    21,    22,
1269        0,    95,     0,    23,    24,     0,   182,    25,    26,     0,
1270      183,     0,     0,     0,     0,     0,    27,     0,   350,     0,
1271        0,     0,     0,     0,    96,    97,    98,   351,     0,   352,
1272       28,     0,    29,    30,     0,     0,     0,     0,    31,     0,
1273        0,     0,     0,     0,     0,   353,     0,     0,    32,     0,
1274        0,     0,     0,    33,     0,    34,     0,    35,     0,    36,
1275       37,     0,     0,     0,     0,   354,   355,     0,     0,    38,
1276       39,    40,    41,    42,    43,    44,     0,     0,    45,     0,
1277        0,    46,     0,    47,     0,     0,   385,     0,   184,     0,
1278        0,     0,    48,     0,     0,   386,     0,    49,    50,    51,
1279        0,    52,    53,   356,   387,   357,     0,     0,    54,    55,
1280        0,     0,     0,   358,     0,     0,     0,   359,   360,    56,
1281      185,   186,   187,   188,   388,     0,     0,   389,   189,   193,
1282        0,   194,   195,   390,     0,     0,     0,     0,   196,     0,
1283        0,   197,     0,     0,     0,     0,     0,     0,     0,     0,
1284        0,     0,     0,     0,     0,     0,     0,     0,   391,     0,
1285        0,     0,   392,   393,     0,     0,   394,   395,   396,   198,
1286      397,   398,   399,     0,   400,     0,     0,     0,     0,     0,
1287        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1288        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1289        0,     0,     0,   401,     0,     0,     0,     0,     0,     0,
1290        0,   199,     0,   200,     0,     0,     0,     0,     0,   201,
1291        0,   202,     0,     0,     0,   203,     0,     0,     0,     0,
1292        0,     0,     0,     0,     0,     0,     0,   402,     0,     0,
1293        0,     0,     0,     0,     0,     0,     0,     0,     0,   204,
1294      205
1295 };
1296
1297 static const yytype_int16 yycheck[] =
1298 {
1299       15,    51,   192,    43,    67,    46,    68,     4,    46,    67,
1300       58,    22,   158,   206,     5,   166,   167,    30,    37,   209,
1301        1,   281,    30,   283,   217,    40,    35,    67,    73,    10,
1302       75,    67,    29,   203,   204,    16,    17,    18,   201,    23,
1303       71,    60,    67,    27,    25,    26,    61,   172,    63,     3,
1304       61,    32,    33,   172,    67,    36,    99,    38,    67,    40,
1305       41,    92,   158,   101,    45,    73,    85,    75,   111,   172,
1306      260,   217,   172,    54,   172,   335,   336,   172,    59,   127,
1307       67,    72,   144,    74,   172,    66,   172,    68,    11,    67,
1308       67,   172,   172,    47,    48,    49,    50,    78,    79,   172,
1309       81,    82,    67,     0,    88,    86,    87,   203,   204,    90,
1310       91,   201,    67,    31,   216,   112,     7,     8,    99,   172,
1311      135,   172,    67,   120,   187,   163,    35,   172,   279,   280,
1312      172,    67,   113,   148,   115,   116,   177,    28,    56,    32,
1313      121,    59,   139,   183,   172,    71,   406,    40,    30,    30,
1314      131,    44,   106,   137,   162,   136,   214,   138,   213,   140,
1315       67,   142,   143,   147,   172,   172,   150,    67,    67,    67,
1316      172,   152,   153,   154,   155,   156,   157,   158,   201,    70,
1317      161,   172,   105,   164,   374,   166,   172,   338,   111,    67,
1318      174,    84,   172,    67,   175,   179,    67,   151,   195,   180,
1319      181,   182,   199,   184,   185,   196,    67,    39,   172,   100,
1320      191,   192,   207,   208,   209,   210,   211,   171,   201,   213,
1321      201,   202,   176,   177,   117,   207,   208,   209,   210,   211,
1322      148,   149,   282,   172,    30,   217,   212,   155,   428,    10,
1323       67,    67,   172,   433,   213,    16,    17,    18,   201,   216,
1324       67,    55,   215,   205,    25,    26,   213,   206,   201,   201,
1325      450,    32,    33,   213,   201,    36,   213,    38,   216,    40,
1326       41,   206,   106,   145,    45,    12,   172,   190,   132,   258,
1327      214,   161,   173,    54,    29,   312,   261,   178,    59,   430,
1328      444,   341,   370,   186,    -1,    66,    -1,    68,    -1,    -1,
1329       62,    63,    64,    65,    -1,    -1,    -1,    78,    79,    -1,
1330       81,    82,    -1,    -1,    -1,    86,    87,    -1,    -1,    90,
1331       91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,
1332       -1,    93,    -1,    95,     8,    97,    -1,    -1,    -1,    13,
1333       -1,   103,   113,    -1,   115,   116,    20,    -1,    -1,    -1,
1334      121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1335      131,    -1,    -1,    -1,    -1,   136,    -1,   138,    -1,   140,
1336       -1,   142,   143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1337       -1,   152,   153,   154,   155,   156,   157,   158,    -1,    -1,
1338      161,    -1,    -1,   164,    -1,   166,    -1,    -1,    -1,    -1,
1339      415,    -1,    76,    -1,   175,    -1,    -1,    -1,    -1,   180,
1340      181,   182,    -1,   184,   185,    -1,    -1,    10,    -1,     9,
1341      191,   192,    -1,    16,    17,    18,    -1,    -1,    -1,    19,
1342      201,   202,    25,    26,    -1,    -1,   110,   111,    -1,    32,
1343       33,    -1,    -1,    36,    -1,    38,    -1,    40,    41,     6,
1344       -1,    -1,    45,    -1,    -1,   129,    -1,    -1,    -1,    -1,
1345      134,    54,    -1,    -1,    -1,    -1,    59,    -1,    58,    59,
1346       -1,    -1,    -1,    66,    -1,    68,    -1,    34,    -1,    -1,
1347       -1,    -1,    -1,    -1,    -1,    78,    79,    77,    81,    82,
1348       -1,   165,    -1,    86,    87,    -1,    53,    90,    91,    -1,
1349       57,    -1,    -1,    -1,    -1,    -1,    99,    -1,    98,    -1,
1350       -1,    -1,    -1,    -1,   188,   189,   190,   107,    -1,   109,
1351      113,    -1,   115,   116,    -1,    -1,    -1,    -1,   121,    -1,
1352       -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,   131,    -1,
1353       -1,    -1,    -1,   136,    -1,   138,    -1,   140,    -1,   142,
1354      143,    -1,    -1,    -1,    -1,   145,   146,    -1,    -1,   152,
1355      153,   154,   155,   156,   157,   158,    -1,    -1,   161,    -1,
1356       -1,   164,    -1,   166,    -1,    -1,    42,    -1,   135,    -1,
1357       -1,    -1,   175,    -1,    -1,    51,    -1,   180,   181,   182,
1358       -1,   184,   185,   183,    60,   185,    -1,    -1,   191,   192,
1359       -1,    -1,    -1,   193,    -1,    -1,    -1,   197,   198,   202,
1360      167,   168,   169,   170,    80,    -1,    -1,    83,   175,    12,
1361       -1,    14,    15,    89,    -1,    -1,    -1,    -1,    21,    -1,
1362       -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1363       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
1364       -1,    -1,   118,   119,    -1,    -1,   122,   123,   124,    52,
1365      126,   127,   128,    -1,   130,    -1,    -1,    -1,    -1,    -1,
1366       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1367       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1368       -1,    -1,    -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,
1369       -1,    94,    -1,    96,    -1,    -1,    -1,    -1,    -1,   102,
1370       -1,   104,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,
1371       -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,    -1,
1372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   132,
1373      133
1374 };
1375
1376   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1377      symbol of state STATE-NUM.  */
1378 static const yytype_uint16 yystos[] =
1379 {
1380        0,     1,    10,    16,    17,    18,    25,    26,    32,    33,
1381       36,    38,    40,    41,    45,    54,    59,    66,    68,    78,
1382       79,    81,    82,    86,    87,    90,    91,    99,   113,   115,
1383      116,   121,   131,   136,   138,   140,   142,   143,   152,   153,
1384      154,   155,   156,   157,   158,   161,   164,   166,   175,   180,
1385      181,   182,   184,   185,   191,   192,   202,   219,   220,   221,
1386      222,   223,   235,   236,   237,   238,   242,   247,   255,   265,
1387      270,   274,   279,   283,   284,   285,   287,   288,   299,   300,
1388      303,   315,   316,   201,    67,    67,   239,     8,    13,    20,
1389       76,   110,   111,   129,   134,   165,   188,   189,   190,   275,
1390      276,   277,   278,    11,   105,   111,   259,   260,   261,   172,
1391      289,   275,    23,    27,    88,   137,   147,   150,   174,   179,
1392      249,    73,    75,   172,   224,   225,   226,   172,   172,   172,
1393      172,   172,   297,   298,   224,   311,    67,    62,    63,    64,
1394       65,    93,    95,    97,   103,   262,   263,   264,   311,   172,
1395      172,   310,   290,    67,     7,     8,    28,    70,   100,   173,
1396      178,   304,   305,    30,    73,    75,   162,   224,    67,    46,
1397      101,   163,   271,   272,   273,   172,   293,   248,   249,   172,
1398        6,    34,    53,    57,   135,   167,   168,   169,   170,   175,
1399      280,   281,   282,    12,    14,    15,    21,    24,    52,    94,
1400       96,   102,   104,   108,   132,   133,   243,   244,   245,   246,
1401      314,   225,    67,   214,   307,   308,   309,    67,   306,     0,
1402      221,   201,   224,   224,    35,    67,   313,    67,   172,   172,
1403       37,    60,    85,   302,   216,    31,    56,    59,   148,   149,
1404      155,   240,   241,   276,   260,    67,    35,   250,     3,    47,
1405       48,    49,    50,   106,   151,   171,   176,   177,   266,   267,
1406      268,   269,   172,   221,    22,    61,   286,   298,   224,   263,
1407       67,   172,    30,    67,   291,   292,   305,    71,   256,    30,
1408       30,   256,    92,   256,   272,    67,   213,   249,   281,   313,
1409      172,    43,    67,   183,   312,   244,    67,   313,   295,    67,
1410      308,    67,   201,   227,     5,    72,    74,   172,   196,   301,
1411      203,   204,   317,   318,   319,    67,   172,    32,    40,    44,
1412       84,   117,   186,   251,   252,   253,   172,   172,    67,   267,
1413      313,   312,    67,    67,   257,   256,   256,   257,   225,   257,
1414      172,    68,   144,   296,    39,     9,    19,    58,    59,    77,
1415       98,   107,   109,   125,   145,   146,   183,   185,   193,   197,
1416      198,   228,   229,   230,   231,   232,   233,   234,   158,   318,
1417      320,   321,   323,   201,   213,   172,     4,    29,   112,   120,
1418      139,   195,   199,   254,   212,    42,    51,    60,    80,    83,
1419       89,   114,   118,   119,   122,   123,   124,   126,   127,   128,
1420      130,   159,   193,   258,   257,   257,   256,    30,   294,   225,
1421       67,    67,    67,   187,   172,   213,   201,   217,   321,   216,
1422      313,    67,    55,   257,   215,   224,   205,   322,   213,   206,
1423      324,   325,   313,   213,   217,   325,   201,   313,   216,   207,
1424      208,   209,   210,   211,   326,   327,   328,   217,   327,   201,
1425      213,   201,   313
1426 };
1427
1428   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1429 static const yytype_uint16 yyr1[] =
1430 {
1431        0,   218,   219,   220,   220,   220,   221,   221,   221,   221,
1432      221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
1433      222,   223,   223,   223,   223,   223,   224,   224,   225,   226,
1434      226,   227,   227,   228,   228,   228,   229,   230,   230,   230,
1435      230,   230,   230,   230,   230,   230,   231,   231,   232,   232,
1436      232,   232,   232,   232,   233,   234,   235,   236,   236,   237,
1437      237,   237,   237,   238,   238,   238,   238,   238,   238,   238,
1438      238,   238,   239,   239,   240,   240,   241,   241,   241,   241,
1439      241,   242,   243,   243,   244,   244,   244,   244,   245,   245,
1440      245,   245,   245,   245,   245,   245,   245,   246,   246,   247,
1441      247,   247,   248,   248,   249,   249,   249,   249,   249,   249,
1442      249,   249,   250,   250,   251,   251,   251,   251,   252,   252,
1443      253,   253,   254,   254,   254,   254,   254,   254,   254,   255,
1444      255,   255,   255,   255,   255,   255,   255,   256,   256,   257,
1445      257,   257,   258,   258,   258,   258,   258,   258,   258,   258,
1446      258,   258,   258,   258,   258,   258,   258,   258,   258,   259,
1447      259,   260,   261,   261,   261,   262,   262,   263,   264,   264,
1448      264,   264,   264,   264,   264,   264,   265,   266,   266,   267,
1449      267,   267,   267,   267,   268,   268,   268,   269,   269,   269,
1450      269,   270,   271,   271,   272,   273,   273,   273,   274,   274,
1451      275,   275,   276,   276,   277,   277,   277,   277,   277,   277,
1452      278,   278,   278,   278,   278,   278,   279,   280,   280,   281,
1453      282,   282,   282,   282,   282,   282,   282,   282,   282,   282,
1454      283,   283,   283,   283,   283,   283,   283,   283,   283,   283,
1455      283,   283,   283,   283,   283,   283,   284,   284,   284,   285,
1456      285,   286,   286,   286,   287,   288,   288,   288,   289,   289,
1457      289,   290,   290,   291,   292,   292,   293,   294,   294,   295,
1458      295,   296,   296,   297,   297,   298,   299,   299,   300,   300,
1459      301,   301,   301,   301,   302,   302,   302,   303,   304,   304,
1460      305,   305,   305,   305,   305,   305,   305,   306,   306,   307,
1461      307,   308,   308,   309,   310,   310,   311,   311,   312,   312,
1462      312,   313,   313,   314,   315,   316,   317,   317,   318,   319,
1463      319,   320,   320,   321,   322,   323,   324,   324,   325,   326,
1464      326,   327,   328,   328,   328,   328,   328
1465 };
1466
1467   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1468 static const yytype_uint8 yyr2[] =
1469 {
1470        0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
1471        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1472        3,     1,     1,     1,     1,     1,     1,     2,     1,     1,
1473        1,     0,     2,     1,     1,     1,     1,     1,     1,     1,
1474        1,     1,     1,     1,     1,     1,     2,     2,     1,     1,
1475        1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
1476        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1477        2,     2,     0,     2,     2,     2,     1,     1,     1,     1,
1478        1,     2,     2,     1,     2,     2,     2,     1,     1,     1,
1479        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1480        2,     3,     2,     1,     1,     1,     1,     1,     1,     1,
1481        1,     1,     0,     2,     2,     2,     1,     1,     1,     1,
1482        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1483        2,     4,     6,     4,     5,     5,     4,     0,     2,     0,
1484        2,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1485        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1486        1,     2,     1,     1,     1,     2,     1,     2,     1,     1,
1487        1,     1,     1,     1,     1,     1,     3,     2,     1,     2,
1488        2,     2,     2,     2,     1,     1,     1,     1,     1,     1,
1489        1,     2,     2,     1,     2,     1,     1,     1,     2,     2,
1490        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1491        1,     1,     1,     1,     1,     1,     2,     2,     1,     2,
1492        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1493        1,     1,     2,     2,     2,     2,     3,     3,     1,     2,
1494        2,     2,     2,     2,     3,     2,     1,     1,     1,     1,
1495        1,     1,     1,     0,     1,     1,     1,     1,     1,     2,
1496        0,     0,     2,     4,     1,     1,     4,     1,     0,     0,
1497        2,     2,     2,     2,     1,     1,     3,     3,     1,     1,
1498        1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
1499        1,     1,     1,     1,     1,     1,     1,     2,     1,     2,
1500        1,     1,     1,     5,     2,     1,     2,     1,     1,     1,
1501        1,     1,     1,     2,     5,     1,     3,     2,     3,     1,
1502        1,     2,     1,     5,     4,     3,     2,     1,     6,     3,
1503        2,     3,     1,     1,     1,     1,     1
1504 };
1505
1506
1507 #define yyerrok         (yyerrstatus = 0)
1508 #define yyclearin       (yychar = YYEMPTY)
1509 #define YYEMPTY         (-2)
1510 #define YYEOF           0
1511
1512 #define YYACCEPT        goto yyacceptlab
1513 #define YYABORT         goto yyabortlab
1514 #define YYERROR         goto yyerrorlab
1515
1516
1517 #define YYRECOVERING()  (!!yyerrstatus)
1518
1519 #define YYBACKUP(Token, Value)                                  \
1520 do                                                              \
1521   if (yychar == YYEMPTY)                                        \
1522     {                                                           \
1523       yychar = (Token);                                         \
1524       yylval = (Value);                                         \
1525       YYPOPSTACK (yylen);                                       \
1526       yystate = *yyssp;                                         \
1527       goto yybackup;                                            \
1528     }                                                           \
1529   else                                                          \
1530     {                                                           \
1531       yyerror (YY_("syntax error: cannot back up")); \
1532       YYERROR;                                                  \
1533     }                                                           \
1534 while (0)
1535
1536 /* Error token number */
1537 #define YYTERROR        1
1538 #define YYERRCODE       256
1539
1540
1541
1542 /* Enable debugging if requested.  */
1543 #if YYDEBUG
1544
1545 # ifndef YYFPRINTF
1546 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1547 #  define YYFPRINTF fprintf
1548 # endif
1549
1550 # define YYDPRINTF(Args)                        \
1551 do {                                            \
1552   if (yydebug)                                  \
1553     YYFPRINTF Args;                             \
1554 } while (0)
1555
1556 /* This macro is provided for backward compatibility. */
1557 #ifndef YY_LOCATION_PRINT
1558 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1559 #endif
1560
1561
1562 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1563 do {                                                                      \
1564   if (yydebug)                                                            \
1565     {                                                                     \
1566       YYFPRINTF (stderr, "%s ", Title);                                   \
1567       yy_symbol_print (stderr,                                            \
1568                   Type, Value); \
1569       YYFPRINTF (stderr, "\n");                                           \
1570     }                                                                     \
1571 } while (0)
1572
1573
1574 /*----------------------------------------.
1575 | Print this symbol's value on YYOUTPUT.  |
1576 `----------------------------------------*/
1577
1578 static void
1579 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1580 {
1581   FILE *yyo = yyoutput;
1582   YYUSE (yyo);
1583   if (!yyvaluep)
1584     return;
1585 # ifdef YYPRINT
1586   if (yytype < YYNTOKENS)
1587     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1588 # endif
1589   YYUSE (yytype);
1590 }
1591
1592
1593 /*--------------------------------.
1594 | Print this symbol on YYOUTPUT.  |
1595 `--------------------------------*/
1596
1597 static void
1598 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1599 {
1600   YYFPRINTF (yyoutput, "%s %s (",
1601              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1602
1603   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1604   YYFPRINTF (yyoutput, ")");
1605 }
1606
1607 /*------------------------------------------------------------------.
1608 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1609 | TOP (included).                                                   |
1610 `------------------------------------------------------------------*/
1611
1612 static void
1613 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1614 {
1615   YYFPRINTF (stderr, "Stack now");
1616   for (; yybottom <= yytop; yybottom++)
1617     {
1618       int yybot = *yybottom;
1619       YYFPRINTF (stderr, " %d", yybot);
1620     }
1621   YYFPRINTF (stderr, "\n");
1622 }
1623
1624 # define YY_STACK_PRINT(Bottom, Top)                            \
1625 do {                                                            \
1626   if (yydebug)                                                  \
1627     yy_stack_print ((Bottom), (Top));                           \
1628 } while (0)
1629
1630
1631 /*------------------------------------------------.
1632 | Report that the YYRULE is going to be reduced.  |
1633 `------------------------------------------------*/
1634
1635 static void
1636 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1637 {
1638   unsigned long int yylno = yyrline[yyrule];
1639   int yynrhs = yyr2[yyrule];
1640   int yyi;
1641   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1642              yyrule - 1, yylno);
1643   /* The symbols being reduced.  */
1644   for (yyi = 0; yyi < yynrhs; yyi++)
1645     {
1646       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1647       yy_symbol_print (stderr,
1648                        yystos[yyssp[yyi + 1 - yynrhs]],
1649                        &(yyvsp[(yyi + 1) - (yynrhs)])
1650                                               );
1651       YYFPRINTF (stderr, "\n");
1652     }
1653 }
1654
1655 # define YY_REDUCE_PRINT(Rule)          \
1656 do {                                    \
1657   if (yydebug)                          \
1658     yy_reduce_print (yyssp, yyvsp, Rule); \
1659 } while (0)
1660
1661 /* Nonzero means print parse trace.  It is left uninitialized so that
1662    multiple parsers can coexist.  */
1663 int yydebug;
1664 #else /* !YYDEBUG */
1665 # define YYDPRINTF(Args)
1666 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1667 # define YY_STACK_PRINT(Bottom, Top)
1668 # define YY_REDUCE_PRINT(Rule)
1669 #endif /* !YYDEBUG */
1670
1671
1672 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1673 #ifndef YYINITDEPTH
1674 # define YYINITDEPTH 200
1675 #endif
1676
1677 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1678    if the built-in stack extension method is used).
1679
1680    Do not make this value too large; the results are undefined if
1681    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1682    evaluated with infinite-precision integer arithmetic.  */
1683
1684 #ifndef YYMAXDEPTH
1685 # define YYMAXDEPTH 10000
1686 #endif
1687
1688
1689 #if YYERROR_VERBOSE
1690
1691 # ifndef yystrlen
1692 #  if defined __GLIBC__ && defined _STRING_H
1693 #   define yystrlen strlen
1694 #  else
1695 /* Return the length of YYSTR.  */
1696 static YYSIZE_T
1697 yystrlen (const char *yystr)
1698 {
1699   YYSIZE_T yylen;
1700   for (yylen = 0; yystr[yylen]; yylen++)
1701     continue;
1702   return yylen;
1703 }
1704 #  endif
1705 # endif
1706
1707 # ifndef yystpcpy
1708 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1709 #   define yystpcpy stpcpy
1710 #  else
1711 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1712    YYDEST.  */
1713 static char *
1714 yystpcpy (char *yydest, const char *yysrc)
1715 {
1716   char *yyd = yydest;
1717   const char *yys = yysrc;
1718
1719   while ((*yyd++ = *yys++) != '\0')
1720     continue;
1721
1722   return yyd - 1;
1723 }
1724 #  endif
1725 # endif
1726
1727 # ifndef yytnamerr
1728 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1729    quotes and backslashes, so that it's suitable for yyerror.  The
1730    heuristic is that double-quoting is unnecessary unless the string
1731    contains an apostrophe, a comma, or backslash (other than
1732    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1733    null, do not copy; instead, return the length of what the result
1734    would have been.  */
1735 static YYSIZE_T
1736 yytnamerr (char *yyres, const char *yystr)
1737 {
1738   if (*yystr == '"')
1739     {
1740       YYSIZE_T yyn = 0;
1741       char const *yyp = yystr;
1742
1743       for (;;)
1744         switch (*++yyp)
1745           {
1746           case '\'':
1747           case ',':
1748             goto do_not_strip_quotes;
1749
1750           case '\\':
1751             if (*++yyp != '\\')
1752               goto do_not_strip_quotes;
1753             /* Fall through.  */
1754           default:
1755             if (yyres)
1756               yyres[yyn] = *yyp;
1757             yyn++;
1758             break;
1759
1760           case '"':
1761             if (yyres)
1762               yyres[yyn] = '\0';
1763             return yyn;
1764           }
1765     do_not_strip_quotes: ;
1766     }
1767
1768   if (! yyres)
1769     return yystrlen (yystr);
1770
1771   return yystpcpy (yyres, yystr) - yyres;
1772 }
1773 # endif
1774
1775 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1776    about the unexpected token YYTOKEN for the state stack whose top is
1777    YYSSP.
1778
1779    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1780    not large enough to hold the message.  In that case, also set
1781    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1782    required number of bytes is too large to store.  */
1783 static int
1784 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1785                 yytype_int16 *yyssp, int yytoken)
1786 {
1787   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1788   YYSIZE_T yysize = yysize0;
1789   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1790   /* Internationalized format string. */
1791   const char *yyformat = YY_NULLPTR;
1792   /* Arguments of yyformat. */
1793   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1794   /* Number of reported tokens (one for the "unexpected", one per
1795      "expected"). */
1796   int yycount = 0;
1797
1798   /* There are many possibilities here to consider:
1799      - If this state is a consistent state with a default action, then
1800        the only way this function was invoked is if the default action
1801        is an error action.  In that case, don't check for expected
1802        tokens because there are none.
1803      - The only way there can be no lookahead present (in yychar) is if
1804        this state is a consistent state with a default action.  Thus,
1805        detecting the absence of a lookahead is sufficient to determine
1806        that there is no unexpected or expected token to report.  In that
1807        case, just report a simple "syntax error".
1808      - Don't assume there isn't a lookahead just because this state is a
1809        consistent state with a default action.  There might have been a
1810        previous inconsistent state, consistent state with a non-default
1811        action, or user semantic action that manipulated yychar.
1812      - Of course, the expected token list depends on states to have
1813        correct lookahead information, and it depends on the parser not
1814        to perform extra reductions after fetching a lookahead from the
1815        scanner and before detecting a syntax error.  Thus, state merging
1816        (from LALR or IELR) and default reductions corrupt the expected
1817        token list.  However, the list is correct for canonical LR with
1818        one exception: it will still contain any token that will not be
1819        accepted due to an error action in a later state.
1820   */
1821   if (yytoken != YYEMPTY)
1822     {
1823       int yyn = yypact[*yyssp];
1824       yyarg[yycount++] = yytname[yytoken];
1825       if (!yypact_value_is_default (yyn))
1826         {
1827           /* Start YYX at -YYN if negative to avoid negative indexes in
1828              YYCHECK.  In other words, skip the first -YYN actions for
1829              this state because they are default actions.  */
1830           int yyxbegin = yyn < 0 ? -yyn : 0;
1831           /* Stay within bounds of both yycheck and yytname.  */
1832           int yychecklim = YYLAST - yyn + 1;
1833           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1834           int yyx;
1835
1836           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1837             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1838                 && !yytable_value_is_error (yytable[yyx + yyn]))
1839               {
1840                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1841                   {
1842                     yycount = 1;
1843                     yysize = yysize0;
1844                     break;
1845                   }
1846                 yyarg[yycount++] = yytname[yyx];
1847                 {
1848                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1849                   if (! (yysize <= yysize1
1850                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1851                     return 2;
1852                   yysize = yysize1;
1853                 }
1854               }
1855         }
1856     }
1857
1858   switch (yycount)
1859     {
1860 # define YYCASE_(N, S)                      \
1861       case N:                               \
1862         yyformat = S;                       \
1863       break
1864       YYCASE_(0, YY_("syntax error"));
1865       YYCASE_(1, YY_("syntax error, unexpected %s"));
1866       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1867       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1868       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1869       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1870 # undef YYCASE_
1871     }
1872
1873   {
1874     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1875     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1876       return 2;
1877     yysize = yysize1;
1878   }
1879
1880   if (*yymsg_alloc < yysize)
1881     {
1882       *yymsg_alloc = 2 * yysize;
1883       if (! (yysize <= *yymsg_alloc
1884              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1885         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1886       return 1;
1887     }
1888
1889   /* Avoid sprintf, as that infringes on the user's name space.
1890      Don't have undefined behavior even if the translation
1891      produced a string with the wrong number of "%s"s.  */
1892   {
1893     char *yyp = *yymsg;
1894     int yyi = 0;
1895     while ((*yyp = *yyformat) != '\0')
1896       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1897         {
1898           yyp += yytnamerr (yyp, yyarg[yyi++]);
1899           yyformat += 2;
1900         }
1901       else
1902         {
1903           yyp++;
1904           yyformat++;
1905         }
1906   }
1907   return 0;
1908 }
1909 #endif /* YYERROR_VERBOSE */
1910
1911 /*-----------------------------------------------.
1912 | Release the memory associated to this symbol.  |
1913 `-----------------------------------------------*/
1914
1915 static void
1916 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1917 {
1918   YYUSE (yyvaluep);
1919   if (!yymsg)
1920     yymsg = "Deleting";
1921   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1922
1923   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1924   YYUSE (yytype);
1925   YY_IGNORE_MAYBE_UNINITIALIZED_END
1926 }
1927
1928
1929
1930
1931 /* The lookahead symbol.  */
1932 int yychar;
1933
1934 /* The semantic value of the lookahead symbol.  */
1935 YYSTYPE yylval;
1936 /* Number of syntax errors so far.  */
1937 int yynerrs;
1938
1939
1940 /*----------.
1941 | yyparse.  |
1942 `----------*/
1943
1944 int
1945 yyparse (void)
1946 {
1947     int yystate;
1948     /* Number of tokens to shift before error messages enabled.  */
1949     int yyerrstatus;
1950
1951     /* The stacks and their tools:
1952        'yyss': related to states.
1953        'yyvs': related to semantic values.
1954
1955        Refer to the stacks through separate pointers, to allow yyoverflow
1956        to reallocate them elsewhere.  */
1957
1958     /* The state stack.  */
1959     yytype_int16 yyssa[YYINITDEPTH];
1960     yytype_int16 *yyss;
1961     yytype_int16 *yyssp;
1962
1963     /* The semantic value stack.  */
1964     YYSTYPE yyvsa[YYINITDEPTH];
1965     YYSTYPE *yyvs;
1966     YYSTYPE *yyvsp;
1967
1968     YYSIZE_T yystacksize;
1969
1970   int yyn;
1971   int yyresult;
1972   /* Lookahead token as an internal (translated) token number.  */
1973   int yytoken = 0;
1974   /* The variables used to return semantic value and location from the
1975      action routines.  */
1976   YYSTYPE yyval;
1977
1978 #if YYERROR_VERBOSE
1979   /* Buffer for error messages, and its allocated size.  */
1980   char yymsgbuf[128];
1981   char *yymsg = yymsgbuf;
1982   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1983 #endif
1984
1985 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1986
1987   /* The number of symbols on the RHS of the reduced rule.
1988      Keep to zero when no symbol should be popped.  */
1989   int yylen = 0;
1990
1991   yyssp = yyss = yyssa;
1992   yyvsp = yyvs = yyvsa;
1993   yystacksize = YYINITDEPTH;
1994
1995   YYDPRINTF ((stderr, "Starting parse\n"));
1996
1997   yystate = 0;
1998   yyerrstatus = 0;
1999   yynerrs = 0;
2000   yychar = YYEMPTY; /* Cause a token to be read.  */
2001   goto yysetstate;
2002
2003 /*------------------------------------------------------------.
2004 | yynewstate -- Push a new state, which is found in yystate.  |
2005 `------------------------------------------------------------*/
2006  yynewstate:
2007   /* In all cases, when you get here, the value and location stacks
2008      have just been pushed.  So pushing a state here evens the stacks.  */
2009   yyssp++;
2010
2011  yysetstate:
2012   *yyssp = yystate;
2013
2014   if (yyss + yystacksize - 1 <= yyssp)
2015     {
2016       /* Get the current used size of the three stacks, in elements.  */
2017       YYSIZE_T yysize = yyssp - yyss + 1;
2018
2019 #ifdef yyoverflow
2020       {
2021         /* Give user a chance to reallocate the stack.  Use copies of
2022            these so that the &'s don't force the real ones into
2023            memory.  */
2024         YYSTYPE *yyvs1 = yyvs;
2025         yytype_int16 *yyss1 = yyss;
2026
2027         /* Each stack pointer address is followed by the size of the
2028            data in use in that stack, in bytes.  This used to be a
2029            conditional around just the two extra args, but that might
2030            be undefined if yyoverflow is a macro.  */
2031         yyoverflow (YY_("memory exhausted"),
2032                     &yyss1, yysize * sizeof (*yyssp),
2033                     &yyvs1, yysize * sizeof (*yyvsp),
2034                     &yystacksize);
2035
2036         yyss = yyss1;
2037         yyvs = yyvs1;
2038       }
2039 #else /* no yyoverflow */
2040 # ifndef YYSTACK_RELOCATE
2041       goto yyexhaustedlab;
2042 # else
2043       /* Extend the stack our own way.  */
2044       if (YYMAXDEPTH <= yystacksize)
2045         goto yyexhaustedlab;
2046       yystacksize *= 2;
2047       if (YYMAXDEPTH < yystacksize)
2048         yystacksize = YYMAXDEPTH;
2049
2050       {
2051         yytype_int16 *yyss1 = yyss;
2052         union yyalloc *yyptr =
2053           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2054         if (! yyptr)
2055           goto yyexhaustedlab;
2056         YYSTACK_RELOCATE (yyss_alloc, yyss);
2057         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2058 #  undef YYSTACK_RELOCATE
2059         if (yyss1 != yyssa)
2060           YYSTACK_FREE (yyss1);
2061       }
2062 # endif
2063 #endif /* no yyoverflow */
2064
2065       yyssp = yyss + yysize - 1;
2066       yyvsp = yyvs + yysize - 1;
2067
2068       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2069                   (unsigned long int) yystacksize));
2070
2071       if (yyss + yystacksize - 1 <= yyssp)
2072         YYABORT;
2073     }
2074
2075   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2076
2077   if (yystate == YYFINAL)
2078     YYACCEPT;
2079
2080   goto yybackup;
2081
2082 /*-----------.
2083 | yybackup.  |
2084 `-----------*/
2085 yybackup:
2086
2087   /* Do appropriate processing given the current state.  Read a
2088      lookahead token if we need one and don't already have one.  */
2089
2090   /* First try to decide what to do without reference to lookahead token.  */
2091   yyn = yypact[yystate];
2092   if (yypact_value_is_default (yyn))
2093     goto yydefault;
2094
2095   /* Not known => get a lookahead token if don't already have one.  */
2096
2097   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2098   if (yychar == YYEMPTY)
2099     {
2100       YYDPRINTF ((stderr, "Reading a token: "));
2101       yychar = yylex ();
2102     }
2103
2104   if (yychar <= YYEOF)
2105     {
2106       yychar = yytoken = YYEOF;
2107       YYDPRINTF ((stderr, "Now at end of input.\n"));
2108     }
2109   else
2110     {
2111       yytoken = YYTRANSLATE (yychar);
2112       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2113     }
2114
2115   /* If the proper action on seeing token YYTOKEN is to reduce or to
2116      detect an error, take that action.  */
2117   yyn += yytoken;
2118   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2119     goto yydefault;
2120   yyn = yytable[yyn];
2121   if (yyn <= 0)
2122     {
2123       if (yytable_value_is_error (yyn))
2124         goto yyerrlab;
2125       yyn = -yyn;
2126       goto yyreduce;
2127     }
2128
2129   /* Count tokens shifted since error; after three, turn off error
2130      status.  */
2131   if (yyerrstatus)
2132     yyerrstatus--;
2133
2134   /* Shift the lookahead token.  */
2135   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2136
2137   /* Discard the shifted token.  */
2138   yychar = YYEMPTY;
2139
2140   yystate = yyn;
2141   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2142   *++yyvsp = yylval;
2143   YY_IGNORE_MAYBE_UNINITIALIZED_END
2144
2145   goto yynewstate;
2146
2147
2148 /*-----------------------------------------------------------.
2149 | yydefault -- do the default action for the current state.  |
2150 `-----------------------------------------------------------*/
2151 yydefault:
2152   yyn = yydefact[yystate];
2153   if (yyn == 0)
2154     goto yyerrlab;
2155   goto yyreduce;
2156
2157
2158 /*-----------------------------.
2159 | yyreduce -- Do a reduction.  |
2160 `-----------------------------*/
2161 yyreduce:
2162   /* yyn is the number of a rule to reduce with.  */
2163   yylen = yyr2[yyn];
2164
2165   /* If YYLEN is nonzero, implement the default value of the action:
2166      '$$ = $1'.
2167
2168      Otherwise, the following line sets YYVAL to garbage.
2169      This behavior is undocumented and Bison
2170      users should not rely upon it.  Assigning to YYVAL
2171      unconditionally makes the parser a bit smaller, and it avoids a
2172      GCC warning that YYVAL may be used uninitialized.  */
2173   yyval = yyvsp[1-yylen];
2174
2175
2176   YY_REDUCE_PRINT (yyn);
2177   switch (yyn)
2178     {
2179         case 5:
2180 #line 398 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2181     {
2182                         /* I will need to incorporate much more fine grained
2183                          * error messages. The following should suffice for
2184                          * the time being.
2185                          */
2186                         struct FILE_INFO * ip_ctx = lex_current();
2187                         msyslog(LOG_ERR,
2188                                 "syntax error in %s line %d, column %d",
2189                                 ip_ctx->fname,
2190                                 ip_ctx->errpos.nline,
2191                                 ip_ctx->errpos.ncol);
2192                 }
2193 #line 2194 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2194     break;
2195
2196   case 20:
2197 #line 434 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2198     {
2199                         peer_node *my_node;
2200
2201                         my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2202                         APPEND_G_FIFO(cfgt.peers, my_node);
2203                 }
2204 #line 2205 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2205     break;
2206
2207   case 27:
2208 #line 453 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2209     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
2210 #line 2211 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2211     break;
2212
2213   case 28:
2214 #line 458 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2215     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
2216 #line 2217 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2217     break;
2218
2219   case 29:
2220 #line 463 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2221     { (yyval.Integer) = AF_INET; }
2222 #line 2223 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2223     break;
2224
2225   case 30:
2226 #line 465 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2227     { (yyval.Integer) = AF_INET6; }
2228 #line 2229 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2229     break;
2230
2231   case 31:
2232 #line 470 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2233     { (yyval.Attr_val_fifo) = NULL; }
2234 #line 2235 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2235     break;
2236
2237   case 32:
2238 #line 472 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2239     {
2240                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2241                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2242                 }
2243 #line 2244 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2244     break;
2245
2246   case 36:
2247 #line 486 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2248     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2249 #line 2250 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2250     break;
2251
2252   case 46:
2253 #line 503 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2254     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2255 #line 2256 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2256     break;
2257
2258   case 47:
2259 #line 505 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2260     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2261 #line 2262 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2262     break;
2263
2264   case 54:
2265 #line 519 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2266     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2267 #line 2268 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2268     break;
2269
2270   case 56:
2271 #line 533 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2272     {
2273                         unpeer_node *my_node;
2274
2275                         my_node = create_unpeer_node((yyvsp[0].Address_node));
2276                         if (my_node)
2277                                 APPEND_G_FIFO(cfgt.unpeers, my_node);
2278                 }
2279 #line 2280 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2280     break;
2281
2282   case 59:
2283 #line 554 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2284     { cfgt.broadcastclient = 1; }
2285 #line 2286 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2286     break;
2287
2288   case 60:
2289 #line 556 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2290     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
2291 #line 2292 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2292     break;
2293
2294   case 61:
2295 #line 558 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2296     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
2297 #line 2298 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2298     break;
2299
2300   case 62:
2301 #line 560 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2302     { cfgt.mdnstries = (yyvsp[0].Integer); }
2303 #line 2304 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2304     break;
2305
2306   case 63:
2307 #line 571 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2308     {
2309                         attr_val *atrv;
2310
2311                         atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2312                         APPEND_G_FIFO(cfgt.vars, atrv);
2313                 }
2314 #line 2315 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2315     break;
2316
2317   case 64:
2318 #line 578 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2319     { cfgt.auth.control_key = (yyvsp[0].Integer); }
2320 #line 2321 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2321     break;
2322
2323   case 65:
2324 #line 580 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2325     {
2326                         cfgt.auth.cryptosw++;
2327                         CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
2328                 }
2329 #line 2330 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2330     break;
2331
2332   case 66:
2333 #line 585 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2334     { cfgt.auth.keys = (yyvsp[0].String); }
2335 #line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2336     break;
2337
2338   case 67:
2339 #line 587 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2340     { cfgt.auth.keysdir = (yyvsp[0].String); }
2341 #line 2342 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2342     break;
2343
2344   case 68:
2345 #line 589 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2346     { cfgt.auth.request_key = (yyvsp[0].Integer); }
2347 #line 2348 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2348     break;
2349
2350   case 69:
2351 #line 591 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2352     { cfgt.auth.revoke = (yyvsp[0].Integer); }
2353 #line 2354 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2354     break;
2355
2356   case 70:
2357 #line 593 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2358     {
2359                         /* [Bug 948] leaves it open if appending or
2360                          * replacing the trusted key list is the right
2361                          * way. In any case, either alternative should
2362                          * be coded correctly!
2363                          */
2364                         DESTROY_G_FIFO(cfgt.auth.trusted_key_list, destroy_attr_val); /* remove for append */
2365                         CONCAT_G_FIFOS(cfgt.auth.trusted_key_list, (yyvsp[0].Attr_val_fifo));
2366                 }
2367 #line 2368 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2368     break;
2369
2370   case 71:
2371 #line 603 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2372     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
2373 #line 2374 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2374     break;
2375
2376   case 72:
2377 #line 608 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2378     { (yyval.Attr_val_fifo) = NULL; }
2379 #line 2380 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2380     break;
2381
2382   case 73:
2383 #line 610 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2384     {
2385                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2386                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2387                 }
2388 #line 2389 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2389     break;
2390
2391   case 74:
2392 #line 618 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2393     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2394 #line 2395 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2395     break;
2396
2397   case 75:
2398 #line 620 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2399     {
2400                         (yyval.Attr_val) = NULL;
2401                         cfgt.auth.revoke = (yyvsp[0].Integer);
2402                         msyslog(LOG_WARNING,
2403                                 "'crypto revoke %d' is deprecated, "
2404                                 "please use 'revoke %d' instead.",
2405                                 cfgt.auth.revoke, cfgt.auth.revoke);
2406                 }
2407 #line 2408 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2408     break;
2409
2410   case 81:
2411 #line 645 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2412     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
2413 #line 2414 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2414     break;
2415
2416   case 82:
2417 #line 650 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2418     {
2419                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2420                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2421                 }
2422 #line 2423 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2423     break;
2424
2425   case 83:
2426 #line 655 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2427     {
2428                         (yyval.Attr_val_fifo) = NULL;
2429                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2430                 }
2431 #line 2432 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2432     break;
2433
2434   case 84:
2435 #line 663 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2436     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2437 #line 2438 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2438     break;
2439
2440   case 85:
2441 #line 665 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2442     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2443 #line 2444 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2444     break;
2445
2446   case 86:
2447 #line 667 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2448     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2449 #line 2450 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2450     break;
2451
2452   case 87:
2453 #line 669 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2454     { (yyval.Attr_val) = create_attr_ival(T_Basedate, (yyvsp[0].Integer)); }
2455 #line 2456 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2456     break;
2457
2458   case 99:
2459 #line 696 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2460     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
2461 #line 2462 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2462     break;
2463
2464   case 100:
2465 #line 698 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2466     {
2467                         if (lex_from_file()) {
2468                                 cfgt.stats_dir = (yyvsp[0].String);
2469                         } else {
2470                                 YYFREE((yyvsp[0].String));
2471                                 yyerror("statsdir remote configuration ignored");
2472                         }
2473                 }
2474 #line 2475 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2475     break;
2476
2477   case 101:
2478 #line 707 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2479     {
2480                         filegen_node *fgn;
2481
2482                         fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
2483                         APPEND_G_FIFO(cfgt.filegen_opts, fgn);
2484                 }
2485 #line 2486 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2486     break;
2487
2488   case 102:
2489 #line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2490     {
2491                         (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2492                         APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2493                 }
2494 #line 2495 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2495     break;
2496
2497   case 103:
2498 #line 722 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2499     {
2500                         (yyval.Int_fifo) = NULL;
2501                         APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2502                 }
2503 #line 2504 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2504     break;
2505
2506   case 112:
2507 #line 741 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2508     { (yyval.Attr_val_fifo) = NULL; }
2509 #line 2510 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2510     break;
2511
2512   case 113:
2513 #line 743 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2514     {
2515                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2516                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2517                 }
2518 #line 2519 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2519     break;
2520
2521   case 114:
2522 #line 751 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2523     {
2524                         if (lex_from_file()) {
2525                                 (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2526                         } else {
2527                                 (yyval.Attr_val) = NULL;
2528                                 YYFREE((yyvsp[0].String));
2529                                 yyerror("filegen file remote config ignored");
2530                         }
2531                 }
2532 #line 2533 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2533     break;
2534
2535   case 115:
2536 #line 761 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2537     {
2538                         if (lex_from_file()) {
2539                                 (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2540                         } else {
2541                                 (yyval.Attr_val) = NULL;
2542                                 yyerror("filegen type remote config ignored");
2543                         }
2544                 }
2545 #line 2546 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2546     break;
2547
2548   case 116:
2549 #line 770 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2550     {
2551                         const char *err;
2552
2553                         if (lex_from_file()) {
2554                                 (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2555                         } else {
2556                                 (yyval.Attr_val) = NULL;
2557                                 if (T_Link == (yyvsp[0].Integer))
2558                                         err = "filegen link remote config ignored";
2559                                 else
2560                                         err = "filegen nolink remote config ignored";
2561                                 yyerror(err);
2562                         }
2563                 }
2564 #line 2565 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2565     break;
2566
2567   case 117:
2568 #line 785 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2569     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2570 #line 2571 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2571     break;
2572
2573   case 129:
2574 #line 815 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2575     {
2576                         CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
2577                 }
2578 #line 2579 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2579     break;
2580
2581   case 130:
2582 #line 819 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2583     {
2584                         CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
2585                 }
2586 #line 2587 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2587     break;
2588
2589   case 131:
2590 #line 823 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2591     {
2592                         restrict_node *rn;
2593
2594                         rn = create_restrict_node((yyvsp[-2].Address_node), NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
2595                                                   lex_current()->curpos.nline);
2596                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2597                 }
2598 #line 2599 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2599     break;
2600
2601   case 132:
2602 #line 831 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2603     {
2604                         restrict_node *rn;
2605
2606                         rn = create_restrict_node((yyvsp[-4].Address_node), (yyvsp[-2].Address_node), (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
2607                                                   lex_current()->curpos.nline);
2608                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2609                 }
2610 #line 2611 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2611     break;
2612
2613   case 133:
2614 #line 839 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2615     {
2616                         restrict_node *rn;
2617
2618                         rn = create_restrict_node(NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
2619                                                   lex_current()->curpos.nline);
2620                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2621                 }
2622 #line 2623 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2623     break;
2624
2625   case 134:
2626 #line 847 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2627     {
2628                         restrict_node *rn;
2629
2630                         rn = create_restrict_node(
2631                                 create_address_node(
2632                                         estrdup("0.0.0.0"),
2633                                         AF_INET),
2634                                 create_address_node(
2635                                         estrdup("0.0.0.0"),
2636                                         AF_INET),
2637                                 (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
2638                                 lex_current()->curpos.nline);
2639                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2640                 }
2641 #line 2642 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2642     break;
2643
2644   case 135:
2645 #line 862 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2646     {
2647                         restrict_node *rn;
2648
2649                         rn = create_restrict_node(
2650                                 create_address_node(
2651                                         estrdup("::"),
2652                                         AF_INET6),
2653                                 create_address_node(
2654                                         estrdup("::"),
2655                                         AF_INET6),
2656                                 (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
2657                                 lex_current()->curpos.nline);
2658                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2659                 }
2660 #line 2661 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2661     break;
2662
2663   case 136:
2664 #line 877 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2665     {
2666                         restrict_node * rn;
2667
2668                         APPEND_G_FIFO((yyvsp[0].Attr_val_fifo), create_attr_ival((yyvsp[-2].Integer), 1));
2669                         rn = create_restrict_node(
2670                                 NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), lex_current()->curpos.nline);
2671                         APPEND_G_FIFO(cfgt.restrict_opts, rn);
2672                 }
2673 #line 2674 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2674     break;
2675
2676   case 137:
2677 #line 889 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2678     { (yyval.Integer) = -1; }
2679 #line 2680 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2680     break;
2681
2682   case 138:
2683 #line 891 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2684     {
2685                         if (((yyvsp[0].Integer) < -1) || ((yyvsp[0].Integer) > 100)) {
2686                                 struct FILE_INFO * ip_ctx;
2687
2688                                 ip_ctx = lex_current();
2689                                 msyslog(LOG_ERR,
2690                                         "Unreasonable ippeerlimit value (%d) in %s line %d, column %d.  Using 0.",
2691                                         (yyvsp[0].Integer),
2692                                         ip_ctx->fname,
2693                                         ip_ctx->errpos.nline,
2694                                         ip_ctx->errpos.ncol);
2695                                 (yyvsp[0].Integer) = 0;
2696                         }
2697                         (yyval.Integer) = (yyvsp[0].Integer);
2698                 }
2699 #line 2700 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2700     break;
2701
2702   case 139:
2703 #line 910 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2704     { (yyval.Attr_val_fifo) = NULL; }
2705 #line 2706 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2706     break;
2707
2708   case 140:
2709 #line 912 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2710     {
2711                         attr_val *av;
2712
2713                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2714                         av = create_attr_ival((yyvsp[0].Integer), 1);
2715                         APPEND_G_FIFO((yyval.Attr_val_fifo), av);
2716                 }
2717 #line 2718 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2718     break;
2719
2720   case 141:
2721 #line 920 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2722     {
2723                         attr_val *av;
2724
2725                         (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
2726                         av = create_attr_ival(T_ServerresponseFuzz, 1);
2727                         APPEND_G_FIFO((yyval.Attr_val_fifo), av);
2728                 }
2729 #line 2730 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2730     break;
2731
2732   case 159:
2733 #line 951 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2734     {
2735                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2736                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2737                 }
2738 #line 2739 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2739     break;
2740
2741   case 160:
2742 #line 956 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2743     {
2744                         (yyval.Attr_val_fifo) = NULL;
2745                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2746                 }
2747 #line 2748 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2748     break;
2749
2750   case 161:
2751 #line 964 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2752     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2753 #line 2754 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2754     break;
2755
2756   case 165:
2757 #line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2758     {
2759                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2760                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2761                 }
2762 #line 2763 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2763     break;
2764
2765   case 166:
2766 #line 980 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2767     {
2768                         (yyval.Attr_val_fifo) = NULL;
2769                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2770                 }
2771 #line 2772 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2772     break;
2773
2774   case 167:
2775 #line 988 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2776     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2777 #line 2778 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2778     break;
2779
2780   case 176:
2781 #line 1008 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2782     {
2783                         addr_opts_node *aon;
2784
2785                         aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2786                         APPEND_G_FIFO(cfgt.fudge, aon);
2787                 }
2788 #line 2789 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2789     break;
2790
2791   case 177:
2792 #line 1018 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2793     {
2794                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2795                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2796                 }
2797 #line 2798 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2798     break;
2799
2800   case 178:
2801 #line 1023 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2802     {
2803                         (yyval.Attr_val_fifo) = NULL;
2804                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2805                 }
2806 #line 2807 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2807     break;
2808
2809   case 179:
2810 #line 1031 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2811     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2812 #line 2813 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2813     break;
2814
2815   case 180:
2816 #line 1033 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2817     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2818 #line 2819 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2819     break;
2820
2821   case 181:
2822 #line 1035 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2823     {
2824                         if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
2825                                 (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2826                         } else {
2827                                 (yyval.Attr_val) = NULL;
2828                                 yyerror("fudge factor: stratum value not in [0..16], ignored");
2829                         }
2830                 }
2831 #line 2832 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2832     break;
2833
2834   case 182:
2835 #line 1044 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2836     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2837 #line 2838 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2838     break;
2839
2840   case 183:
2841 #line 1046 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2842     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2843 #line 2844 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2844     break;
2845
2846   case 191:
2847 #line 1068 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2848     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
2849 #line 2850 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2850     break;
2851
2852   case 192:
2853 #line 1073 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2854     {
2855                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2856                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2857                 }
2858 #line 2859 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2859     break;
2860
2861   case 193:
2862 #line 1078 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2863     {
2864                         (yyval.Attr_val_fifo) = NULL;
2865                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2866                 }
2867 #line 2868 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2868     break;
2869
2870   case 194:
2871 #line 1086 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2872     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2873 #line 2874 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2874     break;
2875
2876   case 198:
2877 #line 1102 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2878     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
2879 #line 2880 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2880     break;
2881
2882   case 199:
2883 #line 1104 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2884     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
2885 #line 2886 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2886     break;
2887
2888   case 200:
2889 #line 1109 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2890     {
2891                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2892                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2893                 }
2894 #line 2895 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2895     break;
2896
2897   case 201:
2898 #line 1114 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2899     {
2900                         (yyval.Attr_val_fifo) = NULL;
2901                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2902                 }
2903 #line 2904 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2904     break;
2905
2906   case 202:
2907 #line 1122 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2908     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2909 #line 2910 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2910     break;
2911
2912   case 203:
2913 #line 1124 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2914     {
2915                         if (lex_from_file()) {
2916                                 (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2917                         } else {
2918                                 char err_str[128];
2919
2920                                 (yyval.Attr_val) = NULL;
2921                                 snprintf(err_str, sizeof(err_str),
2922                                          "enable/disable %s remote configuration ignored",
2923                                          keyword((yyvsp[0].Integer)));
2924                                 yyerror(err_str);
2925                         }
2926                 }
2927 #line 2928 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2928     break;
2929
2930   case 216:
2931 #line 1163 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2932     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
2933 #line 2934 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2934     break;
2935
2936   case 217:
2937 #line 1168 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2938     {
2939                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2940                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2941                 }
2942 #line 2943 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2943     break;
2944
2945   case 218:
2946 #line 1173 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2947     {
2948                         (yyval.Attr_val_fifo) = NULL;
2949                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2950                 }
2951 #line 2952 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2952     break;
2953
2954   case 219:
2955 #line 1181 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2956     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2957 #line 2958 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2958     break;
2959
2960   case 232:
2961 #line 1206 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2962     {
2963                         attr_val *av;
2964
2965                         av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
2966                         APPEND_G_FIFO(cfgt.vars, av);
2967                 }
2968 #line 2969 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2969     break;
2970
2971   case 233:
2972 #line 1213 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2973     {
2974                         attr_val *av;
2975
2976                         av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2977                         APPEND_G_FIFO(cfgt.vars, av);
2978                 }
2979 #line 2980 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2980     break;
2981
2982   case 234:
2983 #line 1220 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2984     {
2985                         attr_val *av;
2986
2987                         av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2988                         APPEND_G_FIFO(cfgt.vars, av);
2989                 }
2990 #line 2991 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
2991     break;
2992
2993   case 235:
2994 #line 1227 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
2995     {
2996                         char error_text[64];
2997                         attr_val *av;
2998
2999                         if (lex_from_file()) {
3000                                 av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
3001                                 APPEND_G_FIFO(cfgt.vars, av);
3002                         } else {
3003                                 YYFREE((yyvsp[0].String));
3004                                 snprintf(error_text, sizeof(error_text),
3005                                          "%s remote config ignored",
3006                                          keyword((yyvsp[-1].Integer)));
3007                                 yyerror(error_text);
3008                         }
3009                 }
3010 #line 3011 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3011     break;
3012
3013   case 236:
3014 #line 1243 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3015     {
3016                         if (!lex_from_file()) {
3017                                 YYFREE((yyvsp[-1].String)); /* avoid leak */
3018                                 yyerror("remote includefile ignored");
3019                                 break;
3020                         }
3021                         if (lex_level() > MAXINCLUDELEVEL) {
3022                                 fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
3023                                 msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
3024                         } else {
3025                                 const char * path = FindConfig((yyvsp[-1].String)); /* might return $2! */
3026                                 if (!lex_push_file(path, "r")) {
3027                                         fprintf(stderr, "getconfig: Couldn't open <%s>\n", path);
3028                                         msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", path);
3029                                 }
3030                         }
3031                         YYFREE((yyvsp[-1].String)); /* avoid leak */
3032                 }
3033 #line 3034 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3034     break;
3035
3036   case 237:
3037 #line 1262 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3038     {
3039                         attr_val *av;
3040
3041                         av = create_attr_sval((yyvsp[-2].Integer), (yyvsp[-1].String));
3042                         av->flag = (yyvsp[0].Integer);
3043                         APPEND_G_FIFO(cfgt.vars, av);
3044                 }
3045 #line 3046 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3046     break;
3047
3048   case 238:
3049 #line 1270 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3050     { lex_flush_stack(); }
3051 #line 3052 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3052     break;
3053
3054   case 239:
3055 #line 1272 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3056     { /* see drift_parm below for actions */ }
3057 #line 3058 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3058     break;
3059
3060   case 240:
3061 #line 1274 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3062     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
3063 #line 3064 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3064     break;
3065
3066   case 241:
3067 #line 1276 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3068     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
3069 #line 3070 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3070     break;
3071
3072   case 242:
3073 #line 1278 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3074     { CONCAT_G_FIFOS(cfgt.pollskewlist, (yyvsp[0].Attr_val_fifo)); }
3075 #line 3076 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3076     break;
3077
3078   case 243:
3079 #line 1280 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3080     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
3081 #line 3082 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3082     break;
3083
3084   case 244:
3085 #line 1282 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3086     {
3087                         addr_opts_node *aon;
3088
3089                         aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
3090                         APPEND_G_FIFO(cfgt.trap, aon);
3091                 }
3092 #line 3093 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3093     break;
3094
3095   case 245:
3096 #line 1289 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3097     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
3098 #line 3099 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3099     break;
3100
3101   case 250:
3102 #line 1304 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3103     {
3104 #ifndef LEAP_SMEAR
3105                         yyerror("Built without LEAP_SMEAR support.");
3106 #endif
3107                 }
3108 #line 3109 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3109     break;
3110
3111   case 251:
3112 #line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3113     { (yyval.Integer) = FALSE; }
3114 #line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3115     break;
3116
3117   case 252:
3118 #line 1315 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3119     { (yyval.Integer) = TRUE; }
3120 #line 3121 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3121     break;
3122
3123   case 253:
3124 #line 1317 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3125     {  (yyval.Integer) = TRUE; }
3126 #line 3127 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3127     break;
3128
3129   case 258:
3130 #line 1332 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3131     {
3132                         if (lex_from_file()) {
3133                                 attr_val *av;
3134                                 av = create_attr_sval(T_Driftfile, (yyvsp[0].String));
3135                                 APPEND_G_FIFO(cfgt.vars, av);
3136                         } else {
3137                                 YYFREE((yyvsp[0].String));
3138                                 yyerror("driftfile remote configuration ignored");
3139                         }
3140                 }
3141 #line 3142 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3142     break;
3143
3144   case 259:
3145 #line 1343 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3146     {
3147                         if (lex_from_file()) {
3148                                 attr_val *av;
3149                                 av = create_attr_sval(T_Driftfile, (yyvsp[-1].String));
3150                                 APPEND_G_FIFO(cfgt.vars, av);
3151                                 av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double));
3152                                 APPEND_G_FIFO(cfgt.vars, av);
3153                         msyslog(LOG_WARNING,
3154                                 "'driftfile FILENAME WanderValue' is deprecated, "
3155                                 "please use separate 'driftfile FILENAME' and "
3156                                 "'nonvolatile WanderValue' lines instead.");
3157                         } else {
3158                                 YYFREE((yyvsp[-1].String));
3159                                 yyerror("driftfile remote configuration ignored");
3160                         }
3161                 }
3162 #line 3163 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3163     break;
3164
3165   case 260:
3166 #line 1360 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3167     {
3168                         if (lex_from_file()) {
3169                                 attr_val *av;
3170                                 av = create_attr_sval(T_Driftfile, estrdup(""));
3171                                 APPEND_G_FIFO(cfgt.vars, av);
3172                         } else {
3173                                 yyerror("driftfile remote configuration ignored");
3174                         }
3175                 }
3176 #line 3177 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3177     break;
3178
3179   case 261:
3180 #line 1373 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3181     { (yyval.Attr_val_fifo) = NULL; }
3182 #line 3183 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3183     break;
3184
3185   case 262:
3186 #line 1375 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3187     { (yyval.Attr_val_fifo) = append_gen_fifo((yyvsp[-1].Attr_val_fifo), (yyvsp[0].Attr_val)); }
3188 #line 3189 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3189     break;
3190
3191   case 263:
3192 #line 1380 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3193     {
3194                         if ((yyvsp[-2].Integer) < 0 || (yyvsp[0].Integer) < 0) {
3195                                 /* bad numbers */
3196                                 yyerror("pollskewlist: skew values must be >=0");
3197                                 destroy_attr_val((yyvsp[-3].Attr_val));
3198                                 (yyvsp[-3].Attr_val) = NULL;
3199                         } else if ((yyvsp[-3].Attr_val) == NULL) {
3200                                 yyerror("pollskewlist: poll value must be 3-17, inclusive");
3201                         } else if ((yyvsp[-3].Attr_val)->attr <= 0) {
3202                                 /* process default range */
3203                                 (yyvsp[-3].Attr_val)->value.r.first = (yyvsp[-2].Integer);
3204                                 (yyvsp[-3].Attr_val)->value.r.last  = (yyvsp[0].Integer);
3205                         } else if ((yyvsp[-2].Integer) < (1 << ((yyvsp[-3].Attr_val)->attr - 1)) && (yyvsp[0].Integer) < (1 << ((yyvsp[-3].Attr_val)->attr - 1))) {
3206                                 (yyvsp[-3].Attr_val)->value.r.first = (yyvsp[-2].Integer);
3207                                 (yyvsp[-3].Attr_val)->value.r.last  = (yyvsp[0].Integer);
3208                         } else {
3209                                 yyerror("pollskewlist: randomization limit must be <= half the poll interval");
3210                                 destroy_attr_val((yyvsp[-3].Attr_val));
3211                                 (yyvsp[-3].Attr_val) = NULL;
3212                         }
3213                         (yyval.Attr_val) = (yyvsp[-3].Attr_val);
3214                 }
3215 #line 3216 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3216     break;
3217
3218   case 264:
3219 #line 1405 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3220     { (yyval.Attr_val) = ((yyvsp[0].Integer) >= 3 && (yyvsp[0].Integer) <= 17) ? create_attr_rval((yyvsp[0].Integer), 0, 0) : NULL; }
3221 #line 3222 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3222     break;
3223
3224   case 265:
3225 #line 1406 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3226     { (yyval.Attr_val) = create_attr_rval(-1, 0, 0); }
3227 #line 3228 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3228     break;
3229
3230   case 266:
3231 #line 1412 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3232     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
3233 #line 3234 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3234     break;
3235
3236   case 268:
3237 #line 1418 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3238     { (yyval.Integer) = 0; }
3239 #line 3240 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3240     break;
3241
3242   case 269:
3243 #line 1423 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3244     { (yyval.Attr_val_fifo) = NULL; }
3245 #line 3246 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3246     break;
3247
3248   case 270:
3249 #line 1425 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3250     {
3251                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3252                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3253                 }
3254 #line 3255 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3255     break;
3256
3257   case 271:
3258 #line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3259     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
3260 #line 3261 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3261     break;
3262
3263   case 272:
3264 #line 1435 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3265     {
3266                         (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
3267                         destroy_address_node((yyvsp[0].Address_node));
3268                 }
3269 #line 3270 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3270     break;
3271
3272   case 273:
3273 #line 1443 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3274     {
3275                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3276                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3277                 }
3278 #line 3279 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3279     break;
3280
3281   case 274:
3282 #line 1448 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3283     {
3284                         (yyval.Attr_val_fifo) = NULL;
3285                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3286                 }
3287 #line 3288 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3288     break;
3289
3290   case 275:
3291 #line 1456 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3292     {
3293                         char    prefix;
3294                         char *  type;
3295
3296                         switch ((yyvsp[0].String)[0]) {
3297
3298                         case '+':
3299                         case '-':
3300                         case '=':
3301                                 prefix = (yyvsp[0].String)[0];
3302                                 type = (yyvsp[0].String) + 1;
3303                                 break;
3304
3305                         default:
3306                                 prefix = '=';
3307                                 type = (yyvsp[0].String);
3308                         }
3309
3310                         (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
3311                         YYFREE((yyvsp[0].String));
3312                 }
3313 #line 3314 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3314     break;
3315
3316   case 276:
3317 #line 1481 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3318     {
3319                         nic_rule_node *nrn;
3320
3321                         nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
3322                         APPEND_G_FIFO(cfgt.nic_rules, nrn);
3323                 }
3324 #line 3325 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3325     break;
3326
3327   case 277:
3328 #line 1488 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3329     {
3330                         nic_rule_node *nrn;
3331
3332                         nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
3333                         APPEND_G_FIFO(cfgt.nic_rules, nrn);
3334                 }
3335 #line 3336 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3336     break;
3337
3338   case 287:
3339 #line 1516 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3340     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
3341 #line 3342 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3342     break;
3343
3344   case 288:
3345 #line 1521 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3346     {
3347                         (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
3348                         APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3349                 }
3350 #line 3351 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3351     break;
3352
3353   case 289:
3354 #line 1526 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3355     {
3356                         (yyval.Int_fifo) = NULL;
3357                         APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3358                 }
3359 #line 3360 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3360     break;
3361
3362   case 297:
3363 #line 1550 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3364     {
3365                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3366                         APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3367                 }
3368 #line 3369 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3369     break;
3370
3371   case 298:
3372 #line 1555 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3373     {
3374                         (yyval.Attr_val_fifo) = NULL;
3375                         APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3376                 }
3377 #line 3378 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3378     break;
3379
3380   case 299:
3381 #line 1563 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3382     {
3383                         (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3384                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3385                 }
3386 #line 3387 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3387     break;
3388
3389   case 300:
3390 #line 1568 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3391     {
3392                         (yyval.Attr_val_fifo) = NULL;
3393                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3394                 }
3395 #line 3396 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3396     break;
3397
3398   case 301:
3399 #line 1576 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3400     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
3401 #line 3402 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3402     break;
3403
3404   case 303:
3405 #line 1582 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3406     { (yyval.Attr_val) = create_attr_rval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
3407 #line 3408 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3408     break;
3409
3410   case 304:
3411 #line 1587 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3412     {
3413                         (yyval.String_fifo) = (yyvsp[-1].String_fifo);
3414                         APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3415                 }
3416 #line 3417 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3417     break;
3418
3419   case 305:
3420 #line 1592 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3421     {
3422                         (yyval.String_fifo) = NULL;
3423                         APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3424                 }
3425 #line 3426 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3426     break;
3427
3428   case 306:
3429 #line 1600 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3430     {
3431                         (yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
3432                         APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3433                 }
3434 #line 3435 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3435     break;
3436
3437   case 307:
3438 #line 1605 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3439     {
3440                         (yyval.Address_fifo) = NULL;
3441                         APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3442                 }
3443 #line 3444 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3444     break;
3445
3446   case 308:
3447 #line 1613 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3448     {
3449                         if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
3450                                 yyerror("Integer value is not boolean (0 or 1). Assuming 1");
3451                                 (yyval.Integer) = 1;
3452                         } else {
3453                                 (yyval.Integer) = (yyvsp[0].Integer);
3454                         }
3455                 }
3456 #line 3457 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3457     break;
3458
3459   case 309:
3460 #line 1621 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3461     { (yyval.Integer) = 1; }
3462 #line 3463 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3463     break;
3464
3465   case 310:
3466 #line 1622 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3467     { (yyval.Integer) = 0; }
3468 #line 3469 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3469     break;
3470
3471   case 311:
3472 #line 1626 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3473     { (yyval.Double) = (double)(yyvsp[0].Integer); }
3474 #line 3475 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3475     break;
3476
3477   case 313:
3478 #line 1632 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3479     { (yyval.Integer) = basedate_eval_string((yyvsp[0].String)); YYFREE((yyvsp[0].String)); }
3480 #line 3481 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3481     break;
3482
3483   case 314:
3484 #line 1640 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3485     {
3486                         sim_node *sn;
3487
3488                         sn =  create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo));
3489                         APPEND_G_FIFO(cfgt.sim_details, sn);
3490
3491                         /* Revert from ; to \n for end-of-command */
3492                         old_config_style = 1;
3493                 }
3494 #line 3495 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3495     break;
3496
3497   case 315:
3498 #line 1657 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3499     { old_config_style = 0; }
3500 #line 3501 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3501     break;
3502
3503   case 316:
3504 #line 1662 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3505     {
3506                         (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3507                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3508                 }
3509 #line 3510 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3510     break;
3511
3512   case 317:
3513 #line 1667 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3514     {
3515                         (yyval.Attr_val_fifo) = NULL;
3516                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3517                 }
3518 #line 3519 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3519     break;
3520
3521   case 318:
3522 #line 1675 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3523     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3524 #line 3525 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3525     break;
3526
3527   case 321:
3528 #line 1685 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3529     {
3530                         (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
3531                         APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3532                 }
3533 #line 3534 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3534     break;
3535
3536   case 322:
3537 #line 1690 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3538     {
3539                         (yyval.Sim_server_fifo) = NULL;
3540                         APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3541                 }
3542 #line 3543 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3543     break;
3544
3545   case 323:
3546 #line 1698 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3547     { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
3548 #line 3549 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3549     break;
3550
3551   case 324:
3552 #line 1703 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3553     { (yyval.Double) = (yyvsp[-1].Double); }
3554 #line 3555 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3555     break;
3556
3557   case 325:
3558 #line 1708 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3559     { (yyval.Address_node) = (yyvsp[0].Address_node); }
3560 #line 3561 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3561     break;
3562
3563   case 326:
3564 #line 1713 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3565     {
3566                         (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
3567                         APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3568                 }
3569 #line 3570 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3570     break;
3571
3572   case 327:
3573 #line 1718 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3574     {
3575                         (yyval.Sim_script_fifo) = NULL;
3576                         APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3577                 }
3578 #line 3579 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3579     break;
3580
3581   case 328:
3582 #line 1726 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3583     { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
3584 #line 3585 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3585     break;
3586
3587   case 329:
3588 #line 1731 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3589     {
3590                         (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3591                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3592                 }
3593 #line 3594 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3594     break;
3595
3596   case 330:
3597 #line 1736 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3598     {
3599                         (yyval.Attr_val_fifo) = NULL;
3600                         APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3601                 }
3602 #line 3603 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3603     break;
3604
3605   case 331:
3606 #line 1744 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
3607     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3608 #line 3609 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3609     break;
3610
3611
3612 #line 3613 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
3613       default: break;
3614     }
3615   /* User semantic actions sometimes alter yychar, and that requires
3616      that yytoken be updated with the new translation.  We take the
3617      approach of translating immediately before every use of yytoken.
3618      One alternative is translating here after every semantic action,
3619      but that translation would be missed if the semantic action invokes
3620      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3621      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3622      incorrect destructor might then be invoked immediately.  In the
3623      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3624      to an incorrect destructor call or verbose syntax error message
3625      before the lookahead is translated.  */
3626   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3627
3628   YYPOPSTACK (yylen);
3629   yylen = 0;
3630   YY_STACK_PRINT (yyss, yyssp);
3631
3632   *++yyvsp = yyval;
3633
3634   /* Now 'shift' the result of the reduction.  Determine what state
3635      that goes to, based on the state we popped back to and the rule
3636      number reduced by.  */
3637
3638   yyn = yyr1[yyn];
3639
3640   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3641   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3642     yystate = yytable[yystate];
3643   else
3644     yystate = yydefgoto[yyn - YYNTOKENS];
3645
3646   goto yynewstate;
3647
3648
3649 /*--------------------------------------.
3650 | yyerrlab -- here on detecting error.  |
3651 `--------------------------------------*/
3652 yyerrlab:
3653   /* Make sure we have latest lookahead translation.  See comments at
3654      user semantic actions for why this is necessary.  */
3655   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3656
3657   /* If not already recovering from an error, report this error.  */
3658   if (!yyerrstatus)
3659     {
3660       ++yynerrs;
3661 #if ! YYERROR_VERBOSE
3662       yyerror (YY_("syntax error"));
3663 #else
3664 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3665                                         yyssp, yytoken)
3666       {
3667         char const *yymsgp = YY_("syntax error");
3668         int yysyntax_error_status;
3669         yysyntax_error_status = YYSYNTAX_ERROR;
3670         if (yysyntax_error_status == 0)
3671           yymsgp = yymsg;
3672         else if (yysyntax_error_status == 1)
3673           {
3674             if (yymsg != yymsgbuf)
3675               YYSTACK_FREE (yymsg);
3676             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3677             if (!yymsg)
3678               {
3679                 yymsg = yymsgbuf;
3680                 yymsg_alloc = sizeof yymsgbuf;
3681                 yysyntax_error_status = 2;
3682               }
3683             else
3684               {
3685                 yysyntax_error_status = YYSYNTAX_ERROR;
3686                 yymsgp = yymsg;
3687               }
3688           }
3689         yyerror (yymsgp);
3690         if (yysyntax_error_status == 2)
3691           goto yyexhaustedlab;
3692       }
3693 # undef YYSYNTAX_ERROR
3694 #endif
3695     }
3696
3697
3698
3699   if (yyerrstatus == 3)
3700     {
3701       /* If just tried and failed to reuse lookahead token after an
3702          error, discard it.  */
3703
3704       if (yychar <= YYEOF)
3705         {
3706           /* Return failure if at end of input.  */
3707           if (yychar == YYEOF)
3708             YYABORT;
3709         }
3710       else
3711         {
3712           yydestruct ("Error: discarding",
3713                       yytoken, &yylval);
3714           yychar = YYEMPTY;
3715         }
3716     }
3717
3718   /* Else will try to reuse lookahead token after shifting the error
3719      token.  */
3720   goto yyerrlab1;
3721
3722
3723 /*---------------------------------------------------.
3724 | yyerrorlab -- error raised explicitly by YYERROR.  |
3725 `---------------------------------------------------*/
3726 yyerrorlab:
3727
3728   /* Pacify compilers like GCC when the user code never invokes
3729      YYERROR and the label yyerrorlab therefore never appears in user
3730      code.  */
3731   if (/*CONSTCOND*/ 0)
3732      goto yyerrorlab;
3733
3734   /* Do not reclaim the symbols of the rule whose action triggered
3735      this YYERROR.  */
3736   YYPOPSTACK (yylen);
3737   yylen = 0;
3738   YY_STACK_PRINT (yyss, yyssp);
3739   yystate = *yyssp;
3740   goto yyerrlab1;
3741
3742
3743 /*-------------------------------------------------------------.
3744 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3745 `-------------------------------------------------------------*/
3746 yyerrlab1:
3747   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3748
3749   for (;;)
3750     {
3751       yyn = yypact[yystate];
3752       if (!yypact_value_is_default (yyn))
3753         {
3754           yyn += YYTERROR;
3755           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3756             {
3757               yyn = yytable[yyn];
3758               if (0 < yyn)
3759                 break;
3760             }
3761         }
3762
3763       /* Pop the current state because it cannot handle the error token.  */
3764       if (yyssp == yyss)
3765         YYABORT;
3766
3767
3768       yydestruct ("Error: popping",
3769                   yystos[yystate], yyvsp);
3770       YYPOPSTACK (1);
3771       yystate = *yyssp;
3772       YY_STACK_PRINT (yyss, yyssp);
3773     }
3774
3775   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3776   *++yyvsp = yylval;
3777   YY_IGNORE_MAYBE_UNINITIALIZED_END
3778
3779
3780   /* Shift the error token.  */
3781   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3782
3783   yystate = yyn;
3784   goto yynewstate;
3785
3786
3787 /*-------------------------------------.
3788 | yyacceptlab -- YYACCEPT comes here.  |
3789 `-------------------------------------*/
3790 yyacceptlab:
3791   yyresult = 0;
3792   goto yyreturn;
3793
3794 /*-----------------------------------.
3795 | yyabortlab -- YYABORT comes here.  |
3796 `-----------------------------------*/
3797 yyabortlab:
3798   yyresult = 1;
3799   goto yyreturn;
3800
3801 #if !defined yyoverflow || YYERROR_VERBOSE
3802 /*-------------------------------------------------.
3803 | yyexhaustedlab -- memory exhaustion comes here.  |
3804 `-------------------------------------------------*/
3805 yyexhaustedlab:
3806   yyerror (YY_("memory exhausted"));
3807   yyresult = 2;
3808   /* Fall through.  */
3809 #endif
3810
3811 yyreturn:
3812   if (yychar != YYEMPTY)
3813     {
3814       /* Make sure we have latest lookahead translation.  See comments at
3815          user semantic actions for why this is necessary.  */
3816       yytoken = YYTRANSLATE (yychar);
3817       yydestruct ("Cleanup: discarding lookahead",
3818                   yytoken, &yylval);
3819     }
3820   /* Do not reclaim the symbols of the rule whose action triggered
3821      this YYABORT or YYACCEPT.  */
3822   YYPOPSTACK (yylen);
3823   YY_STACK_PRINT (yyss, yyssp);
3824   while (yyssp != yyss)
3825     {
3826       yydestruct ("Cleanup: popping",
3827                   yystos[*yyssp], yyvsp);
3828       YYPOPSTACK (1);
3829     }
3830 #ifndef yyoverflow
3831   if (yyss != yyssa)
3832     YYSTACK_FREE (yyss);
3833 #endif
3834 #if YYERROR_VERBOSE
3835   if (yymsg != yymsgbuf)
3836     YYSTACK_FREE (yymsg);
3837 #endif
3838   return yyresult;
3839 }
3840 #line 1755 "../../ntpd/ntp_parser.y" /* yacc.c:1906  */
3841
3842
3843 void
3844 yyerror(
3845         const char *msg
3846         )
3847 {
3848         int retval;
3849         struct FILE_INFO * ip_ctx;
3850
3851         ip_ctx = lex_current();
3852         ip_ctx->errpos = ip_ctx->tokpos;
3853
3854         msyslog(LOG_ERR, "line %d column %d %s",
3855                 ip_ctx->errpos.nline, ip_ctx->errpos.ncol, msg);
3856         if (!lex_from_file()) {
3857                 /* Save the error message in the correct buffer */
3858                 retval = snprintf(remote_config.err_msg + remote_config.err_pos,
3859                                   MAXLINE - remote_config.err_pos,
3860                                   "column %d %s",
3861                                   ip_ctx->errpos.ncol, msg);
3862
3863                 /* Increment the value of err_pos */
3864                 if (retval > 0)
3865                         remote_config.err_pos += retval;
3866
3867                 /* Increment the number of errors */
3868                 ++remote_config.no_errors;
3869         }
3870 }
3871
3872
3873 /*
3874  * token_name - convert T_ token integers to text
3875  *              example: token_name(T_Server) returns "T_Server"
3876  */
3877 const char *
3878 token_name(
3879         int token
3880         )
3881 {
3882         return yytname[YYTRANSLATE(token)];
3883 }
3884
3885
3886 /* Initial Testing function -- ignore */
3887 #if 0
3888 int main(int argc, char *argv[])
3889 {
3890         ip_file = FOPEN(argv[1], "r");
3891         if (!ip_file)
3892                 fprintf(stderr, "ERROR!! Could not open file: %s\n", argv[1]);
3893         yyparse();
3894         return 0;
3895 }
3896 #endif
3897