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