From: Harlan Stenn Date: Wed, 19 Sep 2007 08:05:50 +0000 (-0400) Subject: [Bug 890] the crypto command seems to be required now\n[Bug 891] 'restrict' config... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77cb81ca46cae9dd14d91d797f3d25c20d800f7f;p=thirdparty%2Fntp.git [Bug 890] the crypto command seems to be required now\n[Bug 891] 'restrict' config file keyword does not work (partial fix) bk: 46f0d85e5STUqr6XwFipEtPzpmQydw --- diff --git a/ChangeLog b/ChangeLog index 285ce55c40..8716778155 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +* [Bug 891] 'restrict' config file keyword does not work (partial fix). +* [Bug 890] the crypto command seems to be required now. +* [Bug 915] ntpd cores during processing of x509 certificates. +* Crypto lint cleanup from Dave Mills. * [Bug 897] Check RAND_status() - we may not need a .rnd file. * Crypto cleanup from Dave Mills. * [Bug 911] Fix error message in cmd_args.c. diff --git a/ntpd/ntp_config.c b/ntpd/ntp_config.c index 792c8ac3af..620a0adef8 100644 --- a/ntpd/ntp_config.c +++ b/ntpd/ntp_config.c @@ -132,7 +132,11 @@ int curr_include_level; /* The current include level */ struct FILE_INFO *fp[MAXINCLUDELEVEL+1]; FILE *res_fp; struct config_tree my_config; /* Root of the configuration tree */ +#if 0 short default_ai_family = AF_UNSPEC; /* Default either IPv4 or IPv6 */ +#else +short default_ai_family = AF_INET; /* [Bug 891]: FIX ME */ +#endif char *sys_phone[MAXPHONE] = {NULL}; /* ACTS phone numbers */ char *keysdir = NTP_KEYSDIR; /* crypto keys directory */ #if defined(HAVE_SCHED_SETSCHEDULER) @@ -180,6 +184,9 @@ int old_config_style = 1; /* A boolean flag, which when set, * format with a newline at the end of * every command is being used */ +#ifdef OPENSSL +int cryptosw; /* crypto command called */ +#endif extern int sys_maxclock; extern char *stats_drift_file; /* name of the driftfile */ @@ -983,7 +990,8 @@ config_auth(void) keysdir = my_config.auth.keysdir; #ifdef OPENSSL - crypto_setup(); + if (cryptosw) + crypto_setup(); #endif /* OPENSSL */ /* Keys Command */ diff --git a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c index 2c26cddbc1..0c29364446 100644 --- a/ntpd/ntp_crypto.c +++ b/ntpd/ntp_crypto.c @@ -645,7 +645,8 @@ crypto_recv( */ if (peer->pkey == NULL) { ptr = (u_char *)xinfo->cert.ptr; - cert = d2i_X509(NULL, &ptr, + cert = d2i_X509(NULL, + (const u_char **)&ptr, ntohl(xinfo->cert.vallen)); peer->pkey = X509_get_pubkey(cert); X509_free(cert); @@ -1686,7 +1687,8 @@ crypto_encrypt( */ len = ntohl(ep->vallen); ptr = (u_char *)ep->pkt; - pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &ptr, len); + pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, (const u_char **)&ptr, + len); if (pkey == NULL) { msyslog(LOG_ERR, "crypto_encrypt: %s", ERR_error_string(ERR_get_error(), NULL)); @@ -1703,8 +1705,9 @@ crypto_encrypt( len = EVP_PKEY_size(pkey); vp->vallen = htonl(len); vp->ptr = emalloc(len); + ptr = vp->ptr; temp32 = htonl(*cookie); - if (!RSA_public_encrypt(4, (u_char *)&temp32, vp->ptr, + if (!RSA_public_encrypt(4, (u_char *)&temp32, ptr, pkey->pkey.rsa, RSA_PKCS1_OAEP_PADDING)) { msyslog(LOG_ERR, "crypto_encrypt: %s", ERR_error_string(ERR_get_error(), NULL)); @@ -3089,7 +3092,7 @@ cert_sign( return (XEVNT_TSP); ptr = (u_char *)ep->pkt; - if ((req = d2i_X509(NULL, (u_char **)&ptr, + if ((req = d2i_X509(NULL, (const u_char **)&ptr, ntohl(ep->vallen))) == NULL) { msyslog(LOG_ERR, "cert_sign: %s", ERR_error_string(ERR_get_error(), NULL)); @@ -3195,7 +3198,8 @@ cert_valid( return (XEVNT_OK); ptr = (u_char *)cinf->cert.ptr; - cert = d2i_X509(NULL, &ptr, ntohl(cinf->cert.vallen)); + cert = d2i_X509(NULL, (const u_char **)&ptr, + ntohl(cinf->cert.vallen)); if (cert == NULL || !X509_verify(cert, pkey)) return (XEVNT_VFY); @@ -3379,20 +3383,12 @@ cert_parse( const char *ptr; int temp, cnt, i; -#if 0 -u_char *pta; - -pta = asn1cert; -for (i = 0; i < len; i++) -printf("%02x:", 0xff & *pta++); -printf("\n%x %ld\n", asn1cert, len); -#endif - /* * Decode ASN.1 objects and construct certificate structure. */ uptr = asn1cert; - if ((cert = d2i_X509(NULL, (u_char **)&uptr, len)) == NULL) { + if ((cert = d2i_X509(NULL, (const u_char **)&uptr, len)) == + NULL) { msyslog(LOG_ERR, "cert_parse: %s", ERR_error_string(ERR_get_error(), NULL)); return (NULL); @@ -3664,7 +3660,7 @@ crypto_key( pkp->link = pkinfo; pkinfo = pkp; pkp->pkey = pkey; - pkp->name = emalloc(sizeof(cp) + 1); + pkp->name = emalloc(strlen(cp) + 1); pkp->fstamp = fstamp; strcpy(pkp->name, cp); @@ -3875,8 +3871,8 @@ crypto_setup(void) printf( "crypto_setup: OpenSSL version %lx random seed file %s bytes read %d\n", SSLeay(), filename, bytes); - } #endif + } /* * Initialize structures. diff --git a/ntpd/ntp_parser.c b/ntpd/ntp_parser.c index 757ada7db3..08fb365ee2 100644 --- a/ntpd/ntp_parser.c +++ b/ntpd/ntp_parser.c @@ -191,8 +191,9 @@ #define YYERROR_VERBOSE void yyerror (char *msg); extern int input_from_file; /* 0=input from ntpq>config command buffer */ + extern int cryptosw; -#line 48 "ntp_parser.y" +#line 49 "ntp_parser.y" #ifndef YYSTYPE typedef union { char *String; @@ -369,29 +370,29 @@ static const short yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const short yyrline[] = { - 0, 280, 284, 285, 290, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 320, 326, 335, - 336, 337, 338, 339, 343, 344, 345, 361, 362, 366, - 367, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 394, 396, 398, 400, 411, 413, - 415, 421, 423, 425, 427, 432, 433, 437, 439, 441, - 443, 445, 447, 449, 451, 453, 455, 465, 470, 471, - 475, 477, 479, 481, 483, 485, 487, 489, 491, 493, - 495, 505, 507, 509, 517, 518, 522, 524, 526, 528, - 530, 532, 537, 538, 542, 543, 544, 545, 546, 547, - 551, 552, 553, 554, 555, 556, 557, 566, 568, 573, - 578, 586, 587, 591, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 606, 607, 611, 612, 613, - 621, 626, 627, 631, 633, 635, 637, 639, 641, 643, - 645, 654, 656, 661, 662, 666, 667, 668, 669, 670, - 671, 673, 681, 685, 686, 690, 691, 692, 693, 694, - 695, 696, 704, 720, 726, 728, 730, 732, 734, 737, - 739, 741, 744, 746, 748, 750, 752, 756, 758, 761, - 766, 768, 774, 775, 779, 780, 785, 786, 790, 791, - 808, 809, 810, 819, 820, 824, 825, 829, 830, 834, - 843, 844, 848, 849, 857, 872, 876, 877, 881, 882, - 886, 887, 891, 896, 900, 904, 905, 909, 910, 914, - 919, 920, 924, 926, 928, 930, 932 + 0, 281, 285, 286, 291, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 321, 327, 336, + 337, 338, 339, 340, 344, 345, 346, 362, 363, 367, + 368, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 395, 397, 399, 401, 412, 414, + 416, 423, 425, 427, 429, 434, 435, 439, 441, 443, + 445, 447, 449, 451, 453, 455, 457, 467, 472, 473, + 477, 479, 481, 483, 485, 487, 489, 491, 493, 495, + 497, 507, 509, 511, 519, 520, 524, 526, 528, 530, + 532, 534, 539, 540, 544, 545, 546, 547, 548, 549, + 553, 554, 555, 556, 557, 558, 559, 568, 570, 575, + 580, 588, 589, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 608, 609, 613, 614, 615, + 623, 628, 629, 633, 635, 637, 639, 641, 643, 645, + 647, 656, 658, 663, 664, 668, 669, 670, 671, 672, + 673, 675, 683, 687, 688, 692, 693, 694, 695, 696, + 697, 698, 706, 722, 728, 730, 732, 734, 736, 739, + 741, 743, 746, 748, 750, 752, 754, 758, 760, 763, + 768, 770, 776, 777, 781, 782, 787, 788, 792, 793, + 810, 811, 812, 821, 822, 826, 827, 831, 832, 836, + 845, 846, 850, 851, 859, 874, 878, 879, 883, 884, + 888, 889, 893, 898, 902, 906, 907, 911, 912, 916, + 921, 922, 926, 928, 930, 932, 934 }; #endif @@ -1432,7 +1433,7 @@ yyreduce: switch (yyn) { case 4: -#line 291 "ntp_parser.y" +#line 292 "ntp_parser.y" { if (input_from_file == 1) { msyslog(LOG_INFO, "parse error %s line %d ignored\n", @@ -1443,7 +1444,7 @@ case 4: } break; case 17: -#line 321 "ntp_parser.y" +#line 322 "ntp_parser.y" { struct peer_node *my_node = create_peer_node(yyvsp[-2].Integer, yyvsp[-1].Address_node, yyvsp[0].Queue); if (my_node) @@ -1451,7 +1452,7 @@ case 17: } break; case 18: -#line 327 "ntp_parser.y" +#line 328 "ntp_parser.y" { struct peer_node *my_node = create_peer_node(yyvsp[-1].Integer, yyvsp[0].Address_node, NULL); if (my_node) @@ -1459,35 +1460,35 @@ case 18: } break; case 19: -#line 335 "ntp_parser.y" +#line 336 "ntp_parser.y" { yyval.Integer = T_Server; } break; case 20: -#line 336 "ntp_parser.y" +#line 337 "ntp_parser.y" { yyval.Integer = T_Pool; } break; case 21: -#line 337 "ntp_parser.y" +#line 338 "ntp_parser.y" { yyval.Integer = T_Peer; } break; case 22: -#line 338 "ntp_parser.y" +#line 339 "ntp_parser.y" { yyval.Integer = T_Broadcast; } break; case 23: -#line 339 "ntp_parser.y" +#line 340 "ntp_parser.y" { yyval.Integer = T_Manycastclient; } break; case 24: -#line 343 "ntp_parser.y" +#line 344 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; case 25: -#line 344 "ntp_parser.y" +#line 345 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, default_ai_family); } break; case 26: -#line 346 "ntp_parser.y" +#line 347 "ntp_parser.y" { if (yyvsp[-1].Integer == -4) yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET); @@ -1500,563 +1501,564 @@ case 26: } break; case 27: -#line 361 "ntp_parser.y" +#line 362 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET); } break; case 28: -#line 362 "ntp_parser.y" +#line 363 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, AF_INET6); } break; case 29: -#line 366 "ntp_parser.y" +#line 367 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 30: -#line 367 "ntp_parser.y" +#line 368 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 31: -#line 372 "ntp_parser.y" +#line 373 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_SKEY | FLAG_AUTHENABLE); } break; case 32: -#line 373 "ntp_parser.y" +#line 374 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_BURST); } break; case 33: -#line 374 "ntp_parser.y" +#line 375 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_IBURST); } break; case 34: -#line 375 "ntp_parser.y" +#line 376 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Key, yyvsp[0].Integer); } break; case 35: -#line 376 "ntp_parser.y" +#line 377 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Minpoll, yyvsp[0].Integer); } break; case 36: -#line 377 "ntp_parser.y" +#line 378 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Maxpoll, yyvsp[0].Integer); } break; case 37: -#line 378 "ntp_parser.y" +#line 379 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_NOSELECT);} break; case 38: -#line 379 "ntp_parser.y" +#line 380 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_PREEMPT); } break; case 39: -#line 380 "ntp_parser.y" +#line 381 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_PREFER); } break; case 40: -#line 381 "ntp_parser.y" +#line 382 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, FLAG_TRUE); } break; case 41: -#line 382 "ntp_parser.y" +#line 383 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Ttl, yyvsp[0].Integer); } break; case 42: -#line 383 "ntp_parser.y" +#line 384 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Mode, yyvsp[0].Integer); } break; case 43: -#line 384 "ntp_parser.y" +#line 385 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Version, yyvsp[0].Integer); } break; case 44: -#line 395 "ntp_parser.y" +#line 396 "ntp_parser.y" { my_config.broadcastclient = SIMPLE; } break; case 45: -#line 397 "ntp_parser.y" +#line 398 "ntp_parser.y" { my_config.broadcastclient = NOVOLLEY; } break; case 46: -#line 399 "ntp_parser.y" +#line 400 "ntp_parser.y" { append_queue(my_config.manycastserver, yyvsp[0].Queue); } break; case 47: -#line 401 "ntp_parser.y" +#line 402 "ntp_parser.y" { append_queue(my_config.multicastclient, yyvsp[0].Queue); } break; case 48: -#line 412 "ntp_parser.y" +#line 413 "ntp_parser.y" { my_config.auth.autokey = yyvsp[0].Integer; } break; case 49: -#line 414 "ntp_parser.y" +#line 415 "ntp_parser.y" { my_config.auth.control_key = yyvsp[0].Integer; } break; case 50: -#line 416 "ntp_parser.y" +#line 417 "ntp_parser.y" { if (my_config.auth.crypto_cmd_list != NULL) append_queue(my_config.auth.crypto_cmd_list, yyvsp[0].Queue); else my_config.auth.crypto_cmd_list = yyvsp[0].Queue; + cryptosw++; } break; case 51: -#line 422 "ntp_parser.y" +#line 424 "ntp_parser.y" { my_config.auth.keys = yyvsp[0].String; } break; case 52: -#line 424 "ntp_parser.y" +#line 426 "ntp_parser.y" { my_config.auth.keysdir = yyvsp[0].String; } break; case 53: -#line 426 "ntp_parser.y" +#line 428 "ntp_parser.y" { my_config.auth.requested_key = yyvsp[0].Integer; } break; case 54: -#line 428 "ntp_parser.y" +#line 430 "ntp_parser.y" { my_config.auth.trusted_key_list = yyvsp[0].Queue; } break; case 55: -#line 432 "ntp_parser.y" +#line 434 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 56: -#line 433 "ntp_parser.y" +#line 435 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 57: -#line 438 "ntp_parser.y" +#line 440 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_CERT, yyvsp[0].String); } break; case 58: -#line 440 "ntp_parser.y" +#line 442 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_GQPAR, yyvsp[0].String); } break; case 59: -#line 442 "ntp_parser.y" +#line 444 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_PRIV, yyvsp[0].String); } break; case 60: -#line 444 "ntp_parser.y" +#line 446 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_IDENT, yyvsp[0].String); } break; case 61: -#line 446 "ntp_parser.y" +#line 448 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_IFFPAR, yyvsp[0].String); } break; case 62: -#line 448 "ntp_parser.y" +#line 450 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_MVPAR, yyvsp[0].String); } break; case 63: -#line 450 "ntp_parser.y" +#line 452 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_PW, yyvsp[0].String); } break; case 64: -#line 452 "ntp_parser.y" +#line 454 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_RAND, yyvsp[0].String); } break; case 65: -#line 454 "ntp_parser.y" +#line 456 "ntp_parser.y" { my_config.auth.revoke = yyvsp[0].Integer; } break; case 66: -#line 456 "ntp_parser.y" +#line 458 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CRYPTO_CONF_SIGN, yyvsp[0].String); } break; case 67: -#line 466 "ntp_parser.y" +#line 468 "ntp_parser.y" { append_queue(my_config.orphan_cmds,yyvsp[0].Queue); } break; case 68: -#line 470 "ntp_parser.y" +#line 472 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 69: -#line 471 "ntp_parser.y" +#line 473 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 70: -#line 476 "ntp_parser.y" +#line 478 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_CEILING, (double)yyvsp[0].Integer); } break; case 71: -#line 478 "ntp_parser.y" +#line 480 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_FLOOR, (double)yyvsp[0].Integer); } break; case 72: -#line 480 "ntp_parser.y" +#line 482 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_COHORT, (double)yyvsp[0].Integer); } break; case 73: -#line 482 "ntp_parser.y" +#line 484 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_ORPHAN, (double)yyvsp[0].Integer); } break; case 74: -#line 484 "ntp_parser.y" +#line 486 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINDISP, yyvsp[0].Double); } break; case 75: -#line 486 "ntp_parser.y" +#line 488 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXDIST, yyvsp[0].Double); } break; case 76: -#line 488 "ntp_parser.y" +#line 490 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINCLOCK, yyvsp[0].Double); } break; case 77: -#line 490 "ntp_parser.y" +#line 492 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXCLOCK, yyvsp[0].Double); } break; case 78: -#line 492 "ntp_parser.y" +#line 494 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MINSANE, (double)yyvsp[0].Integer); } break; case 79: -#line 494 "ntp_parser.y" +#line 496 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_BEACON, (double)yyvsp[0].Integer); } break; case 80: -#line 496 "ntp_parser.y" +#line 498 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(PROTO_MAXHOP, (double)yyvsp[0].Integer); } break; case 81: -#line 506 "ntp_parser.y" +#line 508 "ntp_parser.y" { append_queue(my_config.stats_list, yyvsp[0].Queue); } break; case 82: -#line 508 "ntp_parser.y" +#line 510 "ntp_parser.y" { my_config.stats_dir = yyvsp[0].String; } break; case 83: -#line 510 "ntp_parser.y" +#line 512 "ntp_parser.y" { enqueue(my_config.filegen_opts, create_filegen_node(yyvsp[-1].VoidPtr, yyvsp[0].Queue)); } break; case 84: -#line 517 "ntp_parser.y" +#line 519 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].VoidPtr); } break; case 85: -#line 518 "ntp_parser.y" +#line 520 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].VoidPtr); } break; case 86: -#line 523 "ntp_parser.y" +#line 525 "ntp_parser.y" { yyval.VoidPtr = create_pval("clockstats"); } break; case 87: -#line 525 "ntp_parser.y" +#line 527 "ntp_parser.y" { yyval.VoidPtr = create_pval("cryptostats"); } break; case 88: -#line 527 "ntp_parser.y" +#line 529 "ntp_parser.y" { yyval.VoidPtr = create_pval("loopstats"); } break; case 89: -#line 529 "ntp_parser.y" +#line 531 "ntp_parser.y" { yyval.VoidPtr = create_pval("peerstats"); } break; case 90: -#line 531 "ntp_parser.y" +#line 533 "ntp_parser.y" { yyval.VoidPtr = create_pval("rawstats"); } break; case 91: -#line 533 "ntp_parser.y" +#line 535 "ntp_parser.y" { yyval.VoidPtr = create_pval("sysstats"); } break; case 92: -#line 537 "ntp_parser.y" +#line 539 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 93: -#line 538 "ntp_parser.y" +#line 540 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 94: -#line 542 "ntp_parser.y" +#line 544 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(T_File, yyvsp[0].String); } break; case 95: -#line 543 "ntp_parser.y" +#line 545 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Type, yyvsp[0].Integer); } break; case 96: -#line 544 "ntp_parser.y" +#line 546 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Link); } break; case 97: -#line 545 "ntp_parser.y" +#line 547 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Nolink); } break; case 98: -#line 546 "ntp_parser.y" +#line 548 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Enable); } break; case 99: -#line 547 "ntp_parser.y" +#line 549 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, T_Disable); } break; case 100: -#line 551 "ntp_parser.y" +#line 553 "ntp_parser.y" { yyval.Integer = FILEGEN_NONE; } break; case 101: -#line 552 "ntp_parser.y" +#line 554 "ntp_parser.y" { yyval.Integer = FILEGEN_PID; } break; case 102: -#line 553 "ntp_parser.y" +#line 555 "ntp_parser.y" { yyval.Integer = FILEGEN_DAY; } break; case 103: -#line 554 "ntp_parser.y" +#line 556 "ntp_parser.y" { yyval.Integer = FILEGEN_WEEK; } break; case 104: -#line 555 "ntp_parser.y" +#line 557 "ntp_parser.y" { yyval.Integer = FILEGEN_MONTH; } break; case 105: -#line 556 "ntp_parser.y" +#line 558 "ntp_parser.y" { yyval.Integer = FILEGEN_YEAR; } break; case 106: -#line 557 "ntp_parser.y" +#line 559 "ntp_parser.y" { yyval.Integer = FILEGEN_AGE; } break; case 107: -#line 567 "ntp_parser.y" +#line 569 "ntp_parser.y" { append_queue(my_config.discard_opts, yyvsp[0].Queue); } break; case 108: -#line 569 "ntp_parser.y" +#line 571 "ntp_parser.y" { enqueue(my_config.restrict_opts, create_restrict_node(yyvsp[-1].Address_node, NULL, yyvsp[0].Queue, ip_file->line_no)); } break; case 109: -#line 574 "ntp_parser.y" +#line 576 "ntp_parser.y" { enqueue(my_config.restrict_opts, create_restrict_node(NULL, NULL, yyvsp[0].Queue, ip_file->line_no)); } break; case 110: -#line 579 "ntp_parser.y" +#line 581 "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)); } break; case 111: -#line 586 "ntp_parser.y" +#line 588 "ntp_parser.y" { yyval.Queue = create_queue(); } break; case 112: -#line 587 "ntp_parser.y" +#line 589 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].VoidPtr); } break; case 113: -#line 591 "ntp_parser.y" +#line 593 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_IGNORE); } break; case 114: -#line 592 "ntp_parser.y" +#line 594 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DEMOBILIZE); } break; case 115: -#line 593 "ntp_parser.y" +#line 595 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_LIMITED); } break; case 116: -#line 594 "ntp_parser.y" +#line 596 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_LPTRAP); } break; case 117: -#line 595 "ntp_parser.y" +#line 597 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOMODIFY); } break; case 118: -#line 596 "ntp_parser.y" +#line 598 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOPEER); } break; case 119: -#line 597 "ntp_parser.y" +#line 599 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOQUERY); } break; case 120: -#line 598 "ntp_parser.y" +#line 600 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DONTSERVE); } break; case 121: -#line 599 "ntp_parser.y" +#line 601 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_NOTRAP); } break; case 122: -#line 600 "ntp_parser.y" +#line 602 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_DONTTRUST); } break; case 123: -#line 601 "ntp_parser.y" +#line 603 "ntp_parser.y" { yyval.VoidPtr = create_ival(RESM_NTPONLY); } break; case 124: -#line 602 "ntp_parser.y" +#line 604 "ntp_parser.y" { yyval.VoidPtr = create_ival(RES_VERSION); } break; case 125: -#line 606 "ntp_parser.y" +#line 608 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 126: -#line 607 "ntp_parser.y" +#line 609 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 127: -#line 611 "ntp_parser.y" +#line 613 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Average, yyvsp[0].Integer); } break; case 128: -#line 612 "ntp_parser.y" +#line 614 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Minimum, yyvsp[0].Integer); } break; case 129: -#line 613 "ntp_parser.y" +#line 615 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Monitor, yyvsp[0].Integer); } break; case 130: -#line 622 "ntp_parser.y" +#line 624 "ntp_parser.y" { enqueue(my_config.fudge, create_addr_opts_node(yyvsp[-1].Address_node, yyvsp[0].Queue)); } break; case 131: -#line 626 "ntp_parser.y" +#line 628 "ntp_parser.y" { enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 132: -#line 627 "ntp_parser.y" +#line 629 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 133: -#line 632 "ntp_parser.y" +#line 634 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(CLK_HAVETIME1, yyvsp[0].Double); } break; case 134: -#line 634 "ntp_parser.y" +#line 636 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(CLK_HAVETIME2, yyvsp[0].Double); } break; case 135: -#line 636 "ntp_parser.y" +#line 638 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEVAL1, yyvsp[0].Integer); } break; case 136: -#line 638 "ntp_parser.y" +#line 640 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(CLK_HAVEVAL2, yyvsp[0].String); } break; case 137: -#line 640 "ntp_parser.y" +#line 642 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG1, yyvsp[0].Integer); } break; case 138: -#line 642 "ntp_parser.y" +#line 644 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG2, yyvsp[0].Integer); } break; case 139: -#line 644 "ntp_parser.y" +#line 646 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG3, yyvsp[0].Integer); } break; case 140: -#line 646 "ntp_parser.y" +#line 648 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(CLK_HAVEFLAG4, yyvsp[0].Integer); } break; case 141: -#line 655 "ntp_parser.y" +#line 657 "ntp_parser.y" { append_queue(my_config.enable_opts,yyvsp[0].Queue); } break; case 142: -#line 657 "ntp_parser.y" +#line 659 "ntp_parser.y" { append_queue(my_config.disable_opts,yyvsp[0].Queue); } break; case 143: -#line 661 "ntp_parser.y" +#line 663 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 144: -#line 662 "ntp_parser.y" +#line 664 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 145: -#line 666 "ntp_parser.y" +#line 668 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); } break; case 146: -#line 667 "ntp_parser.y" +#line 669 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_BROADCLIENT); } break; case 147: -#line 668 "ntp_parser.y" +#line 670 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_CAL); } break; case 148: -#line 669 "ntp_parser.y" +#line 671 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_KERNEL); } break; case 149: -#line 670 "ntp_parser.y" +#line 672 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_MONITOR); } break; case 150: -#line 671 "ntp_parser.y" +#line 673 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_NTP); } break; case 151: -#line 673 "ntp_parser.y" +#line 675 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Flag, PROTO_FILEGEN); } break; case 152: -#line 681 "ntp_parser.y" +#line 683 "ntp_parser.y" { append_queue(my_config.tinker, yyvsp[0].Queue); } break; case 153: -#line 685 "ntp_parser.y" +#line 687 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 154: -#line 686 "ntp_parser.y" +#line 688 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 155: -#line 690 "ntp_parser.y" +#line 692 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_ALLAN, yyvsp[0].Double); } break; case 156: -#line 691 "ntp_parser.y" +#line 693 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_PHI, yyvsp[0].Double); } break; case 157: -#line 692 "ntp_parser.y" +#line 694 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_FREQ, yyvsp[0].Double); } break; case 158: -#line 693 "ntp_parser.y" +#line 695 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_HUFFPUFF, yyvsp[0].Double); } break; case 159: -#line 694 "ntp_parser.y" +#line 696 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_PANIC, yyvsp[0].Double); } break; case 160: -#line 695 "ntp_parser.y" +#line 697 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_MAX, yyvsp[0].Double); } break; case 161: -#line 696 "ntp_parser.y" +#line 698 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(LOOP_MINSTEP, yyvsp[0].Double); } break; case 162: -#line 705 "ntp_parser.y" +#line 707 "ntp_parser.y" { if (curr_include_level >= MAXINCLUDELEVEL) { fprintf(stderr, "getconfig: Maximum include file level exceeded.\n"); @@ -2074,116 +2076,116 @@ case 162: } break; case 163: -#line 721 "ntp_parser.y" +#line 723 "ntp_parser.y" { while (curr_include_level != -1) FCLOSE(fp[curr_include_level--]); } break; case 164: -#line 727 "ntp_parser.y" +#line 729 "ntp_parser.y" { enqueue(my_config.vars, create_attr_dval(T_Broadcastdelay, yyvsp[0].Double)); } break; case 165: -#line 729 "ntp_parser.y" +#line 731 "ntp_parser.y" { enqueue(my_config.vars, create_attr_ival(T_Calldelay, yyvsp[0].Integer)); } break; case 166: -#line 731 "ntp_parser.y" +#line 733 "ntp_parser.y" { enqueue(my_config.vars, create_attr_dval(T_Tick, yyvsp[0].Double)); } break; case 167: -#line 733 "ntp_parser.y" +#line 735 "ntp_parser.y" { /* Null action, possibly all null parms */ } break; case 168: -#line 735 "ntp_parser.y" +#line 737 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Leapfile, yyvsp[0].String)); } break; case 169: -#line 738 "ntp_parser.y" +#line 740 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Pidfile, yyvsp[0].String)); } break; case 170: -#line 740 "ntp_parser.y" +#line 742 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Logfile, yyvsp[0].String)); } break; case 171: -#line 742 "ntp_parser.y" +#line 744 "ntp_parser.y" { enqueue(my_config.vars, create_attr_ival(T_Automax, yyvsp[0].Integer)); } break; case 172: -#line 745 "ntp_parser.y" +#line 747 "ntp_parser.y" { append_queue(my_config.logconfig, yyvsp[0].Queue); } break; case 173: -#line 747 "ntp_parser.y" +#line 749 "ntp_parser.y" { append_queue(my_config.phone, yyvsp[0].Queue); } break; case 174: -#line 749 "ntp_parser.y" +#line 751 "ntp_parser.y" { enqueue(my_config.setvar, yyvsp[0].Set_var); } break; case 175: -#line 751 "ntp_parser.y" +#line 753 "ntp_parser.y" { enqueue(my_config.trap, create_addr_opts_node(yyvsp[-1].Address_node, yyvsp[0].Queue)); } break; case 176: -#line 753 "ntp_parser.y" +#line 755 "ntp_parser.y" { append_queue(my_config.ttl, yyvsp[0].Queue); } break; case 177: -#line 757 "ntp_parser.y" +#line 759 "ntp_parser.y" { enqueue(my_config.vars, create_attr_sval(T_Driftfile, yyvsp[0].String)); } break; case 178: -#line 759 "ntp_parser.y" +#line 761 "ntp_parser.y" { enqueue(my_config.vars, create_attr_dval(T_WanderThreshold, yyvsp[0].Double)); enqueue(my_config.vars, create_attr_sval(T_Driftfile, yyvsp[-1].String)); } break; case 179: -#line 761 "ntp_parser.y" +#line 763 "ntp_parser.y" { /* Null driftfile, indicated by null string "\0" */ enqueue(my_config.vars, create_attr_sval(T_Driftfile, "\0")); } break; case 180: -#line 767 "ntp_parser.y" +#line 769 "ntp_parser.y" { yyval.Set_var = create_setvar_node(yyvsp[-3].String, yyvsp[-1].String, DEF); } break; case 181: -#line 769 "ntp_parser.y" +#line 771 "ntp_parser.y" { yyval.Set_var = create_setvar_node(yyvsp[-2].String, yyvsp[0].String, 0); } break; case 182: -#line 774 "ntp_parser.y" +#line 776 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 183: -#line 775 "ntp_parser.y" +#line 777 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 184: -#line 779 "ntp_parser.y" +#line 781 "ntp_parser.y" { yyval.Attr_val = create_attr_ival(T_Port, yyvsp[0].Integer); } break; case 185: -#line 780 "ntp_parser.y" +#line 782 "ntp_parser.y" { yyval.Attr_val = create_attr_pval(T_Interface, yyvsp[0].Address_node); } break; case 186: -#line 785 "ntp_parser.y" +#line 787 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Attr_val); } break; case 187: -#line 786 "ntp_parser.y" +#line 788 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Attr_val); } break; case 188: -#line 790 "ntp_parser.y" +#line 792 "ntp_parser.y" { yyval.Attr_val = create_attr_sval(yyvsp[-1].Integer, yyvsp[0].String); } break; case 189: -#line 792 "ntp_parser.y" +#line 794 "ntp_parser.y" { /* YUCK!! This is needed because '+' and '-' are not special characters * while '=' is. @@ -2199,43 +2201,43 @@ case 189: } break; case 190: -#line 808 "ntp_parser.y" +#line 810 "ntp_parser.y" { yyval.Integer = '+'; } break; case 191: -#line 809 "ntp_parser.y" +#line 811 "ntp_parser.y" { yyval.Integer = '-'; } break; case 192: -#line 810 "ntp_parser.y" +#line 812 "ntp_parser.y" { yyval.Integer = '='; } break; case 193: -#line 819 "ntp_parser.y" +#line 821 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, create_ival(yyvsp[0].Integer)); } break; case 194: -#line 820 "ntp_parser.y" +#line 822 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(create_ival(yyvsp[0].Integer)); } break; case 195: -#line 824 "ntp_parser.y" +#line 826 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, create_pval(yyvsp[0].String)); } break; case 196: -#line 825 "ntp_parser.y" +#line 827 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(create_pval(yyvsp[0].String)); } break; case 197: -#line 829 "ntp_parser.y" +#line 831 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Address_node); } break; case 198: -#line 830 "ntp_parser.y" +#line 832 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Address_node); } break; case 199: -#line 835 "ntp_parser.y" +#line 837 "ntp_parser.y" { if (yyvsp[0].Integer != 0 && yyvsp[0].Integer != 1) { yyerror("Integer value is not boolean (0 or 1). Assuming 1"); @@ -2246,23 +2248,23 @@ case 199: } break; case 200: -#line 843 "ntp_parser.y" +#line 845 "ntp_parser.y" { yyval.Integer = 1; } break; case 201: -#line 844 "ntp_parser.y" +#line 846 "ntp_parser.y" { yyval.Integer = 0; } break; case 202: -#line 848 "ntp_parser.y" +#line 850 "ntp_parser.y" { yyval.Double = (double)yyvsp[0].Integer; } break; case 203: -#line 849 "ntp_parser.y" +#line 851 "ntp_parser.y" { yyval.Double = yyvsp[0].Double; } break; case 204: -#line 858 "ntp_parser.y" +#line 860 "ntp_parser.y" { my_config.sim_details = create_sim_node(yyvsp[-2].Queue, yyvsp[-1].Queue); @@ -2271,91 +2273,91 @@ case 204: } break; case 205: -#line 872 "ntp_parser.y" +#line 874 "ntp_parser.y" { old_config_style = 0; } break; case 206: -#line 876 "ntp_parser.y" +#line 878 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-2].Queue, yyvsp[-1].Attr_val); } break; case 207: -#line 877 "ntp_parser.y" +#line 879 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[-1].Attr_val); } break; case 208: -#line 881 "ntp_parser.y" +#line 883 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Beep_Delay, yyvsp[0].Double); } break; case 209: -#line 882 "ntp_parser.y" +#line 884 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Sim_Duration, yyvsp[0].Double); } break; case 210: -#line 886 "ntp_parser.y" +#line 888 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Sim_server); } break; case 211: -#line 887 "ntp_parser.y" +#line 889 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Sim_server); } break; case 212: -#line 892 "ntp_parser.y" +#line 894 "ntp_parser.y" { yyval.Sim_server = create_sim_server(yyvsp[-4].Address_node, yyvsp[-2].Double, yyvsp[-1].Queue); } break; case 213: -#line 896 "ntp_parser.y" +#line 898 "ntp_parser.y" { yyval.Double = yyvsp[-1].Double; } break; case 214: -#line 900 "ntp_parser.y" +#line 902 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; case 215: -#line 904 "ntp_parser.y" +#line 906 "ntp_parser.y" { yyval.Address_node = yyvsp[0].Address_node; } break; case 216: -#line 905 "ntp_parser.y" +#line 907 "ntp_parser.y" { yyval.Address_node = create_address_node(yyvsp[0].String, T_String); } break; case 217: -#line 909 "ntp_parser.y" +#line 911 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-1].Queue, yyvsp[0].Sim_script); } break; case 218: -#line 910 "ntp_parser.y" +#line 912 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[0].Sim_script); } break; case 219: -#line 915 "ntp_parser.y" +#line 917 "ntp_parser.y" { yyval.Sim_script = create_sim_script_info(yyvsp[-3].Double, yyvsp[-1].Queue); } break; case 220: -#line 919 "ntp_parser.y" +#line 921 "ntp_parser.y" { yyval.Queue = enqueue(yyvsp[-2].Queue, yyvsp[-1].Attr_val); } break; case 221: -#line 920 "ntp_parser.y" +#line 922 "ntp_parser.y" { yyval.Queue = enqueue_in_new_queue(yyvsp[-1].Attr_val); } break; case 222: -#line 925 "ntp_parser.y" +#line 927 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Freq_Offset, yyvsp[0].Double); } break; case 223: -#line 927 "ntp_parser.y" +#line 929 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Wander, yyvsp[0].Double); } break; case 224: -#line 929 "ntp_parser.y" +#line 931 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Jitter, yyvsp[0].Double); } break; case 225: -#line 931 "ntp_parser.y" +#line 933 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Prop_Delay, yyvsp[0].Double); } break; case 226: -#line 933 "ntp_parser.y" +#line 935 "ntp_parser.y" { yyval.Attr_val = create_attr_dval(T_Proc_Delay, yyvsp[0].Double); } break; } @@ -2591,7 +2593,7 @@ yyreturn: #endif return yyresult; } -#line 937 "ntp_parser.y" +#line 939 "ntp_parser.y" /* KEYWORDS diff --git a/ntpd/ntp_parser.y b/ntpd/ntp_parser.y index e839415ab5..28b52ddd08 100644 --- a/ntpd/ntp_parser.y +++ b/ntpd/ntp_parser.y @@ -43,6 +43,7 @@ #define YYERROR_VERBOSE void yyerror (char *msg); extern int input_from_file; /* 0=input from ntpq>config command buffer */ + extern int cryptosw; %} %union { @@ -417,6 +418,7 @@ authentication_command append_queue(my_config.auth.crypto_cmd_list, $2); else my_config.auth.crypto_cmd_list = $2; + cryptosw++; } | T_Keys T_String { my_config.auth.keys = $2; } diff --git a/ntpd/ntp_restrict.c b/ntpd/ntp_restrict.c index c4a0ae7e44..dbbb75d7c3 100644 --- a/ntpd/ntp_restrict.c +++ b/ntpd/ntp_restrict.c @@ -312,6 +312,12 @@ hack_restrict( memset(&mask6, 0, sizeof(struct in6_addr)); if (resaddr->ss_family == AF_INET) { +#ifdef DEBUG + if (debug) + printf("restrict: addr %08x mask %08x mflags %08x flags %08x\n", + SRCADR(resaddr), SRCADR(resmask), mflags, flags); +#endif + /* * Get address and mask in host byte order */ @@ -405,7 +411,6 @@ hack_restrict( * points to the entry prior to where this one should go in * the sort. */ - /* * Switch based on operation */