From: Rob Neal Date: Tue, 12 Jun 2007 22:03:45 +0000 (-0400) Subject: Many files: X-Git-Tag: NTP_4_2_5P53~5^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a348c29bed203cb0affd37ea87fc70f58d65de5a;p=thirdparty%2Fntp.git Many files: allow null driftfile. bk: 466f1841xdWd-LBACBG0W3lOwcfR7A --- diff --git a/ChangeLog b/ChangeLog index b25b35cad..c83f3f849 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ +* Allow null driftfile. * Use a char for DIR_SEP, not a string. * [Bug 850] driftfile parsing changes. * driftfile maintenance changes from Dave Mills. Use clock_phi instead of diff --git a/ntpd/ntp_config.c b/ntpd/ntp_config.c index 015c197ea..991d5bf45 100644 --- a/ntpd/ntp_config.c +++ b/ntpd/ntp_config.c @@ -182,6 +182,7 @@ int old_config_style = 1; /* A boolean flag, which when set, */ extern int sys_maxclock; +extern char *stats_drift_file; /* name of the driftfile */ /* FUNCTION PROTOTYPES */ @@ -354,6 +355,8 @@ create_attr_sval( my_val = (struct attr_val *) get_node(sizeof(struct attr_val)); my_val->attr = attr; + if (s == NULL) + s = "\0"; /* free() and strdup() glow on NULL */ my_val->value.s = strdup(s); my_val->type = T_String; return my_val; @@ -1558,8 +1561,13 @@ config_vars(void) proto_config(PROTO_ADJ, 0, curr_var->value.d, NULL); break; case T_Driftfile: - stats_config(STATS_FREQ_FILE, curr_var->value.s); - free(curr_var->value.s); + if (!strcmp(curr_var->value.s, "\0")) { + stats_drift_file = 0; + msyslog(LOG_INFO, "config: driftfile disabled\n"); + } else { + stats_config(STATS_FREQ_FILE, curr_var->value.s); + free(curr_var->value.s); + } break; case T_DriftMinutes: stats_write_period = 60 * curr_var->value.i; diff --git a/ntpd/ntp_parser.c b/ntpd/ntp_parser.c index 84f482644..dce6171fa 100644 --- a/ntpd/ntp_parser.c +++ b/ntpd/ntp_parser.c @@ -389,6 +389,7 @@ struct FILE_INFO *ip_file; /* Pointer to the configuration file stream */ void yyerror (char *msg); + extern int input_from_file; /* 0=input from ntpq>config command buffer */ /* SK: The following is a terrible hack to allow the NTP code to be built * without OPENSSL. The following symbols need to be defined in the @@ -428,7 +429,7 @@ #endif #ifndef YYSTYPE -#line 67 "ntp_parser.y" +#line 68 "ntp_parser.y" typedef union { char *String; double Double; @@ -444,7 +445,7 @@ typedef union { script_info *Sim_script; } yystype; /* Line 193 of /usr/local/share/bison/yacc.c. */ -#line 448 "ntp_parser.c" +#line 449 "ntp_parser.c" # define YYSTYPE yystype # define YYSTYPE_IS_TRIVIAL 1 #endif @@ -465,7 +466,7 @@ typedef struct yyltype /* Line 213 of /usr/local/share/bison/yacc.c. */ -#line 469 "ntp_parser.c" +#line 470 "ntp_parser.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -562,15 +563,15 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 163 -#define YYLAST 524 +#define YYFINAL 164 +#define YYLAST 464 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 158 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 63 /* YYNRULES -- Number of rules. */ -#define YYNRULES 226 +#define YYNRULES 227 /* YYNRULES -- Number of states. */ #define YYNSTATES 361 @@ -649,12 +650,12 @@ static const unsigned short yyprhs[] = 357, 360, 363, 366, 369, 372, 375, 377, 379, 381, 383, 385, 387, 389, 391, 394, 397, 399, 402, 405, 408, 411, 414, 417, 420, 424, 426, 429, 432, 435, - 439, 442, 445, 448, 451, 454, 457, 461, 464, 465, - 467, 472, 476, 479, 481, 484, 487, 490, 492, 495, - 497, 499, 501, 503, 506, 508, 511, 513, 516, 518, - 520, 522, 524, 526, 528, 534, 536, 540, 543, 547, - 551, 554, 556, 562, 567, 571, 573, 575, 578, 580, - 587, 591, 594, 598, 602, 606, 610 + 438, 441, 444, 447, 450, 453, 456, 460, 463, 465, + 468, 469, 474, 478, 481, 483, 486, 489, 492, 494, + 497, 499, 501, 503, 505, 508, 510, 513, 515, 518, + 520, 522, 524, 526, 528, 530, 536, 538, 542, 545, + 549, 553, 556, 558, 564, 569, 573, 575, 577, 580, + 582, 589, 593, 596, 600, 604, 608, 612 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -703,53 +704,53 @@ static const short yyrhs[] = 207, -1, 28, 207, -1, 42, 207, -1, 46, 207, -1, 98, 207, -1, 122, 207, -1, 123, 207, -1, 53, 125, 161, -1, 33, -1, 13, 207, -1, 16, - 54, -1, 127, 207, -1, 30, 125, 196, -1, 103, - 125, -1, 65, 125, -1, 7, 54, -1, 64, 200, - -1, 101, 204, -1, 117, 197, -1, 132, 165, 198, - -1, 135, 203, -1, -1, 54, -1, 125, 153, 125, - 25, -1, 125, 153, 125, -1, 198, 199, -1, 199, - -1, 105, 54, -1, 55, 165, -1, 200, 201, -1, - 201, -1, 202, 125, -1, 125, -1, 154, -1, 155, - -1, 153, -1, 203, 54, -1, 54, -1, 204, 125, - -1, 125, -1, 205, 164, -1, 164, -1, 54, -1, - 133, -1, 34, -1, 54, -1, 29, -1, 209, 156, - 210, 212, 157, -1, 143, -1, 210, 211, 142, -1, - 211, 142, -1, 144, 153, 207, -1, 145, 153, 207, - -1, 212, 213, -1, 213, -1, 215, 156, 214, 217, - 157, -1, 146, 153, 207, 142, -1, 116, 153, 216, - -1, 165, -1, 125, -1, 217, 218, -1, 218, -1, - 147, 153, 207, 156, 219, 157, -1, 219, 220, 142, - -1, 220, 142, -1, 148, 153, 207, -1, 149, 153, - 207, -1, 150, 153, 207, -1, 151, 153, 207, -1, - 152, 153, 207, -1 + 54, -1, 127, 207, -1, 30, 196, -1, 103, 125, + -1, 65, 125, -1, 7, 54, -1, 64, 200, -1, + 101, 204, -1, 117, 197, -1, 132, 165, 198, -1, + 135, 203, -1, 125, -1, 125, 54, -1, -1, 125, + 153, 125, 25, -1, 125, 153, 125, -1, 198, 199, + -1, 199, -1, 105, 54, -1, 55, 165, -1, 200, + 201, -1, 201, -1, 202, 125, -1, 125, -1, 154, + -1, 155, -1, 153, -1, 203, 54, -1, 54, -1, + 204, 125, -1, 125, -1, 205, 164, -1, 164, -1, + 54, -1, 133, -1, 34, -1, 54, -1, 29, -1, + 209, 156, 210, 212, 157, -1, 143, -1, 210, 211, + 142, -1, 211, 142, -1, 144, 153, 207, -1, 145, + 153, 207, -1, 212, 213, -1, 213, -1, 215, 156, + 214, 217, 157, -1, 146, 153, 207, 142, -1, 116, + 153, 216, -1, 165, -1, 125, -1, 217, 218, -1, + 218, -1, 147, 153, 207, 156, 219, 157, -1, 219, + 220, 142, -1, 220, 142, -1, 148, 153, 207, -1, + 149, 153, 207, -1, 150, 153, 207, -1, 151, 153, + 207, -1, 152, 153, 207, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 298, 298, 302, 303, 308, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 335, 341, - 350, 351, 352, 353, 354, 358, 359, 360, 376, 377, - 381, 382, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 409, 411, 413, 415, 426, - 428, 430, 436, 438, 440, 442, 444, 449, 450, 454, - 456, 458, 460, 462, 464, 466, 468, 470, 472, 482, - 487, 488, 492, 494, 496, 498, 500, 502, 504, 506, - 508, 510, 512, 522, 524, 526, 534, 535, 539, 541, - 543, 545, 547, 549, 554, 555, 559, 560, 561, 562, - 563, 564, 568, 569, 570, 571, 572, 573, 574, 583, - 585, 590, 595, 603, 604, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 623, 624, 628, - 629, 630, 638, 643, 644, 648, 650, 652, 654, 656, - 658, 660, 662, 671, 673, 678, 679, 683, 684, 685, - 686, 687, 688, 690, 698, 702, 703, 707, 708, 709, - 710, 711, 712, 713, 721, 737, 743, 745, 747, 749, - 752, 754, 756, 759, 761, 763, 765, 767, 771, 772, - 777, 779, 785, 786, 790, 791, 796, 797, 801, 802, - 819, 820, 821, 830, 831, 835, 836, 840, 841, 845, - 854, 855, 859, 860, 868, 883, 887, 888, 892, 893, - 897, 898, 902, 907, 911, 915, 916, 920, 921, 925, - 930, 931, 935, 937, 939, 941, 943 + 0, 299, 299, 303, 304, 309, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 338, 344, + 353, 354, 355, 356, 357, 361, 362, 363, 379, 380, + 384, 385, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 412, 414, 416, 418, 429, + 431, 433, 439, 441, 443, 445, 447, 452, 453, 457, + 459, 461, 463, 465, 467, 469, 471, 473, 475, 485, + 490, 491, 495, 497, 499, 501, 503, 505, 507, 509, + 511, 513, 515, 525, 527, 529, 537, 538, 542, 544, + 546, 548, 550, 552, 557, 558, 562, 563, 564, 565, + 566, 567, 571, 572, 573, 574, 575, 576, 577, 586, + 588, 593, 598, 606, 607, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 626, 627, 631, + 632, 633, 641, 646, 647, 651, 653, 655, 657, 659, + 661, 663, 665, 674, 676, 681, 682, 686, 687, 688, + 689, 690, 691, 693, 701, 705, 706, 710, 711, 712, + 713, 714, 715, 716, 724, 740, 746, 748, 750, 752, + 755, 757, 759, 762, 764, 766, 768, 770, 774, 776, + 779, 784, 786, 792, 793, 797, 798, 803, 804, 808, + 809, 826, 827, 828, 837, 838, 842, 843, 847, 848, + 852, 861, 862, 866, 867, 875, 890, 894, 895, 899, + 900, 904, 905, 909, 914, 918, 922, 923, 927, 928, + 932, 937, 938, 942, 944, 946, 948, 950 }; #endif @@ -854,11 +855,11 @@ static const unsigned char yyr1[] = 191, 191, 191, 191, 192, 193, 193, 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, - 197, 197, 198, 198, 199, 199, 200, 200, 201, 201, - 202, 202, 202, 203, 203, 204, 204, 205, 205, 206, - 206, 206, 207, 207, 208, 209, 210, 210, 211, 211, - 212, 212, 213, 214, 215, 216, 216, 217, 217, 218, - 219, 219, 220, 220, 220, 220, 220 + 196, 197, 197, 198, 198, 199, 199, 200, 200, 201, + 201, 202, 202, 202, 203, 203, 204, 204, 205, 205, + 206, 206, 206, 207, 207, 208, 209, 210, 210, 211, + 211, 212, 212, 213, 214, 215, 216, 216, 217, 217, + 218, 219, 219, 220, 220, 220, 220, 220 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -880,13 +881,13 @@ static const unsigned char yyr2[] = 2, 2, 3, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, - 2, 2, 2, 2, 3, 1, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 3, 2, 0, 1, - 4, 3, 2, 1, 2, 2, 2, 1, 2, 1, - 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 5, 1, 3, 2, 3, 3, - 2, 1, 5, 4, 3, 1, 1, 2, 1, 6, - 3, 2, 3, 3, 3, 3, 3 + 2, 2, 2, 2, 3, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, 1, 2, + 0, 4, 3, 2, 1, 2, 2, 2, 1, 2, + 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 5, 1, 3, 2, 3, + 3, 2, 1, 5, 4, 3, 1, 1, 2, 1, + 6, 3, 2, 3, 3, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -895,110 +896,110 @@ static const unsigned char yyr2[] = static const unsigned char yydefact[] = { 0, 0, 0, 0, 23, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, + 0, 0, 180, 0, 165, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 22, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 2, 0, 7, 0, 8, 9, + 0, 0, 206, 0, 2, 0, 7, 0, 8, 9, 12, 10, 11, 13, 14, 15, 16, 17, 0, 5, - 49, 172, 46, 203, 202, 166, 167, 50, 0, 0, + 49, 172, 46, 204, 203, 166, 167, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 58, 147, 148, 149, 150, 151, 152, 153, 144, 146, 0, - 0, 0, 109, 128, 178, 143, 88, 89, 90, 91, - 92, 93, 0, 28, 29, 0, 26, 0, 25, 6, - 52, 53, 189, 192, 190, 191, 173, 187, 0, 171, - 198, 47, 48, 196, 174, 170, 54, 113, 113, 25, - 55, 0, 175, 83, 87, 84, 168, 0, 0, 0, - 0, 0, 0, 0, 154, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 71, 0, - 194, 56, 177, 1, 0, 4, 19, 0, 59, 66, - 62, 64, 65, 60, 67, 68, 61, 63, 57, 145, - 129, 130, 131, 127, 179, 169, 101, 100, 0, 98, + 0, 0, 109, 128, 178, 169, 143, 88, 89, 90, + 91, 92, 93, 0, 28, 29, 0, 26, 0, 25, + 6, 52, 53, 190, 193, 191, 192, 173, 188, 0, + 171, 199, 47, 48, 197, 174, 170, 54, 113, 113, + 25, 55, 0, 175, 83, 87, 84, 168, 0, 0, + 0, 0, 0, 0, 0, 154, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 69, 71, + 0, 195, 56, 177, 1, 0, 4, 19, 0, 59, + 66, 62, 64, 65, 60, 67, 68, 61, 63, 57, + 145, 129, 130, 131, 127, 179, 101, 100, 0, 98, 99, 0, 85, 95, 27, 0, 0, 0, 0, 0, - 0, 0, 0, 132, 134, 164, 186, 188, 197, 195, + 0, 0, 0, 132, 134, 164, 187, 189, 198, 196, 111, 110, 0, 0, 86, 157, 158, 159, 160, 161, - 162, 163, 155, 81, 72, 201, 199, 200, 74, 73, + 162, 163, 155, 81, 72, 202, 200, 201, 74, 73, 79, 77, 82, 78, 76, 80, 75, 70, 0, 0, - 176, 183, 193, 3, 32, 33, 34, 0, 0, 0, + 176, 184, 194, 3, 32, 33, 34, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 18, 31, 0, 0, 0, 0, 96, 108, 104, 106, 102, 103, 105, 107, 97, 94, 139, 140, 141, 142, 138, 137, 135, 136, 133, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 114, 113, 181, 185, 184, 182, + 123, 124, 125, 126, 114, 113, 182, 186, 185, 183, 35, 37, 36, 43, 42, 44, 30, 0, 0, 0, - 0, 0, 211, 0, 207, 112, 180, 208, 209, 0, - 206, 204, 210, 0, 216, 215, 214, 0, 0, 0, - 0, 0, 218, 0, 0, 212, 217, 213, 0, 0, + 0, 0, 212, 0, 208, 112, 181, 209, 210, 0, + 207, 205, 211, 0, 217, 216, 215, 0, 0, 0, + 0, 0, 219, 0, 0, 213, 218, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 221, 222, 223, 224, 225, 226, - 220 + 0, 0, 220, 0, 222, 223, 224, 225, 226, 227, + 221 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - -1, 43, 44, 45, 46, 47, 120, 108, 257, 258, - 48, 49, 78, 79, 50, 157, 158, 51, 133, 102, + -1, 43, 44, 45, 46, 47, 121, 109, 257, 258, + 48, 49, 78, 79, 50, 158, 159, 51, 134, 103, 192, 193, 271, 52, 210, 294, 92, 93, 53, 203, - 204, 54, 87, 88, 55, 144, 145, 56, 185, 132, - 240, 241, 116, 117, 118, 161, 124, 121, 228, 65, + 204, 54, 87, 88, 55, 145, 146, 56, 95, 133, + 240, 241, 117, 118, 119, 162, 125, 122, 228, 65, 57, 58, 261, 262, 311, 312, 328, 313, 326, 331, 332, 345, 346 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -133 +#define YYPACT_NINF -135 static const short yypact[] = { - 25, -120, -30, -14, -133, -55, -24, -10, -9, 192, - 54, -2, -76, 54, -133, 53, -40, -75, -72, -63, - 86, -61, -133, -40, -40, -133, -60, -58, -133, 17, - 178, 19, -133, -48, 53, -45, -24, 14, 141, -19, - 28, 28, -133, 87, 165, -56, -133, -40, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -64, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -37, -28, - -27, -25, -16, 0, 2, 6, 7, 8, 192, -133, - -133, -133, -133, -133, -133, -133, -133, 54, -133, 41, - 62, 69, -2, -133, 89, 54, -133, -133, -133, -133, - -133, -133, -15, -133, -133, 20, -133, 223, -133, 310, - -133, -133, -133, -133, -133, -133, 86, -133, 29, -133, - -133, -40, -40, -133, 45, -133, -133, -133, -133, 80, - -133, 22, -133, 53, -133, -133, -133, -24, -24, -24, - -24, -24, -24, -24, 14, -133, 119, 126, -11, 130, - -24, -24, 131, -24, -24, 134, 135, 141, -133, -39, - -133, 136, 136, -133, 51, -133, 327, -110, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, 71, -133, - -133, 9, -15, -133, -133, -11, -11, -11, -11, 74, - 140, -24, -24, 223, -133, -133, -133, -133, -133, -133, - 387, 387, -19, 75, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -19, 148, - -39, -133, -133, -133, -133, -133, -133, 152, 153, 161, - 167, -133, -133, -133, -133, 168, 173, 327, -133, 66, - 78, 18, 93, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, 203, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -24, -24, 96, - 108, -103, -133, 95, -133, 387, -133, -133, -133, -44, - -133, -133, -133, 113, -133, -133, -133, 99, 118, -24, - 114, -132, -133, 128, -24, -133, -133, -133, 117, 106, - 121, 122, 124, 132, 138, 207, 145, -24, -24, -24, - -24, -24, -133, 146, -133, -133, -133, -133, -133, -133, - -133 + 10, -134, -41, -34, -135, -66, -15, -19, -7, 129, + 0, -4, -75, 0, -135, 32, 42, -73, -71, -65, + 50, -49, -135, 42, 42, -135, -43, -33, -135, 26, + 37, 47, -135, 5, 32, 13, -15, -1, 179, 39, + 56, 56, -135, 135, 165, 4, -135, 42, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -6, -135, + -135, -135, -135, -135, -135, -135, -135, -135, 24, 29, + 34, 35, 36, 44, 45, 63, 68, 69, 129, -135, + -135, -135, -135, -135, -135, -135, -135, 0, -135, 103, + 146, 148, -4, -135, 152, -135, 0, -135, -135, -135, + -135, -135, -135, -2, -135, -135, 82, -135, 27, -135, + 310, -135, -135, -135, -135, -135, -135, 50, -135, 87, + -135, -135, 42, 42, -135, 94, -135, -135, -135, -135, + 151, -135, 72, -135, 32, -135, -135, -135, -15, -15, + -15, -15, -15, -15, -15, -1, -135, 168, 172, -16, + 173, -15, -15, 174, -15, -15, 177, 178, 179, -135, + -11, -135, 181, 181, -135, 95, -135, 327, -45, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, 120, -135, + -135, 46, -2, -135, -135, -16, -16, -16, -16, 121, + 182, -15, -15, 27, -135, -135, -135, -135, -135, -135, + 299, 299, 39, 128, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, 39, 202, + -11, -135, -135, -135, -135, -135, -135, 203, 211, 213, + 216, -135, -135, -135, -135, 219, 220, 327, -135, 122, + 124, 66, 141, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, 260, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -15, -15, 134, + 147, -109, -135, 132, -135, 299, -135, -135, -135, 11, + -135, -135, -135, 145, -135, -135, -135, 149, 154, -15, + 150, -128, -135, 162, -15, -135, -135, -135, 138, 111, + 153, 156, 157, 166, 167, 92, 163, -15, -15, -15, + -15, -15, -135, 176, -135, -135, -135, -135, -135, -135, + -135 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -133, -133, -133, -35, -133, -133, 83, -29, -133, 26, - -133, -133, -133, 211, -133, -133, 137, -133, -133, -13, - -133, 112, -133, -133, -126, -133, -133, 213, -133, -133, - 103, -133, 296, -68, -133, -133, 174, -133, -133, -133, - -133, 79, -133, 204, -133, 283, -133, 301, 49, -36, - -133, -133, -133, 67, -133, 16, -133, -133, -133, -133, - -1, -133, -7 + -135, -135, -135, -38, -135, -135, 41, -29, -135, 67, + -135, -135, -135, 247, -135, -135, 169, -135, -135, -22, + -135, 136, -135, -135, -127, -135, -135, 237, -135, -135, + 127, -135, 321, -62, -135, -135, 190, -135, -135, -135, + -135, 98, -135, 222, -135, 303, -135, 323, 19, -36, + -135, -135, -135, 84, -135, 38, -135, -135, -135, -135, + 17, -135, 7 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1008,116 +1009,104 @@ static const short yypgoto[] = #define YYTABLE_NINF -7 static const short yytable[] = { - 136, 129, 211, 103, 104, 63, 89, 103, 104, 164, - 159, 186, 264, 309, 105, 330, 238, 187, 137, 179, - 188, 134, 59, 225, 60, 335, 1, 179, 103, 104, - 64, 2, 3, 265, 259, 260, 4, 5, 6, 62, - 61, 7, 138, 226, 66, 67, 8, 9, 189, 94, - 109, 10, 11, 110, 321, 12, 139, 13, 14, 80, - 140, 15, 111, 81, 119, 123, 239, 125, 16, 82, - 190, 126, 96, 130, 205, 90, 97, 131, 17, 91, - 135, 324, 160, 18, 19, 106, 165, 163, 168, 20, - 21, 266, 167, 22, 23, 180, 267, 169, 170, 107, - 171, 215, 216, 217, 218, 219, 220, 221, 24, 172, - 83, 268, 141, 128, 230, 231, 181, 233, 234, 98, - 214, 191, 227, 182, 25, 173, 26, 174, 27, 28, - 166, 175, 176, 177, 309, 84, 142, 143, 29, 30, - 31, 32, 33, 184, 34, 194, 35, 269, 270, 85, - 212, 146, 36, 99, 207, 37, 38, 39, 147, 40, - 41, 148, 259, 260, 100, 279, 280, -6, 42, 315, - 209, 2, 3, 223, 86, 213, 4, 5, 6, 101, - 224, 7, 149, 295, 229, 232, 8, 9, 235, 236, - 242, 10, 11, 243, 278, 12, 263, 13, 14, 277, - 296, 15, 298, 127, 208, 208, 300, 301, 16, 297, - 68, 112, 150, 151, 152, 302, 153, 154, 17, 307, - 155, 303, 304, 18, 19, 103, 104, 305, 316, 20, - 21, 308, 105, 22, 23, 314, 69, 70, 156, 113, - 114, 115, 71, 72, 273, 274, 275, 276, 24, 319, - 320, 323, 329, 73, 340, 341, 342, 343, 344, 327, - 195, 196, 197, 198, 25, 330, 26, 334, 27, 28, - 337, 317, 318, 339, 347, 348, 74, 349, 29, 30, - 31, 32, 33, 306, 34, 350, 35, 354, 360, 178, - 325, 351, 36, 333, 237, 37, 38, 39, 338, 40, - 41, 75, 76, 106, 272, 183, 281, -6, 42, 95, - 77, 355, 356, 357, 358, 359, 2, 3, 222, 299, - 206, 4, 5, 6, 162, 122, 7, 322, 310, 0, - 336, 8, 9, 244, 0, 199, 10, 11, 353, 0, - 12, 245, 13, 14, 0, 0, 15, 200, 0, 0, - 0, 201, 202, 16, 0, 340, 341, 342, 343, 344, - 0, 0, 0, 17, 352, 0, 0, 0, 18, 19, + 137, 130, 211, 138, 89, 80, 165, 309, 59, 81, + 160, 1, 135, 60, 63, 82, 2, 3, 225, 330, + 61, 4, 5, 6, 186, 180, 7, 139, 62, 335, + 187, 8, 9, 188, 180, 66, 10, 11, 226, 64, + 12, 140, 13, 14, 238, 141, 15, 67, 321, 264, + 94, 97, 110, 16, 111, 98, 83, 108, 104, 105, + 112, 189, 128, 17, 195, 196, 197, 198, 18, 19, + 265, 129, 205, 90, 20, 21, 120, 91, 22, 23, + 127, 84, 124, 190, 104, 105, 104, 105, 167, 104, + 105, 106, 126, 24, 239, 85, 106, 142, 99, 259, + 260, 131, 215, 216, 217, 218, 219, 220, 221, 25, + 161, 26, 214, 27, 28, 230, 231, 227, 233, 234, + 86, 143, 144, 29, 30, 31, 32, 33, 266, 34, + 132, 35, 100, 267, 191, 164, 324, 36, 136, 199, + 37, 38, 39, 101, 40, 41, 166, 68, 268, 169, + 168, 200, -6, 42, 170, 201, 202, 181, 102, 171, + 172, 173, 107, 208, 208, 279, 280, 107, 315, 174, + 175, 2, 3, 69, 70, 113, 4, 5, 6, 71, + 72, 7, 309, 295, 269, 270, 8, 9, 176, 147, + 73, 10, 11, 177, 178, 12, 148, 13, 14, 149, + 182, 15, 183, 114, 115, 116, 185, 194, 16, 297, + 259, 260, 207, 74, 273, 274, 275, 276, 17, 209, + 150, 212, 223, 18, 19, 213, 224, 229, 232, 20, + 21, 235, 236, 22, 23, 242, 278, 243, 75, 76, + 340, 341, 342, 343, 344, 263, 277, 77, 24, 352, + 151, 152, 153, 296, 154, 155, 298, 300, 156, 340, + 341, 342, 343, 344, 25, 301, 26, 302, 27, 28, + 303, 317, 318, 304, 305, 307, 157, 308, 29, 30, + 31, 32, 33, 314, 34, 316, 35, 319, 323, 320, + 325, 327, 36, 333, 339, 37, 38, 39, 338, 40, + 41, 330, 329, 334, 337, 354, 347, -6, 42, 348, + 349, 355, 356, 357, 358, 359, 2, 3, 360, 350, + 351, 4, 5, 6, 306, 179, 7, 237, 272, 184, + 281, 8, 9, 244, 96, 222, 10, 11, 299, 206, + 12, 245, 13, 14, 163, 310, 15, 123, 336, 322, + 0, 282, 353, 16, 0, 0, 0, 0, 0, 283, + 0, 284, 0, 17, 0, 0, 285, 0, 18, 19, 0, 0, 0, 0, 20, 21, 246, 0, 22, 23, - 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 247, 286, 0, 287, 288, 0, + 289, 290, 291, 24, 0, 292, 0, 0, 0, 0, 0, 248, 0, 0, 0, 249, 0, 250, 0, 25, 0, 26, 0, 27, 28, 0, 0, 251, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 0, 34, - 0, 35, 0, 0, 252, 253, 0, 36, 0, 282, - 37, 38, 39, 0, 40, 41, 0, 283, 0, 284, - 0, 0, 0, 42, 285, 0, 0, 0, 0, 0, - 254, 0, 255, 0, 256, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 0, 287, 288, 0, 289, 290, - 291, 0, 0, 292, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 293 + 0, 35, 0, 0, 252, 253, 293, 36, 0, 0, + 37, 38, 39, 0, 40, 41, 0, 0, 0, 0, + 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, + 254, 0, 255, 0, 256 }; static const short yycheck[] = { - 36, 30, 128, 47, 48, 29, 8, 47, 48, 44, - 39, 26, 3, 116, 54, 147, 55, 32, 4, 87, - 35, 34, 142, 34, 54, 157, 1, 95, 47, 48, - 54, 6, 7, 24, 144, 145, 11, 12, 13, 94, - 54, 16, 28, 54, 54, 54, 21, 22, 63, 125, - 125, 26, 27, 125, 157, 30, 42, 32, 33, 5, - 46, 36, 125, 9, 125, 125, 105, 125, 43, 15, - 85, 54, 19, 54, 109, 77, 23, 125, 53, 81, - 125, 125, 54, 58, 59, 125, 142, 0, 125, 64, - 65, 82, 156, 68, 69, 54, 87, 125, 125, 16, - 125, 137, 138, 139, 140, 141, 142, 143, 83, 125, - 56, 102, 98, 30, 150, 151, 54, 153, 154, 66, - 133, 136, 133, 54, 99, 125, 101, 125, 103, 104, - 47, 125, 125, 125, 116, 81, 122, 123, 113, 114, - 115, 116, 117, 54, 119, 125, 121, 138, 139, 95, - 70, 10, 127, 100, 125, 130, 131, 132, 17, 134, - 135, 20, 144, 145, 111, 201, 202, 142, 143, 295, - 125, 6, 7, 54, 120, 153, 11, 12, 13, 126, - 54, 16, 41, 212, 54, 54, 21, 22, 54, 54, - 54, 26, 27, 142, 54, 30, 125, 32, 33, 125, - 125, 36, 54, 25, 121, 122, 54, 54, 43, 238, - 18, 125, 71, 72, 73, 54, 75, 76, 53, 153, - 79, 54, 54, 58, 59, 47, 48, 54, 25, 64, - 65, 153, 54, 68, 69, 142, 44, 45, 97, 153, - 154, 155, 50, 51, 195, 196, 197, 198, 83, 153, - 142, 156, 153, 61, 148, 149, 150, 151, 152, 146, - 37, 38, 39, 40, 99, 147, 101, 153, 103, 104, - 142, 307, 308, 156, 153, 153, 84, 153, 113, 114, - 115, 116, 117, 257, 119, 153, 121, 142, 142, 78, - 319, 153, 127, 329, 157, 130, 131, 132, 334, 134, - 135, 109, 110, 125, 192, 92, 203, 142, 143, 13, - 118, 347, 348, 349, 350, 351, 6, 7, 144, 240, - 116, 11, 12, 13, 41, 24, 16, 311, 261, -1, - 331, 21, 22, 6, -1, 112, 26, 27, 345, -1, - 30, 14, 32, 33, -1, -1, 36, 124, -1, -1, - -1, 128, 129, 43, -1, 148, 149, 150, 151, 152, - -1, -1, -1, 53, 157, -1, -1, -1, 58, 59, + 36, 30, 129, 4, 8, 5, 44, 116, 142, 9, + 39, 1, 34, 54, 29, 15, 6, 7, 34, 147, + 54, 11, 12, 13, 26, 87, 16, 28, 94, 157, + 32, 21, 22, 35, 96, 54, 26, 27, 54, 54, + 30, 42, 32, 33, 55, 46, 36, 54, 157, 3, + 125, 19, 125, 43, 125, 23, 56, 16, 47, 48, + 125, 63, 25, 53, 37, 38, 39, 40, 58, 59, + 24, 30, 110, 77, 64, 65, 125, 81, 68, 69, + 54, 81, 125, 85, 47, 48, 47, 48, 47, 47, + 48, 54, 125, 83, 105, 95, 54, 98, 66, 144, + 145, 54, 138, 139, 140, 141, 142, 143, 144, 99, + 54, 101, 134, 103, 104, 151, 152, 133, 154, 155, + 120, 122, 123, 113, 114, 115, 116, 117, 82, 119, + 125, 121, 100, 87, 136, 0, 125, 127, 125, 112, + 130, 131, 132, 111, 134, 135, 142, 18, 102, 125, + 156, 124, 142, 143, 125, 128, 129, 54, 126, 125, + 125, 125, 125, 122, 123, 201, 202, 125, 295, 125, + 125, 6, 7, 44, 45, 125, 11, 12, 13, 50, + 51, 16, 116, 212, 138, 139, 21, 22, 125, 10, + 61, 26, 27, 125, 125, 30, 17, 32, 33, 20, + 54, 36, 54, 153, 154, 155, 54, 125, 43, 238, + 144, 145, 125, 84, 195, 196, 197, 198, 53, 125, + 41, 70, 54, 58, 59, 153, 54, 54, 54, 64, + 65, 54, 54, 68, 69, 54, 54, 142, 109, 110, + 148, 149, 150, 151, 152, 125, 125, 118, 83, 157, + 71, 72, 73, 125, 75, 76, 54, 54, 79, 148, + 149, 150, 151, 152, 99, 54, 101, 54, 103, 104, + 54, 307, 308, 54, 54, 153, 97, 153, 113, 114, + 115, 116, 117, 142, 119, 25, 121, 153, 156, 142, + 319, 146, 127, 329, 156, 130, 131, 132, 334, 134, + 135, 147, 153, 153, 142, 142, 153, 142, 143, 153, + 153, 347, 348, 349, 350, 351, 6, 7, 142, 153, + 153, 11, 12, 13, 257, 78, 16, 158, 192, 92, + 203, 21, 22, 6, 13, 145, 26, 27, 240, 117, + 30, 14, 32, 33, 41, 261, 36, 24, 331, 311, + -1, 52, 345, 43, -1, -1, -1, -1, -1, 60, + -1, 62, -1, 53, -1, -1, 67, -1, 58, 59, -1, -1, -1, -1, 64, 65, 49, -1, 68, 69, - -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, - -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 57, 86, -1, 88, 89, -1, + 91, 92, 93, 83, -1, 96, -1, -1, -1, -1, -1, 74, -1, -1, -1, 78, -1, 80, -1, 99, -1, 101, -1, 103, 104, -1, -1, 90, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, -1, 119, - -1, 121, -1, -1, 107, 108, -1, 127, -1, 52, - 130, 131, 132, -1, 134, 135, -1, 60, -1, 62, - -1, -1, -1, 143, 67, -1, -1, -1, -1, -1, - 133, -1, 135, -1, 137, -1, -1, -1, -1, -1, - -1, -1, -1, 86, -1, 88, 89, -1, 91, 92, - 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 137 + -1, 121, -1, -1, 107, 108, 137, 127, -1, -1, + 130, 131, 132, -1, 134, 135, -1, -1, -1, -1, + -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, + 133, -1, 135, -1, 137 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1133,16 +1122,16 @@ static const unsigned char yystos[] = 54, 54, 94, 29, 54, 207, 54, 54, 18, 44, 45, 50, 51, 61, 84, 109, 110, 118, 170, 171, 5, 9, 15, 56, 81, 95, 120, 190, 191, 8, - 77, 81, 184, 185, 125, 190, 19, 23, 66, 100, - 111, 126, 177, 47, 48, 54, 125, 164, 165, 125, - 125, 125, 125, 153, 154, 155, 200, 201, 202, 125, - 164, 205, 205, 125, 204, 125, 54, 25, 164, 165, - 54, 125, 197, 176, 177, 125, 207, 4, 28, 42, - 46, 98, 122, 123, 193, 194, 10, 17, 20, 41, - 71, 72, 73, 75, 76, 79, 97, 173, 174, 165, - 54, 203, 203, 0, 161, 142, 164, 156, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 171, 191, - 54, 54, 54, 185, 54, 196, 26, 32, 35, 63, + 77, 81, 184, 185, 125, 196, 190, 19, 23, 66, + 100, 111, 126, 177, 47, 48, 54, 125, 164, 165, + 125, 125, 125, 125, 153, 154, 155, 200, 201, 202, + 125, 164, 205, 205, 125, 204, 125, 54, 25, 164, + 165, 54, 125, 197, 176, 177, 125, 207, 4, 28, + 42, 46, 98, 122, 123, 193, 194, 10, 17, 20, + 41, 71, 72, 73, 75, 76, 79, 97, 173, 174, + 165, 54, 203, 203, 0, 161, 142, 164, 156, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 171, + 191, 54, 54, 54, 185, 54, 26, 32, 35, 63, 85, 136, 178, 179, 125, 37, 38, 39, 40, 112, 124, 128, 129, 187, 188, 161, 201, 125, 164, 125, 182, 182, 70, 153, 177, 207, 207, 207, 207, 207, @@ -1711,16 +1700,18 @@ yyreduce: switch (yyn) { case 5: -#line 309 "ntp_parser.y" +#line 310 "ntp_parser.y" { - fprintf(stderr, "PARSE ERROR!! At Line: %d\n", - ip_file->line_no); - fprintf(stderr, "Line Ignored!!\n"); + if (input_from_file == 1) { + msyslog(LOG_INFO, "parse error %s line %d ignored\n", + ip_file->fname, ip_file->line_no); + } else if (input_from_file != 0) + msyslog(LOG_INFO, "parse: bad boolean input flag\n"); } break; case 18: -#line 336 "ntp_parser.y" +#line 339 "ntp_parser.y" { struct peer_node *my_node = create_peer_node(yyvsp[-2].Integer, yyvsp[-1].Address_node, yyvsp[0].Queue); if (my_node) @@ -1729,7 +1720,7 @@ yyreduce: break; case 19: -#line 342 "ntp_parser.y" +#line 345 "ntp_parser.y" { struct peer_node *my_node = create_peer_node(yyvsp[-1].Integer, yyvsp[0].Address_node, NULL); if (my_node) @@ -1738,42 +1729,42 @@ yyreduce: break; case 20: -#line 350 "ntp_parser.y" +#line 353 "ntp_parser.y" { yyval.Integer = T_Server; } break; case 21: -#line 351 "ntp_parser.y" +#line 354 "ntp_parser.y" { yyval.Integer = T_Pool; } break; case 22: -#line 352 "ntp_parser.y" +#line 355 "ntp_parser.y" { yyval.Integer = T_Peer; } break; case 23: -#line 353 "ntp_parser.y" +#line 356 "ntp_parser.y" { yyval.Integer = T_Broadcast; } break; case 24: -#line 354 "ntp_parser.y" +#line 357 "ntp_parser.y" { yyval.Integer = T_Manycastclient; } break; case 25: -#line 358 "ntp_parser.y" +#line 361 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; case 26: -#line 359 "ntp_parser.y" +#line 362 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, default_ai_family); } break; case 27: -#line 361 "ntp_parser.y" +#line 364 "ntp_parser.y" { if (yyvsp[-1].Integer == -4) yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET); @@ -1787,122 +1778,122 @@ yyreduce: break; case 28: -#line 376 "ntp_parser.y" +#line 379 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET); } break; case 29: -#line 377 "ntp_parser.y" +#line 380 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET6); } break; case 30: -#line 381 "ntp_parser.y" +#line 384 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 31: -#line 382 "ntp_parser.y" +#line 385 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 32: -#line 387 "ntp_parser.y" +#line 390 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_SKEY | FLAG_AUTHENABLE); } break; case 33: -#line 388 "ntp_parser.y" +#line 391 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_BURST); } break; case 34: -#line 389 "ntp_parser.y" +#line 392 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_IBURST); } break; case 35: -#line 390 "ntp_parser.y" +#line 393 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Key, yyvsp[0].Integer); } break; case 36: -#line 391 "ntp_parser.y" +#line 394 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Minpoll, yyvsp[0].Integer); } break; case 37: -#line 392 "ntp_parser.y" +#line 395 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Maxpoll, yyvsp[0].Integer); } break; case 38: -#line 393 "ntp_parser.y" +#line 396 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_NOSELECT);} break; case 39: -#line 394 "ntp_parser.y" +#line 397 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_PREEMPT); } break; case 40: -#line 395 "ntp_parser.y" +#line 398 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_PREFER); } break; case 41: -#line 396 "ntp_parser.y" +#line 399 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_TRUE); } break; case 42: -#line 397 "ntp_parser.y" +#line 400 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Ttl, yyvsp[0].Integer); } break; case 43: -#line 398 "ntp_parser.y" +#line 401 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Mode, yyvsp[0].Integer); } break; case 44: -#line 399 "ntp_parser.y" +#line 402 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Version, yyvsp[0].Integer); } break; case 45: -#line 410 "ntp_parser.y" +#line 413 "ntp_parser.y" { my_config.broadcastclient = SIMPLE; } break; case 46: -#line 412 "ntp_parser.y" +#line 415 "ntp_parser.y" { my_config.broadcastclient = NOVOLLEY; } break; case 47: -#line 414 "ntp_parser.y" +#line 417 "ntp_parser.y" { append_queue(my_config.manycastserver, yyvsp[0].Queue); } break; case 48: -#line 416 "ntp_parser.y" +#line 419 "ntp_parser.y" { append_queue(my_config.multicastclient, yyvsp[0].Queue); } break; case 49: -#line 427 "ntp_parser.y" +#line 430 "ntp_parser.y" { my_config.auth.autokey = yyvsp[0].Integer; } break; case 50: -#line 429 "ntp_parser.y" +#line 432 "ntp_parser.y" { my_config.auth.control_key = yyvsp[0].Integer; } break; case 51: -#line 431 "ntp_parser.y" +#line 434 "ntp_parser.y" { if (my_config.auth.crypto_cmd_list != NULL) append_queue(my_config.auth.crypto_cmd_list, yyvsp[0].Queue); else @@ -1911,172 +1902,172 @@ yyreduce: break; case 52: -#line 437 "ntp_parser.y" +#line 440 "ntp_parser.y" { my_config.auth.keys = yyvsp[0].String; } break; case 53: -#line 439 "ntp_parser.y" +#line 442 "ntp_parser.y" { my_config.auth.keysdir = yyvsp[0].String; } break; case 54: -#line 441 "ntp_parser.y" +#line 444 "ntp_parser.y" { my_config.auth.requested_key = yyvsp[0].Integer; } break; case 55: -#line 443 "ntp_parser.y" +#line 446 "ntp_parser.y" { my_config.auth.revoke = yyvsp[0].Integer; } break; case 56: -#line 445 "ntp_parser.y" +#line 448 "ntp_parser.y" { my_config.auth.trusted_key_list = yyvsp[0].Queue; } break; case 57: -#line 449 "ntp_parser.y" +#line 452 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 58: -#line 450 "ntp_parser.y" +#line 453 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 59: -#line 455 "ntp_parser.y" +#line 458 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_CERT, yyvsp[0].String); } break; case 60: -#line 457 "ntp_parser.y" +#line 460 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_LEAP, yyvsp[0].String); } break; case 61: -#line 459 "ntp_parser.y" +#line 462 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_RAND, yyvsp[0].String); } break; case 62: -#line 461 "ntp_parser.y" +#line 464 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_PRIV, yyvsp[0].String); } break; case 63: -#line 463 "ntp_parser.y" +#line 466 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_SIGN, yyvsp[0].String); } break; case 64: -#line 465 "ntp_parser.y" +#line 468 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_IDENT, yyvsp[0].String); } break; case 65: -#line 467 "ntp_parser.y" +#line 470 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_IFFPAR, yyvsp[0].String); } break; case 66: -#line 469 "ntp_parser.y" +#line 472 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_GQPAR, yyvsp[0].String); } break; case 67: -#line 471 "ntp_parser.y" +#line 474 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_MVPAR, yyvsp[0].String); } break; case 68: -#line 473 "ntp_parser.y" +#line 476 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_PW, yyvsp[0].String); } break; case 69: -#line 483 "ntp_parser.y" +#line 486 "ntp_parser.y" { append_queue(my_config.orphan_cmds,yyvsp[0].Queue); } break; case 70: -#line 487 "ntp_parser.y" +#line 490 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 71: -#line 488 "ntp_parser.y" +#line 491 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 72: -#line 493 "ntp_parser.y" +#line 496 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_CEILING, (double)yyvsp[0].Integer); } break; case 73: -#line 495 "ntp_parser.y" +#line 498 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_FLOOR, (double)yyvsp[0].Integer); } break; case 74: -#line 497 "ntp_parser.y" +#line 500 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_COHORT, (double)yyvsp[0].Integer); } break; case 75: -#line 499 "ntp_parser.y" +#line 502 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_ORPHAN, (double)yyvsp[0].Integer); } break; case 76: -#line 501 "ntp_parser.y" +#line 504 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINDISP, yyvsp[0].Double); } break; case 77: -#line 503 "ntp_parser.y" +#line 506 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXDIST, yyvsp[0].Double); } break; case 78: -#line 505 "ntp_parser.y" +#line 508 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINCLOCK, yyvsp[0].Double); } break; case 79: -#line 507 "ntp_parser.y" +#line 510 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXCLOCK, yyvsp[0].Double); } break; case 80: -#line 509 "ntp_parser.y" +#line 512 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINSANE, (double)yyvsp[0].Integer); } break; case 81: -#line 511 "ntp_parser.y" +#line 514 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_BEACON, (double)yyvsp[0].Integer); } break; case 82: -#line 513 "ntp_parser.y" +#line 516 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXHOP, (double)yyvsp[0].Integer); } break; case 83: -#line 523 "ntp_parser.y" +#line 526 "ntp_parser.y" { append_queue(my_config.stats_list, yyvsp[0].Queue); } break; case 84: -#line 525 "ntp_parser.y" +#line 528 "ntp_parser.y" { my_config.stats_dir = yyvsp[0].String; } break; case 85: -#line 527 "ntp_parser.y" +#line 530 "ntp_parser.y" { enqueue(my_config.filegen_opts, create_filegen_node(yyvsp[-1].VoidPtr, yyvsp[0].Queue)); @@ -2084,127 +2075,127 @@ yyreduce: break; case 86: -#line 534 "ntp_parser.y" +#line 537 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].VoidPtr); } break; case 87: -#line 535 "ntp_parser.y" +#line 538 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].VoidPtr); } break; case 88: -#line 540 "ntp_parser.y" +#line 543 "ntp_parser.y" { yyval.VoidPtr = create_pval("clockstats"); } break; case 89: -#line 542 "ntp_parser.y" +#line 545 "ntp_parser.y" { yyval.VoidPtr = create_pval("cryptostats"); } break; case 90: -#line 544 "ntp_parser.y" +#line 547 "ntp_parser.y" { yyval.VoidPtr = create_pval("loopstats"); } break; case 91: -#line 546 "ntp_parser.y" +#line 549 "ntp_parser.y" { yyval.VoidPtr = create_pval("peerstats"); } break; case 92: -#line 548 "ntp_parser.y" +#line 551 "ntp_parser.y" { yyval.VoidPtr = create_pval("rawstats"); } break; case 93: -#line 550 "ntp_parser.y" +#line 553 "ntp_parser.y" { yyval.VoidPtr = create_pval("sysstats"); } break; case 94: -#line 554 "ntp_parser.y" +#line 557 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 95: -#line 555 "ntp_parser.y" +#line 558 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 96: -#line 559 "ntp_parser.y" +#line 562 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(T_File, yyvsp[0].String); } break; case 97: -#line 560 "ntp_parser.y" +#line 563 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Type, yyvsp[0].Integer); } break; case 98: -#line 561 "ntp_parser.y" +#line 564 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Link); } break; case 99: -#line 562 "ntp_parser.y" +#line 565 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Nolink); } break; case 100: -#line 563 "ntp_parser.y" +#line 566 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Enable); } break; case 101: -#line 564 "ntp_parser.y" +#line 567 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Disable); } break; case 102: -#line 568 "ntp_parser.y" +#line 571 "ntp_parser.y" { yyval.Integer = FILEGEN_NONE; } break; case 103: -#line 569 "ntp_parser.y" +#line 572 "ntp_parser.y" { yyval.Integer = FILEGEN_PID; } break; case 104: -#line 570 "ntp_parser.y" +#line 573 "ntp_parser.y" { yyval.Integer = FILEGEN_DAY; } break; case 105: -#line 571 "ntp_parser.y" +#line 574 "ntp_parser.y" { yyval.Integer = FILEGEN_WEEK; } break; case 106: -#line 572 "ntp_parser.y" +#line 575 "ntp_parser.y" { yyval.Integer = FILEGEN_MONTH; } break; case 107: -#line 573 "ntp_parser.y" +#line 576 "ntp_parser.y" { yyval.Integer = FILEGEN_YEAR; } break; case 108: -#line 574 "ntp_parser.y" +#line 577 "ntp_parser.y" { yyval.Integer = FILEGEN_AGE; } break; case 109: -#line 584 "ntp_parser.y" +#line 587 "ntp_parser.y" { append_queue(my_config.discard_opts, yyvsp[0].Queue); } break; case 110: -#line 586 "ntp_parser.y" +#line 589 "ntp_parser.y" { enqueue(my_config.restrict_opts, create_restrict_node(yyvsp[-1].Address_node, NULL, yyvsp[0].Queue, ip_file->line_no)); @@ -2212,7 +2203,7 @@ yyreduce: break; case 111: -#line 591 "ntp_parser.y" +#line 594 "ntp_parser.y" { enqueue(my_config.restrict_opts, create_restrict_node(NULL, NULL, yyvsp[0].Queue, ip_file->line_no)); @@ -2220,7 +2211,7 @@ yyreduce: break; case 112: -#line 596 "ntp_parser.y" +#line 599 "ntp_parser.y" { enqueue(my_config.restrict_opts, create_restrict_node(yyvsp[-3].Address_node, yyvsp[-1].Address_node, yyvsp[0].Queue, ip_file->line_no)); @@ -2228,262 +2219,262 @@ yyreduce: break; case 113: -#line 603 "ntp_parser.y" +#line 606 "ntp_parser.y" { yyval.Queue = create_queue(); } break; case 114: -#line 604 "ntp_parser.y" +#line 607 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].VoidPtr); } break; case 115: -#line 608 "ntp_parser.y" +#line 611 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_IGNORE); } break; case 116: -#line 609 "ntp_parser.y" +#line 612 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DEMOBILIZE); } break; case 117: -#line 610 "ntp_parser.y" +#line 613 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_LIMITED); } break; case 118: -#line 611 "ntp_parser.y" +#line 614 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_LPTRAP); } break; case 119: -#line 612 "ntp_parser.y" +#line 615 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOMODIFY); } break; case 120: -#line 613 "ntp_parser.y" +#line 616 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOPEER); } break; case 121: -#line 614 "ntp_parser.y" +#line 617 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOQUERY); } break; case 122: -#line 615 "ntp_parser.y" +#line 618 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DONTSERVE); } break; case 123: -#line 616 "ntp_parser.y" +#line 619 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOTRAP); } break; case 124: -#line 617 "ntp_parser.y" +#line 620 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DONTTRUST); } break; case 125: -#line 618 "ntp_parser.y" +#line 621 "ntp_parser.y" { yyval.VoidPtr = create_ival(RESM_NTPONLY); } break; case 126: -#line 619 "ntp_parser.y" +#line 622 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_VERSION); } break; case 127: -#line 623 "ntp_parser.y" +#line 626 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 128: -#line 624 "ntp_parser.y" +#line 627 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 129: -#line 628 "ntp_parser.y" +#line 631 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Average, yyvsp[0].Integer); } break; case 130: -#line 629 "ntp_parser.y" +#line 632 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Minimum, yyvsp[0].Integer); } break; case 131: -#line 630 "ntp_parser.y" +#line 633 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Monitor, yyvsp[0].Integer); } break; case 132: -#line 639 "ntp_parser.y" +#line 642 "ntp_parser.y" { enqueue(my_config.fudge, create_addr_opts_node(yyvsp[-1].Address_node, yyvsp[0].Queue)); } break; case 133: -#line 643 "ntp_parser.y" +#line 646 "ntp_parser.y" { enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 134: -#line 644 "ntp_parser.y" +#line 647 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 135: -#line 649 "ntp_parser.y" +#line 652 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(CLK_HAVETIME1, yyvsp[0].Double); } break; case 136: -#line 651 "ntp_parser.y" +#line 654 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(CLK_HAVETIME2, yyvsp[0].Double); } break; case 137: -#line 653 "ntp_parser.y" +#line 656 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEVAL1, yyvsp[0].Integer); } break; case 138: -#line 655 "ntp_parser.y" +#line 658 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CLK_HAVEVAL2, yyvsp[0].String); } break; case 139: -#line 657 "ntp_parser.y" +#line 660 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG1, yyvsp[0].Integer); } break; case 140: -#line 659 "ntp_parser.y" +#line 662 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG2, yyvsp[0].Integer); } break; case 141: -#line 661 "ntp_parser.y" +#line 664 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG3, yyvsp[0].Integer); } break; case 142: -#line 663 "ntp_parser.y" +#line 666 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG4, yyvsp[0].Integer); } break; case 143: -#line 672 "ntp_parser.y" +#line 675 "ntp_parser.y" { append_queue(my_config.enable_opts,yyvsp[0].Queue); } break; case 144: -#line 674 "ntp_parser.y" +#line 677 "ntp_parser.y" { append_queue(my_config.disable_opts,yyvsp[0].Queue); } break; case 145: -#line 678 "ntp_parser.y" +#line 681 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 146: -#line 679 "ntp_parser.y" +#line 682 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 147: -#line 683 "ntp_parser.y" +#line 686 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); } break; case 148: -#line 684 "ntp_parser.y" +#line 687 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_BROADCLIENT); } break; case 149: -#line 685 "ntp_parser.y" +#line 688 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_CAL); } break; case 150: -#line 686 "ntp_parser.y" +#line 689 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_KERNEL); } break; case 151: -#line 687 "ntp_parser.y" +#line 690 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_MONITOR); } break; case 152: -#line 688 "ntp_parser.y" +#line 691 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_NTP); } break; case 153: -#line 690 "ntp_parser.y" +#line 693 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_FILEGEN); } break; case 154: -#line 698 "ntp_parser.y" +#line 701 "ntp_parser.y" { append_queue(my_config.tinker, yyvsp[0].Queue); } break; case 155: -#line 702 "ntp_parser.y" +#line 705 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 156: -#line 703 "ntp_parser.y" +#line 706 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 157: -#line 707 "ntp_parser.y" +#line 710 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_ALLAN, yyvsp[0].Double); } break; case 158: -#line 708 "ntp_parser.y" +#line 711 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_PHI, yyvsp[0].Double); } break; case 159: -#line 709 "ntp_parser.y" +#line 712 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_FREQ, yyvsp[0].Double); } break; case 160: -#line 710 "ntp_parser.y" +#line 713 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_HUFFPUFF, yyvsp[0].Double); } break; case 161: -#line 711 "ntp_parser.y" +#line 714 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_PANIC, yyvsp[0].Double); } break; case 162: -#line 712 "ntp_parser.y" +#line 715 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_MAX, yyvsp[0].Double); } break; case 163: -#line 713 "ntp_parser.y" +#line 716 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_MINSTEP, yyvsp[0].Double); } break; case 164: -#line 722 "ntp_parser.y" +#line 725 "ntp_parser.y" { if (curr_include_level >= MAXINCLUDELEVEL) { fprintf(stderr, "getconfig: Maximum include file level exceeded.\n"); @@ -2502,7 +2493,7 @@ yyreduce: break; case 165: -#line 738 "ntp_parser.y" +#line 741 "ntp_parser.y" { while (curr_include_level != -1) FCLOSE(fp[curr_include_level--]); @@ -2510,122 +2501,129 @@ yyreduce: break; case 166: -#line 744 "ntp_parser.y" +#line 747 "ntp_parser.y" { enqueue(my_config.vars, create_attr_dval(T_Broadcastdelay, yyvsp[0].Double)); } break; case 167: -#line 746 "ntp_parser.y" +#line 749 "ntp_parser.y" { enqueue(my_config.vars, create_attr_ival(T_Calldelay, yyvsp[0].Integer)); } break; case 168: -#line 748 "ntp_parser.y" +#line 751 "ntp_parser.y" { enqueue(my_config.vars, create_attr_dval(T_Tick, yyvsp[0].Double)); } break; case 169: -#line 750 "ntp_parser.y" - { enqueue(my_config.vars, create_attr_sval(T_Driftfile, yyvsp[-1].String)); } +#line 753 "ntp_parser.y" + { /* Null action, possibly all null parms */ } break; case 170: -#line 753 "ntp_parser.y" +#line 756 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Pidfile, yyvsp[0].String)); } break; case 171: -#line 755 "ntp_parser.y" +#line 758 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Logfile, yyvsp[0].String)); } break; case 172: -#line 757 "ntp_parser.y" +#line 760 "ntp_parser.y" { enqueue(my_config.vars, create_attr_ival(T_Automax, yyvsp[0].Integer)); } break; case 173: -#line 760 "ntp_parser.y" +#line 763 "ntp_parser.y" { append_queue(my_config.logconfig, yyvsp[0].Queue); } break; case 174: -#line 762 "ntp_parser.y" +#line 765 "ntp_parser.y" { append_queue(my_config.phone, yyvsp[0].Queue); } break; case 175: -#line 764 "ntp_parser.y" +#line 767 "ntp_parser.y" { enqueue(my_config.setvar, yyvsp[0].Set_var); } break; case 176: -#line 766 "ntp_parser.y" +#line 769 "ntp_parser.y" { enqueue(my_config.trap, create_addr_opts_node(yyvsp[-1].Address_node, yyvsp[0].Queue)); } break; case 177: -#line 768 "ntp_parser.y" +#line 771 "ntp_parser.y" { append_queue(my_config.ttl, yyvsp[0].Queue); } break; case 178: -#line 771 "ntp_parser.y" - { /* Null command */ } +#line 775 "ntp_parser.y" + { enqueue(my_config.vars, create_attr_sval(T_Driftfile, yyvsp[0].String)); } break; case 179: -#line 773 "ntp_parser.y" - { enqueue(my_config.vars, create_attr_ival(T_DriftMinutes, yyvsp[0].Integer)); } +#line 777 "ntp_parser.y" + { enqueue(my_config.vars, create_attr_ival(T_DriftMinutes, yyvsp[0].Integer)); + enqueue(my_config.vars, create_attr_sval(T_Driftfile, yyvsp[-1].String)); } break; case 180: -#line 778 "ntp_parser.y" - { yyval.Set_var = create_setvar_node(yyvsp[-3].String, yyvsp[-1].String, DEF); } +#line 779 "ntp_parser.y" + { /* Null driftfile, indicated by null string "\0" */ + enqueue(my_config.vars, create_attr_sval(T_Driftfile, "\0")); } break; case 181: -#line 780 "ntp_parser.y" - { yyval.Set_var = create_setvar_node(yyvsp[-2].String, yyvsp[0].String, 0); } +#line 785 "ntp_parser.y" + { yyval.Set_var = create_setvar_node(yyvsp[-3].String, yyvsp[-1].String, DEF); } break; case 182: -#line 785 "ntp_parser.y" - { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } +#line 787 "ntp_parser.y" + { yyval.Set_var = create_setvar_node(yyvsp[-2].String, yyvsp[0].String, 0); } break; case 183: -#line 786 "ntp_parser.y" - { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } +#line 792 "ntp_parser.y" + { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 184: -#line 790 "ntp_parser.y" - { yyval.Attr_val = create_attr_ival(T_Port, yyvsp[0].Integer); } +#line 793 "ntp_parser.y" + { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 185: -#line 791 "ntp_parser.y" - { yyval.Attr_val = create_attr_pval(T_Interface, yyvsp[0].Address_node); } +#line 797 "ntp_parser.y" + { yyval.Attr_val = create_attr_ival(T_Port, yyvsp[0].Integer); } break; case 186: -#line 796 "ntp_parser.y" - { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } +#line 798 "ntp_parser.y" + { yyval.Attr_val = create_attr_pval(T_Interface, yyvsp[0].Address_node); } break; case 187: -#line 797 "ntp_parser.y" - { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } +#line 803 "ntp_parser.y" + { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 188: -#line 801 "ntp_parser.y" - { yyval.Attr_val = create_attr_sval(yyvsp[-1].Integer, yyvsp[0].String); } +#line 804 "ntp_parser.y" + { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 189: -#line 803 "ntp_parser.y" +#line 808 "ntp_parser.y" + { yyval.Attr_val = create_attr_sval(yyvsp[-1].Integer, yyvsp[0].String); } + break; + + case 190: +#line 810 "ntp_parser.y" { /* YUCK!! This is needed because '+' and '-' are not special characters * while '=' is. @@ -2641,53 +2639,53 @@ yyreduce: } break; - case 190: -#line 819 "ntp_parser.y" + case 191: +#line 826 "ntp_parser.y" { yyval.Integer = '+'; } break; - case 191: -#line 820 "ntp_parser.y" + case 192: +#line 827 "ntp_parser.y" { yyval.Integer = '-'; } break; - case 192: -#line 821 "ntp_parser.y" + case 193: +#line 828 "ntp_parser.y" { yyval.Integer = '='; } break; - case 193: -#line 830 "ntp_parser.y" + case 194: +#line 837 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, create_ival(yyvsp[0].Integer)); } break; - case 194: -#line 831 "ntp_parser.y" + case 195: +#line 838 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(create_ival(yyvsp[0].Integer)); } break; - case 195: -#line 835 "ntp_parser.y" + case 196: +#line 842 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, create_pval(yyvsp[0].String)); } break; - case 196: -#line 836 "ntp_parser.y" + case 197: +#line 843 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(create_pval(yyvsp[0].String)); } break; - case 197: -#line 840 "ntp_parser.y" + case 198: +#line 847 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Address_node); } break; - case 198: -#line 841 "ntp_parser.y" + case 199: +#line 848 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Address_node); } break; - case 199: -#line 846 "ntp_parser.y" + case 200: +#line 853 "ntp_parser.y" { if (yyvsp[0].Integer != 0 && yyvsp[0].Integer != 1) { yyerror("Integer value is not boolean (0 or 1). Assuming 1"); @@ -2698,28 +2696,28 @@ yyreduce: } break; - case 200: -#line 854 "ntp_parser.y" + case 201: +#line 861 "ntp_parser.y" { yyval.Integer = 1; } break; - case 201: -#line 855 "ntp_parser.y" + case 202: +#line 862 "ntp_parser.y" { yyval.Integer = 0; } break; - case 202: -#line 859 "ntp_parser.y" + case 203: +#line 866 "ntp_parser.y" { yyval.Double = (double)yyvsp[0].Integer; } break; - case 203: -#line 860 "ntp_parser.y" + case 204: +#line 867 "ntp_parser.y" { yyval.Double = yyvsp[0].Double; } break; - case 204: -#line 869 "ntp_parser.y" + case 205: +#line 876 "ntp_parser.y" { my_config.sim_details = create_sim_node(yyvsp[-2].Queue, yyvsp[-1].Queue); @@ -2728,113 +2726,113 @@ yyreduce: } break; - case 205: -#line 883 "ntp_parser.y" + case 206: +#line 890 "ntp_parser.y" { old_config_style = 0; } break; - case 206: -#line 887 "ntp_parser.y" + case 207: +#line 894 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-2].Queue, yyvsp[-1].Attr_val); } break; - case 207: -#line 888 "ntp_parser.y" + case 208: +#line 895 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[-1].Attr_val); } break; - case 208: -#line 892 "ntp_parser.y" + case 209: +#line 899 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Beep_Delay, yyvsp[0].Double); } break; - case 209: -#line 893 "ntp_parser.y" + case 210: +#line 900 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Sim_Duration, yyvsp[0].Double); } break; - case 210: -#line 897 "ntp_parser.y" + case 211: +#line 904 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Sim_server); } break; - case 211: -#line 898 "ntp_parser.y" + case 212: +#line 905 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Sim_server); } break; - case 212: -#line 903 "ntp_parser.y" + case 213: +#line 910 "ntp_parser.y" { yyval.Sim_server = create_sim_server(yyvsp[-4].Address_node, yyvsp[-2].Double, yyvsp[-1].Queue); } break; - case 213: -#line 907 "ntp_parser.y" + case 214: +#line 914 "ntp_parser.y" { yyval.Double = yyvsp[-1].Double; } break; - case 214: -#line 911 "ntp_parser.y" + case 215: +#line 918 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; - case 215: -#line 915 "ntp_parser.y" + case 216: +#line 922 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; - case 216: -#line 916 "ntp_parser.y" + case 217: +#line 923 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, T_String); } break; - case 217: -#line 920 "ntp_parser.y" + case 218: +#line 927 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Sim_script); } break; - case 218: -#line 921 "ntp_parser.y" + case 219: +#line 928 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Sim_script); } break; - case 219: -#line 926 "ntp_parser.y" + case 220: +#line 933 "ntp_parser.y" { yyval.Sim_script = create_sim_script_info(yyvsp[-3].Double, yyvsp[-1].Queue); } break; - case 220: -#line 930 "ntp_parser.y" + case 221: +#line 937 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-2].Queue, yyvsp[-1].Attr_val); } break; - case 221: -#line 931 "ntp_parser.y" + case 222: +#line 938 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[-1].Attr_val); } break; - case 222: -#line 936 "ntp_parser.y" + case 223: +#line 943 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Freq_Offset, yyvsp[0].Double); } break; - case 223: -#line 938 "ntp_parser.y" + case 224: +#line 945 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Wander, yyvsp[0].Double); } break; - case 224: -#line 940 "ntp_parser.y" + case 225: +#line 947 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Jitter, yyvsp[0].Double); } break; - case 225: -#line 942 "ntp_parser.y" + case 226: +#line 949 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Prop_Delay, yyvsp[0].Double); } break; - case 226: -#line 944 "ntp_parser.y" + case 227: +#line 951 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Proc_Delay, yyvsp[0].Double); } break; @@ -2842,7 +2840,7 @@ yyreduce: } /* Line 1016 of /usr/local/share/bison/yacc.c. */ -#line 2846 "ntp_parser.c" +#line 2844 "ntp_parser.c" yyvsp -= yylen; yyssp -= yylen; @@ -3061,7 +3059,7 @@ yyreturn: } -#line 948 "ntp_parser.y" +#line 955 "ntp_parser.y" /* KEYWORDS diff --git a/ntpd/ntp_parser.h b/ntpd/ntp_parser.h index 227d63b22..af482a094 100644 --- a/ntpd/ntp_parser.h +++ b/ntpd/ntp_parser.h @@ -339,7 +339,7 @@ #ifndef YYSTYPE -#line 67 "ntp_parser.y" +#line 68 "ntp_parser.y" typedef union { char *String; double Double; diff --git a/ntpd/ntp_parser.y b/ntpd/ntp_parser.y index 9db2181c5..49f535703 100644 --- a/ntpd/ntp_parser.y +++ b/ntpd/ntp_parser.y @@ -39,6 +39,7 @@ struct FILE_INFO *ip_file; /* Pointer to the configuration file stream */ void yyerror (char *msg); + extern int input_from_file; /* 0=input from ntpq>config command buffer */ /* SK: The following is a terrible hack to allow the NTP code to be built * without OPENSSL. The following symbols need to be defined in the @@ -307,9 +308,11 @@ command_list */ | error T_EOC { - fprintf(stderr, "PARSE ERROR!! At Line: %d\n", - ip_file->line_no); - fprintf(stderr, "Line Ignored!!\n"); + if (input_from_file == 1) { + msyslog(LOG_INFO, "parse error %s line %d ignored\n", + ip_file->fname, ip_file->line_no); + } else if (input_from_file != 0) + msyslog(LOG_INFO, "parse: bad boolean input flag\n"); } ; @@ -746,8 +749,8 @@ miscellaneous_command { enqueue(my_config.vars, create_attr_ival(T_Calldelay, $2)); } | T_Tick number { enqueue(my_config.vars, create_attr_dval(T_Tick, $2)); } - | T_Driftfile T_String drift_parm - { enqueue(my_config.vars, create_attr_sval(T_Driftfile, $2)); } + | T_Driftfile drift_parm + { /* Null action, possibly all null parms */ } | T_Pidfile T_String { enqueue(my_config.vars, create_attr_sval(T_Pidfile, $2)); } @@ -768,13 +771,17 @@ miscellaneous_command { append_queue(my_config.ttl, $2); } ; drift_parm - : { /* Null command */ } - | T_Integer - { enqueue(my_config.vars, create_attr_ival(T_DriftMinutes, $1)); } + : T_String + { enqueue(my_config.vars, create_attr_sval(T_Driftfile, $1)); } + | T_String T_Integer + { enqueue(my_config.vars, create_attr_ival(T_DriftMinutes, $2)); + enqueue(my_config.vars, create_attr_sval(T_Driftfile, $1)); } + | { /* Null driftfile, indicated by null string "\0" */ + enqueue(my_config.vars, create_attr_sval(T_Driftfile, "\0")); } ; variable_assign - : T_String '=' T_String T_Default + : T_String '=' T_String T_Default { $$ = create_setvar_node($1, $3, DEF); } | T_String '=' T_String { $$ = create_setvar_node($1, $3, 0); } diff --git a/ntpd/ntp_scanner.c b/ntpd/ntp_scanner.c index 5548e5474..3414e2893 100644 --- a/ntpd/ntp_scanner.c +++ b/ntpd/ntp_scanner.c @@ -46,6 +46,7 @@ struct state { #define MAX_LEXEME 1024+1 /* The maximum size of a lexeme */ char yytext[MAX_LEXEME]; /* Buffer for storing the input text/lexeme */ struct state *key_scanner; /* A FSA for recognizing keywords */ +extern int input_from_file; /* CONSTANTS @@ -265,12 +266,13 @@ int FCLOSE(struct FILE_INFO *stream) int get_next_char(void) { - int retval; if (input_from_file) return FGETC(ip_file); else { - retval = remote_config.buffer[remote_config.pos++]; - return (retval == '\0') ? EOF : retval; + if (remote_config.buffer[remote_config.pos] == '\0') + return EOF; + else + return(remote_config.buffer[remote_config.pos++]); } } @@ -518,9 +520,11 @@ int yylex() ; /* Null Statement */ if (ch == EOF) { - if (curr_include_level == 0) { - return 0; - } else { + if (input_from_file == 0) + return 0; + if (!(curr_include_level > 0)) + return 0; + else { ip_file = fp[--curr_include_level]; return T_EOC; } diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index f7da0cb80..69ac8224a 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -52,7 +52,7 @@ static char *key_file_name; /* * The name of the drift_comp file and the temporary. */ -static char *stats_drift_file; +char *stats_drift_file; static char *stats_temp_file; int stats_write_period = 3600; /* # of seconds between writes. */ static double prev_drift_comp;