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