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