diff options
author | delphij <delphij@FreeBSD.org> | 2016-12-22 16:19:05 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2016-12-22 16:19:05 +0000 |
commit | a5b8a0cee842e12aa090449e042788b9eabc35da (patch) | |
tree | c763313cbeed3fb4c2eaab81925e4718bb6d5a62 /contrib | |
parent | 897834470fcc320aaf75dc150ec701ce17c3491a (diff) | |
download | FreeBSD-src-releng/10.1.zip FreeBSD-src-releng/10.1.tar.gz |
Fix multiple vulnerabilities of ntp.releng/10.1
Approved by: so
Diffstat (limited to 'contrib')
172 files changed, 7330 insertions, 3757 deletions
diff --git a/contrib/ntp/ChangeLog b/contrib/ntp/ChangeLog index 0805467..0cb8c4f 100644 --- a/contrib/ntp/ChangeLog +++ b/contrib/ntp/ChangeLog @@ -1,4 +1,73 @@ --- +(4.2.8p9) 2016/11/21 Released by Harlan Stenn <stenn@ntp.org> +(4.2.8p9) 2016/MM/DD Released by Harlan Stenn <stenn@ntp.org> + +* [Sec 3119] Trap crash <perlinger@ntp.org> +* [Sec 3118] Mode 6 information disclosure and DDoS vector <perlinger@ntp.org> + - TRAP config via mode 6 packet requires AUTH now. +* [Sec 3114] Broadcast Mode Replay Prevention DoS + - applied patches by Matthew Van Gundy. <perlinger@ntp.org> + - with bcpollbstep, tweaks and cleanup by stenn@ntp.org +* [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS <perlinger@ntp.org> + - applied fix as suggested by Matthew Van Gundy +* [Sec 3110] Windows: ntpd DoS by oversized UDP packet + - fixed error handling for truncated UDP packets. <perlinger@ntp.org> +* [Sec 3102] Zero origin issues. HStenn. +* [Sec 3082] null pointer dereference in _IO_str_init_static_internal() + - more hardening to read_mru_list(). perlinger@ntp.org +* [Sec 3072] Attack on interface selection <perlinger@ntp.org> + - implemented Miroslav Lichvars <mlichvar@redhat.com> suggestion + to skip interface updates based on incoming packets +* [Bug 3142] bug in netmask prefix length detection <perlinger@ntp.org> +* [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org +* [Bug 3129] Unknown hosts can put resolver thread into a hard loop + - moved retry decision where it belongs. <perlinger@ntp.org> +* [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order + using the loopback-ppsapi-provider.dll <perlinger@ntp.org> +* [Bug 3116] unit tests for NTP time stamp expansion. <perlinger@ntp.org> +* [Bug 3100] ntpq can't retrieve daemon_version <perlinger@ntp.org> + - fixed extended sysvar lookup (bug introduced with bug 3008 fix) +* [Bug 3095] Compatibility with openssl 1.1 <perlinger@ntp.org> + - applied patches by Kurt Roeckx <kurt@roeckx.be> to source + - added shim layer for SSL API calls with issues (both directions) +* [Bug 3089] Serial Parser does not work anymore for hopfser like device + - simplified / refactored hex-decoding in driver. <perlinger@ntp.org> +* [Bug 3084] update-leap mis-parses the leapfile name. HStenn. +* [Bug 3068] Linker warnings when building on Solaris. perlinger@ntp.org + - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com> +* [Bug 3067] Root distance calculation needs improvement. HStenn. +* [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org + - PPS-HACK works again. +* [Bug 3059] Potential buffer overrun from oversized hash <perlinger@ntp.org> + - applied patch by Brian Utterback <brian.utterback@oracle.com> +* [Bug 3053] ntp_loopfilter.c frequency calc precedence error. Sarah White. +* [Bug 3050] Fix for bug #2960 causes [...] spurious error message. + <perlinger@ntp.org> + - patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no> +* [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + - Patch provided by Kuramatsu. +* [Bug 3021] unity_fixture.c needs pragma weak <perlinger@ntp.org> + - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()' +* [Bug 3019] Windows: ERROR_HOST_UNREACHABLE block packet processing. + DMayer and JPerlinger. +* [Bug 2998] sntp/tests/packetProcessing.c broken without openssl. JPerlinger +* [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY. HStenn. +* [Bug 2959] refclock_jupiter: gps week correction <perlinger@ntp.org> + - fixed GPS week expansion to work based on build date. Special thanks + to Craig Leres for initial patch and testing. +* [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd' + - fixed Makefile.am <perlinger@ntp.org> +* [Bug 2689] ATOM driver processes last PPS pulse at startup, + even if it is very old <perlinger@ntp.org> + - make sure PPS source is alive before processing samples + - improve stability close to the 500ms phase jump (phase gate) +* Fix typos in include/ntp.h. +* Shim X509_get_signature_nid() if needed. +* git author attribution cleanup +* bk ignore file cleanup +* remove locks in Windows IO, use rpc-like thread synchronisation instead + +--- (4.2.8p8) 2016/06/02 Released by Harlan Stenn <stenn@ntp.org> * [Sec 3042] Broadcast Interleave. HStenn. @@ -19,7 +88,7 @@ * Fix typo in ntp-wait and plot_summary. HStenn. * Make sure we have an "author" file for git imports. HStenn. * Update the sntp problem tests for MacOS. HStenn. - + --- (4.2.8p7) 2016/04/26 Released by Harlan Stenn <stenn@ntp.org> diff --git a/contrib/ntp/CommitLog b/contrib/ntp/CommitLog index 4577755..1c4c87f 100644 --- a/contrib/ntp/CommitLog +++ b/contrib/ntp/CommitLog @@ -1,3 +1,1866 @@ +ChangeSet@1.3720, 2016-11-21 08:08:21-05:00, stenn@deacon.udel.edu + NTP_4_2_8P9 + TAG: NTP_4_2_8P9 + + ChangeLog@1.1852 +1 -0 + NTP_4_2_8P9 + + ntpd/invoke-ntp.conf.texi@1.203 +1 -1 + NTP_4_2_8P9 + + ntpd/invoke-ntp.keys.texi@1.192 +1 -1 + NTP_4_2_8P9 + + ntpd/invoke-ntpd.texi@1.508 +2 -2 + NTP_4_2_8P9 + + ntpd/ntp.conf.5man@1.237 +3 -3 + NTP_4_2_8P9 + + ntpd/ntp.conf.5mdoc@1.237 +2 -2 + NTP_4_2_8P9 + + ntpd/ntp.conf.html@1.187 +157 -154 + NTP_4_2_8P9 + + ntpd/ntp.conf.man.in@1.237 +3 -3 + NTP_4_2_8P9 + + ntpd/ntp.conf.mdoc.in@1.237 +2 -2 + NTP_4_2_8P9 + + ntpd/ntp.keys.5man@1.226 +2 -2 + NTP_4_2_8P9 + + ntpd/ntp.keys.5mdoc@1.226 +3 -3 + NTP_4_2_8P9 + + ntpd/ntp.keys.html@1.188 +21 -33 + NTP_4_2_8P9 + + ntpd/ntp.keys.man.in@1.226 +2 -2 + NTP_4_2_8P9 + + ntpd/ntp.keys.mdoc.in@1.226 +3 -3 + NTP_4_2_8P9 + + ntpd/ntpd-opts.c@1.530 +245 -245 + NTP_4_2_8P9 + + ntpd/ntpd-opts.h@1.529 +3 -3 + NTP_4_2_8P9 + + ntpd/ntpd.1ntpdman@1.337 +3 -3 + NTP_4_2_8P9 + + ntpd/ntpd.1ntpdmdoc@1.337 +2 -2 + NTP_4_2_8P9 + + ntpd/ntpd.html@1.181 +142 -186 + NTP_4_2_8P9 + + ntpd/ntpd.man.in@1.337 +3 -3 + NTP_4_2_8P9 + + ntpd/ntpd.mdoc.in@1.337 +2 -2 + NTP_4_2_8P9 + + ntpdc/invoke-ntpdc.texi@1.505 +2 -2 + NTP_4_2_8P9 + + ntpdc/ntpdc-opts.c@1.523 +106 -106 + NTP_4_2_8P9 + + ntpdc/ntpdc-opts.h@1.522 +3 -3 + NTP_4_2_8P9 + + ntpdc/ntpdc.1ntpdcman@1.336 +3 -3 + NTP_4_2_8P9 + + ntpdc/ntpdc.1ntpdcmdoc@1.336 +2 -2 + NTP_4_2_8P9 + + ntpdc/ntpdc.html@1.349 +75 -95 + NTP_4_2_8P9 + + ntpdc/ntpdc.man.in@1.336 +3 -3 + NTP_4_2_8P9 + + ntpdc/ntpdc.mdoc.in@1.336 +2 -2 + NTP_4_2_8P9 + + ntpq/invoke-ntpq.texi@1.513 +2 -2 + NTP_4_2_8P9 + + ntpq/ntpq-opts.c@1.530 +113 -113 + NTP_4_2_8P9 + + ntpq/ntpq-opts.h@1.528 +3 -3 + NTP_4_2_8P9 + + ntpq/ntpq.1ntpqman@1.341 +3 -3 + NTP_4_2_8P9 + + ntpq/ntpq.1ntpqmdoc@1.341 +2 -2 + NTP_4_2_8P9 + + ntpq/ntpq.html@1.178 +136 -160 + NTP_4_2_8P9 + + ntpq/ntpq.man.in@1.341 +3 -3 + NTP_4_2_8P9 + + ntpq/ntpq.mdoc.in@1.341 +2 -2 + NTP_4_2_8P9 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.507 +2 -2 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd-opts.c@1.525 +67 -67 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd-opts.h@1.524 +3 -3 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.336 +3 -3 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.336 +2 -2 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd.html@1.176 +10 -14 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd.man.in@1.336 +3 -3 + NTP_4_2_8P9 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.336 +2 -2 + NTP_4_2_8P9 + + packageinfo.sh@1.532 +2 -2 + NTP_4_2_8P9 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.97 +3 -3 + NTP_4_2_8P9 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.98 +2 -2 + NTP_4_2_8P9 + + scripts/calc_tickadj/calc_tickadj.html@1.99 +30 -42 + NTP_4_2_8P9 + + scripts/calc_tickadj/calc_tickadj.man.in@1.96 +3 -3 + NTP_4_2_8P9 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.98 +2 -2 + NTP_4_2_8P9 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.101 +1 -1 + NTP_4_2_8P9 + + scripts/invoke-plot_summary.texi@1.119 +2 -2 + NTP_4_2_8P9 + + scripts/invoke-summary.texi@1.118 +2 -2 + NTP_4_2_8P9 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.328 +2 -2 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait-opts@1.64 +2 -2 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.325 +3 -3 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.326 +2 -2 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait.html@1.345 +41 -59 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait.man.in@1.325 +3 -3 + NTP_4_2_8P9 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.326 +2 -2 + NTP_4_2_8P9 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.116 +2 -2 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep-opts@1.66 +2 -2 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.104 +3 -3 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.104 +2 -2 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep.html@1.117 +46 -57 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep.man.in@1.104 +3 -3 + NTP_4_2_8P9 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.105 +2 -2 + NTP_4_2_8P9 + + scripts/ntptrace/invoke-ntptrace.texi@1.117 +2 -2 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace-opts@1.66 +2 -2 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace.1ntptraceman@1.104 +3 -3 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.105 +2 -2 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace.html@1.118 +38 -47 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace.man.in@1.104 +3 -3 + NTP_4_2_8P9 + + scripts/ntptrace/ntptrace.mdoc.in@1.106 +2 -2 + NTP_4_2_8P9 + + scripts/plot_summary-opts@1.67 +2 -2 + NTP_4_2_8P9 + + scripts/plot_summary.1plot_summaryman@1.117 +3 -3 + NTP_4_2_8P9 + + scripts/plot_summary.1plot_summarymdoc@1.117 +2 -2 + NTP_4_2_8P9 + + scripts/plot_summary.html@1.120 +40 -58 + NTP_4_2_8P9 + + scripts/plot_summary.man.in@1.117 +3 -3 + NTP_4_2_8P9 + + scripts/plot_summary.mdoc.in@1.117 +2 -2 + NTP_4_2_8P9 + + scripts/summary-opts@1.66 +2 -2 + NTP_4_2_8P9 + + scripts/summary.1summaryman@1.116 +3 -3 + NTP_4_2_8P9 + + scripts/summary.1summarymdoc@1.116 +2 -2 + NTP_4_2_8P9 + + scripts/summary.html@1.119 +37 -49 + NTP_4_2_8P9 + + scripts/summary.man.in@1.116 +3 -3 + NTP_4_2_8P9 + + scripts/summary.mdoc.in@1.116 +2 -2 + NTP_4_2_8P9 + + scripts/update-leap/invoke-update-leap.texi@1.17 +1 -1 + NTP_4_2_8P9 + + scripts/update-leap/update-leap-opts@1.17 +2 -2 + NTP_4_2_8P9 + + scripts/update-leap/update-leap.1update-leapman@1.17 +3 -3 + NTP_4_2_8P9 + + scripts/update-leap/update-leap.1update-leapmdoc@1.17 +2 -2 + NTP_4_2_8P9 + + scripts/update-leap/update-leap.html@1.17 +48 -72 + NTP_4_2_8P9 + + scripts/update-leap/update-leap.man.in@1.17 +3 -3 + NTP_4_2_8P9 + + scripts/update-leap/update-leap.mdoc.in@1.17 +2 -2 + NTP_4_2_8P9 + + sntp/invoke-sntp.texi@1.505 +2 -2 + NTP_4_2_8P9 + + sntp/sntp-opts.c@1.524 +158 -158 + NTP_4_2_8P9 + + sntp/sntp-opts.h@1.522 +3 -3 + NTP_4_2_8P9 + + sntp/sntp.1sntpman@1.340 +3 -3 + NTP_4_2_8P9 + + sntp/sntp.1sntpmdoc@1.340 +2 -2 + NTP_4_2_8P9 + + sntp/sntp.html@1.520 +111 -135 + NTP_4_2_8P9 + + sntp/sntp.man.in@1.340 +3 -3 + NTP_4_2_8P9 + + sntp/sntp.mdoc.in@1.340 +2 -2 + NTP_4_2_8P9 + + util/invoke-ntp-keygen.texi@1.508 +2 -2 + NTP_4_2_8P9 + + util/ntp-keygen-opts.c@1.526 +172 -172 + NTP_4_2_8P9 + + util/ntp-keygen-opts.h@1.524 +3 -3 + NTP_4_2_8P9 + + util/ntp-keygen.1ntp-keygenman@1.336 +3 -3 + NTP_4_2_8P9 + + util/ntp-keygen.1ntp-keygenmdoc@1.336 +2 -2 + NTP_4_2_8P9 + + util/ntp-keygen.html@1.182 +157 -216 + NTP_4_2_8P9 + + util/ntp-keygen.man.in@1.336 +3 -3 + NTP_4_2_8P9 + + util/ntp-keygen.mdoc.in@1.336 +2 -2 + NTP_4_2_8P9 + +ChangeSet@1.3719, 2016-11-21 07:07:04-05:00, stenn@deacon.udel.edu + ntp-4.2.8p9 + + packageinfo.sh@1.531 +1 -1 + ntp-4.2.8p9 + +ChangeSet@1.3718, 2016-11-21 03:47:58+00:00, stenn@psp-deb1.ntp.org + NEWS updates, final p9 testing + + NEWS@1.203 +25 -17 + NEWS updates, final p9 testing + + packageinfo.sh@1.530 +2 -2 + NEWS updates, final p9 testing + +ChangeSet@1.3717, 2016-11-18 10:33:02+00:00, stenn@psp-deb1.ntp.org + NEWS update for 3142 + + NEWS@1.202 +2 -1 + NEWS update for 3142 + +ChangeSet@1.3686.23.1, 2016-11-18 08:55:13+01:00, perlinger@ntp.org + [Bug 3142] bug in netmask prefix length detection + + ChangeLog@1.1834.23.1 +3 -0 + [Bug 3142] bug in netmask prefix length detection + + lib/isc/netaddr.c@1.15 +0 -1 + [Bug 3142] bug in netmask prefix length detection + +ChangeSet@1.3715, 2016-11-16 21:25:49-08:00, harlan@fb-x86-a.pfcs.com + NEWS file update + + NEWS@1.201 +7 -22 + NEWS file update + +ChangeSet@1.3707.1.1, 2016-11-13 21:59:31-08:00, harlan@fb-x86-a.pfcs.com + cleanup + + NEWS@1.197.1.1 +201 -77 + cleanup + +ChangeSet@1.3713, 2016-11-13 21:56:18-08:00, harlan@hms-mbp11.pfcs.com + cleanip + + ChangeLog@1.1850 +2 -0 + cleanip + +ChangeSet@1.3712, 2016-11-13 02:43:02+00:00, stenn@psp-deb1.ntp.org + NEWS updates + + NEWS@1.199 +17 -0 + NEWS updates + +ChangeSet@1.3710, 2016-11-13 02:30:31+00:00, stenn@psp-deb1.ntp.org + NEWS cleanup + + NEWS@1.198 +2 -0 + NEWS cleanup + +ChangeSet@1.3707, 2016-11-12 17:36:54-08:00, harlan@fb-x86-a.pfcs.com + NEWS cleanup + + NEWS@1.197 +41 -6 + NEWS cleanup + +ChangeSet@1.3706, 2016-11-12 16:55:59-08:00, harlan@fb-x86-a.pfcs.com + [Bug 3067] Root distance calculation needs improvement. HStenn + + ChangeLog@1.1846.1.2 +1 -0 + [Bug 3067] Root distance calculation needs improvement. HStenn + + NEWS@1.196 +1 -0 + [Bug 3067] Root distance calculation needs improvement. HStenn + + ntpd/ntp_proto.c@1.396 +16 -11 + [Bug 3067] Root distance calculation needs improvement. HStenn + +ChangeSet@1.3705, 2016-11-12 15:57:34-08:00, harlan@fb-x86-a.pfcs.com + [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org + + ChangeLog@1.1846.1.1 +1 -0 + [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org + + NEWS@1.195 +1 -0 + [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org + + ntpd/refclock_gpsdjson.c@1.25 +1 -1 + [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org + +ChangeSet@1.3686.22.1, 2016-11-12 05:54:39+01:00, perlinger@ntp.org + [Bug 3129] Unknown hosts can put resolver thread into a hard loop + + ChangeLog@1.1834.22.1 +4 -0 + [Bug 3129] Unknown hosts can put resolver thread into a hard loop + + include/ntp_intres.h@1.2 +6 -0 + [Bug 3129] Unknown hosts can put resolver thread into a hard loop + - add flags and prototype for 'getaddrinfo_sometime_ex()' + + libntp/ntp_intres.c@1.101 +48 -14 + [Bug 3129] Unknown hosts can put resolver thread into a hard loop + - implement 'getaddrinfo_sometime_ex()', support ignoring all errors + + ntpd/ntp_config.c@1.338.1.1 +11 -10 + [Bug 3129] Unknown hosts can put resolver thread into a hard loop + - move decison about igoring DNS errors to resolver code + +ChangeSet@1.3703.1.2, 2016-11-09 12:32:07+00:00, stenn@psp-deb1.ntp.org + [Bug 3114] bcpollbstep, tweaks and cleanup + + ChangeLog@1.1848 +1 -1 + [Bug 3114] bcpollbstep, tweaks and cleanup + + html/miscopt.html@1.87 +4 -2 + [Bug 3114] bcpollbstep, tweaks and cleanup + + include/ntp.h@1.223 +1 -0 + [Bug 3114] bcpollbstep, tweaks and cleanup + + include/ntpd.h@1.194 +1 -0 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/complete.conf.in@1.32 +1 -1 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/invoke-ntp.conf.texi@1.202 +16 -1 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/keyword-gen-utd@1.29 +1 -1 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/keyword-gen.c@1.35 +1 -0 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp.conf.5man@1.236 +29 -8 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp.conf.5mdoc@1.236 +21 -2 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp.conf.def@1.25 +19 -0 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp.conf.man.in@1.236 +29 -8 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp.conf.mdoc.in@1.236 +21 -2 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_config.c@1.339 +15 -0 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_keyword.h@1.31 +1068 -1058 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_parser.c@1.103 +1196 -1193 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_parser.h@1.67 +373 -371 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_parser.y@1.93 +3 -1 + [Bug 3114] bcpollbstep, tweaks and cleanup + + ntpd/ntp_proto.c@1.394.1.2 +43 -26 + [Bug 3114] bcpollbstep, tweaks and cleanup + +ChangeSet@1.3703, 2016-11-09 06:06:04+00:00, stenn@psp-deb1.ntp.org + typo + + ChangeLog@1.1846 +1 -1 + typo + +ChangeSet@1.3686.21.1, 2016-11-08 20:01:41+01:00, perlinger@ntp.org + [Bug 3089] Serial Parser does not work anymore for hopfser like device + + ChangeLog@1.1834.21.1 +4 -0 + [Bug 3089] Serial Parser does not work anymore for hopfser like device + + libparse/clk_hopf6021.c@1.13 +43 -25 + [Bug 3089] Serial Parser does not work anymore for hopfser like device + - simplified / refactored hex-decoding in driver. + +ChangeSet@1.3698.2.1, 2016-11-03 17:02:24-07:00, harlan@max.pfcs.com + Added leap smear/root dispersion comment + + ntpd/ntp_proto.c@1.393.1.1 +4 -0 + Added leap smear/root dispersion comment + +ChangeSet@1.3699.1.2, 2016-10-31 10:56:33+00:00, stenn@psp-deb1.ntp.org + Add bug 3125 to the NEWS file + + NEWS@1.194 +2 -0 + Add bug 3125 to the NEWS file + +ChangeSet@1.3701, 2016-10-24 07:37:25+02:00, perlinger@ntp.org + [winio2 - unlocked] + - the great lock removal + - the great renaming + + ChangeLog@1.1844 +1 -0 + [winio2 - unlocked] notes on changes + + ntpd/ntp_refclock.c@1.123 +1 -1 + [winio2 - unlocked] + - whitespace at EOL + + ports/winnt/include/ntp_iocpltypes.h@1.3 +21 -24 + [winio2 - unlocked] + - eliminate critical section, simplify API + - the great renaming + + ports/winnt/ntpd/ntp_iocompletionport.c@1.77 +331 -209 + [winio2 - unlocked] + - the great lock removal + - handle context objects are only manipulated by IOCPL thread + - closing handles is done by main thread after informing IOCPL thread (RPC-style) + - the great renaming + - restructured UNIX line mode emulation + + ports/winnt/ntpd/ntp_iocpltypes.c@1.3 +31 -95 + [winio2 - unlocked] + - eliminate critical section, simplify API + - the great renaming + + +ChangeSet@1.3698.1.7, 2016-10-23 05:18:04+00:00, stenn@psp-deb1.ntp.org + ntp-4.2.8p9-PRE + + ntpd/invoke-ntp.conf.texi@1.201 +1 -1 + ntp-4.2.8p9-PRE + + ntpd/invoke-ntp.keys.texi@1.191 +1 -1 + ntp-4.2.8p9-PRE + + ntpd/invoke-ntpd.texi@1.507 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntp.conf.5man@1.235 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntp.conf.5mdoc@1.235 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntp.conf.html@1.186 +104 -91 + ntp-4.2.8p9-PRE + + ntpd/ntp.conf.man.in@1.235 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntp.conf.mdoc.in@1.235 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntp.keys.5man@1.225 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntp.keys.5mdoc@1.225 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntp.keys.html@1.187 +29 -17 + ntp-4.2.8p9-PRE + + ntpd/ntp.keys.man.in@1.225 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntp.keys.mdoc.in@1.225 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntpd-opts.c@1.529 +245 -245 + ntp-4.2.8p9-PRE + + ntpd/ntpd-opts.h@1.528 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntpd.1ntpdman@1.336 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntpd.1ntpdmdoc@1.336 +2 -2 + ntp-4.2.8p9-PRE + + ntpd/ntpd.html@1.180 +146 -102 + ntp-4.2.8p9-PRE + + ntpd/ntpd.man.in@1.336 +3 -3 + ntp-4.2.8p9-PRE + + ntpd/ntpd.mdoc.in@1.336 +2 -2 + ntp-4.2.8p9-PRE + + ntpdc/invoke-ntpdc.texi@1.504 +2 -2 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc-opts.c@1.522 +106 -106 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc-opts.h@1.521 +3 -3 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc.1ntpdcman@1.335 +3 -3 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc.1ntpdcmdoc@1.335 +2 -2 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc.html@1.348 +77 -57 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc.man.in@1.335 +3 -3 + ntp-4.2.8p9-PRE + + ntpdc/ntpdc.mdoc.in@1.335 +2 -2 + ntp-4.2.8p9-PRE + + ntpq/invoke-ntpq.texi@1.512 +2 -2 + ntp-4.2.8p9-PRE + + ntpq/ntpq-opts.c@1.529 +113 -113 + ntp-4.2.8p9-PRE + + ntpq/ntpq-opts.h@1.527 +3 -3 + ntp-4.2.8p9-PRE + + ntpq/ntpq.1ntpqman@1.340 +3 -3 + ntp-4.2.8p9-PRE + + ntpq/ntpq.1ntpqmdoc@1.340 +2 -2 + ntp-4.2.8p9-PRE + + ntpq/ntpq.html@1.177 +129 -105 + ntp-4.2.8p9-PRE + + ntpq/ntpq.man.in@1.340 +3 -3 + ntp-4.2.8p9-PRE + + ntpq/ntpq.mdoc.in@1.340 +2 -2 + ntp-4.2.8p9-PRE + + ntpsnmpd/invoke-ntpsnmpd.texi@1.506 +2 -2 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd-opts.c@1.524 +67 -67 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd-opts.h@1.523 +3 -3 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.335 +3 -3 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.335 +2 -2 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd.html@1.175 +14 -10 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd.man.in@1.335 +3 -3 + ntp-4.2.8p9-PRE + + ntpsnmpd/ntpsnmpd.mdoc.in@1.335 +2 -2 + ntp-4.2.8p9-PRE + + packageinfo.sh@1.529 +2 -2 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.96 +3 -3 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.97 +2 -2 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/calc_tickadj.html@1.98 +34 -22 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/calc_tickadj.man.in@1.95 +3 -3 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.97 +2 -2 + ntp-4.2.8p9-PRE + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.100 +1 -1 + ntp-4.2.8p9-PRE + + scripts/invoke-plot_summary.texi@1.118 +2 -2 + ntp-4.2.8p9-PRE + + scripts/invoke-summary.texi@1.117 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/invoke-ntp-wait.texi@1.327 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait-opts@1.63 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.324 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.325 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait.html@1.344 +49 -31 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait.man.in@1.324 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntp-wait/ntp-wait.mdoc.in@1.325 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/invoke-ntpsweep.texi@1.115 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep-opts@1.65 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.103 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.103 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep.html@1.116 +44 -33 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep.man.in@1.103 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntpsweep/ntpsweep.mdoc.in@1.104 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntptrace/invoke-ntptrace.texi@1.116 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace-opts@1.65 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace.1ntptraceman@1.103 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.104 +2 -2 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace.html@1.117 +36 -27 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace.man.in@1.103 +3 -3 + ntp-4.2.8p9-PRE + + scripts/ntptrace/ntptrace.mdoc.in@1.105 +2 -2 + ntp-4.2.8p9-PRE + + scripts/plot_summary-opts@1.66 +2 -2 + ntp-4.2.8p9-PRE + + scripts/plot_summary.1plot_summaryman@1.116 +3 -3 + ntp-4.2.8p9-PRE + + scripts/plot_summary.1plot_summarymdoc@1.116 +2 -2 + ntp-4.2.8p9-PRE + + scripts/plot_summary.html@1.119 +47 -29 + ntp-4.2.8p9-PRE + + scripts/plot_summary.man.in@1.116 +3 -3 + ntp-4.2.8p9-PRE + + scripts/plot_summary.mdoc.in@1.116 +2 -2 + ntp-4.2.8p9-PRE + + scripts/summary-opts@1.65 +2 -2 + ntp-4.2.8p9-PRE + + scripts/summary.1summaryman@1.115 +3 -3 + ntp-4.2.8p9-PRE + + scripts/summary.1summarymdoc@1.115 +2 -2 + ntp-4.2.8p9-PRE + + scripts/summary.html@1.118 +39 -27 + ntp-4.2.8p9-PRE + + scripts/summary.man.in@1.115 +3 -3 + ntp-4.2.8p9-PRE + + scripts/summary.mdoc.in@1.115 +2 -2 + ntp-4.2.8p9-PRE + + scripts/update-leap/invoke-update-leap.texi@1.16 +1 -1 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap-opts@1.16 +2 -2 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap.1update-leapman@1.16 +3 -3 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap.1update-leapmdoc@1.16 +2 -2 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap.html@1.16 +59 -35 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap.man.in@1.16 +3 -3 + ntp-4.2.8p9-PRE + + scripts/update-leap/update-leap.mdoc.in@1.16 +2 -2 + ntp-4.2.8p9-PRE + + sntp/invoke-sntp.texi@1.504 +2 -2 + ntp-4.2.8p9-PRE + + sntp/sntp-opts.c@1.523 +158 -158 + ntp-4.2.8p9-PRE + + sntp/sntp-opts.h@1.521 +3 -3 + ntp-4.2.8p9-PRE + + sntp/sntp.1sntpman@1.339 +3 -3 + ntp-4.2.8p9-PRE + + sntp/sntp.1sntpmdoc@1.339 +2 -2 + ntp-4.2.8p9-PRE + + sntp/sntp.html@1.519 +109 -85 + ntp-4.2.8p9-PRE + + sntp/sntp.man.in@1.339 +3 -3 + ntp-4.2.8p9-PRE + + sntp/sntp.mdoc.in@1.339 +2 -2 + ntp-4.2.8p9-PRE + + util/invoke-ntp-keygen.texi@1.507 +2 -2 + ntp-4.2.8p9-PRE + + util/ntp-keygen-opts.c@1.525 +172 -172 + ntp-4.2.8p9-PRE + + util/ntp-keygen-opts.h@1.523 +3 -3 + ntp-4.2.8p9-PRE + + util/ntp-keygen.1ntp-keygenman@1.335 +3 -3 + ntp-4.2.8p9-PRE + + util/ntp-keygen.1ntp-keygenmdoc@1.335 +2 -2 + ntp-4.2.8p9-PRE + + util/ntp-keygen.html@1.181 +183 -124 + ntp-4.2.8p9-PRE + + util/ntp-keygen.man.in@1.335 +3 -3 + ntp-4.2.8p9-PRE + + util/ntp-keygen.mdoc.in@1.335 +2 -2 + ntp-4.2.8p9-PRE + +ChangeSet@1.3688.4.1, 2016-10-20 19:28:06+00:00, stenn@psp-deb1.ntp.org + cleanup + + ChangeLog@1.1836.4.1 +1 -0 + cleanup + +ChangeSet@1.3686.20.1, 2016-10-20 20:13:40+02:00, perlinger@ntp.org + [Sec 3114] Broadcast Mode Replay Prevention DoS + + ChangeLog@1.1834.20.1 +4 -0 + [Sec 3114] Broadcast Mode Replay Prevention DoS + + ntpd/ntp_proto.c@1.392.2.1 +39 -6 + [Sec 3114] Broadcast Mode Replay Prevention DoS + - applied patches by Matthew Van Gundy, with some rework. + +ChangeSet@1.3686.19.1, 2016-10-20 09:21:04+02:00, perlinger@ntp.org + [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS + + ChangeLog@1.1834.19.1 +4 -0 + [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS + + + include/ntp.h@1.220.1.1 +1 -1 + [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS + + ntpd/ntp_proto.c@1.392.1.1 +12 -3 + [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS + - applied fix as suggested by Matthew Van Gundy + +ChangeSet@1.3698.1.5, 2016-10-13 01:26:54-07:00, harlan@max.pfcs.com + typo + + ChangeLog@1.1841.1.3 +1 -1 + typo + +ChangeSet@1.3698.1.4, 2016-10-13 01:24:48-07:00, harlan@max.pfcs.com + [Bug 3102] Zero origin issues + + ChangeLog@1.1841.1.2 +1 -0 + [Bug 3102] Zero origin issues + + ntpd/ntp_proto.c@1.393 +28 -3 + [Bug 3102] Zero origin issues + +ChangeSet@1.3698.1.3, 2016-10-11 01:33:28-07:00, harlan@max.pfcs.com + Distribute libssl_compat.h + + include/Makefile.am@1.55 +1 -0 + Distribute libssl_compat.h + +ChangeSet@1.3698.1.2, 2016-10-10 22:34:55-07:00, harlan@max.pfcs.com + bug 3102 tests + + tests/bug-3102/README-3102.txt@1.1 +43 -0 + BitKeeper file tests/bug-3102/README-3102.txt + + tests/bug-3102/README-3102.txt@1.0 +0 -0 + + tests/bug-3102/zeroorg.py@1.1 +24 -0 + BitKeeper file tests/bug-3102/zeroorg.py + + tests/bug-3102/zeroorg.py@1.0 +0 -0 + +ChangeSet@1.3688.3.2, 2016-10-10 01:46:05-07:00, harlan@max.pfcs.com + Fix typos in include/ntp.h + + ChangeLog@1.1836.3.1 +1 -0 + Fix typos in include/ntp.h + + include/ntp.h@1.221 +3 -4 + Fix typos in include/ntp.h + +ChangeSet@1.3699, 2016-10-04 08:36:17+02:00, perlinger@ntp.org + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + + ChangeLog@1.1842 +2 -0 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + + ports/winnt/include/ntp_iocompletionport.h@1.23 +1 -1 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + - minor type renaming + + ports/winnt/include/termios.h@1.18 +3 -0 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + - manage device context for IOCPL together with comport + + ports/winnt/libntp/termios.c@1.34 +191 -120 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + - manage device context for IOCPL together with comport + + ports/winnt/ntpd/ntp_iocompletionport.c@1.76 +91 -98 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + - manage device context for IOCPL together with comport + - integrate Danny Mayers changes for docket error handling + + ports/winnt/ntpd/ntp_iocpltypes.c@1.2 +2 -2 + [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll + - fix wrong instance initialisation + +ChangeSet@1.3698, 2016-10-01 10:52:11+00:00, stenn@psp-deb1.ntp.org + Update NEWS for 3119 + + NEWS@1.193 +17 -0 + Update NEWS for 3119 + +ChangeSet@1.3696, 2016-10-01 10:43:24+00:00, stenn@psp-deb1.ntp.org + Update NEWS for 3118 + + NEWS@1.192 +17 -0 + Update NEWS for 3118 + +ChangeSet@1.3694, 2016-10-01 10:29:06+00:00, stenn@psp-deb1.ntp.org + Update NEWS for 3110 + + NEWS@1.191 +17 -0 + Update NEWS for 3110 + +ChangeSet@1.3688.3.1, 2016-10-01 11:36:55+02:00, perlinger@ntp.org + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project files + + ports/winnt/vs2005/libntp.vcproj@1.26 +8 -0 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + + ports/winnt/vs2008/libntp/libntp.vcproj@1.57 +12 -0 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + + ports/winnt/vs2013/libntp/libntp.vcxproj@1.12 +4 -1 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + + ports/winnt/vs2013/libntp/libntp.vcxproj.filters@1.10 +14 -5 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + + ports/winnt/vs2015/libntp/libntp.vcxproj@1.2 +3 -0 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + + ports/winnt/vs2015/libntp/libntp.vcxproj.filters@1.2 +9 -0 + [Bug 3095] Compatibility with openssl 1.1 + - add new sources to project + +ChangeSet@1.3691, 2016-10-01 09:18:25+00:00, stenn@psp-deb1.ntp.org + Update NEWS for 3082 + + NEWS@1.190 +17 -0 + Update NEWS for 3082 + +ChangeSet@1.3688.1.33, 2016-10-01 08:32:28+00:00, stenn@psp-deb1.ntp.org + [Bug 3072] tweaks + + NEWS@1.189 +16 -1 + [Bug 3072] tweaks + + ntpd/ntp_peer.c@1.160 +6 -1 + [Bug 3072] tweaks + +ChangeSet@1.3688.1.31, 2016-09-29 20:53:30+00:00, perlinger@ntp.org + created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0 + fixed unit test for sntp/packetProcessing to work with or without AUTOKEY flag + + include/libssl_compat.h@1.2 +8 -1 + created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0 + + libntp/libssl_compat.c@1.2 +9 -1 + created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0 + + libntp/ssl_init.c@1.21 +0 -11 + moved 'X509_get_signature_nid()' for OpenSSL < v1.1.0 to 'libssl_compat.{c,h}' + + sntp/tests/packetProcessing.c@1.12 +0 -13 + fixed unit test to work with or without AUTOKEY flag + +ChangeSet@1.3688.1.30, 2016-09-29 12:03:17+00:00, stenn@psp-deb1.ntp.org + NEWS update + + NEWS@1.188 +2 -0 + NEWS update + +ChangeSet@1.3688.2.1, 2016-09-29 11:59:03+00:00, stenn@psp-deb1.ntp.org + X509_get_signature_nid() shim tweak + + ChangeLog@1.1836.2.1, stenn@stenn.ntp.org +1 -0 + Shim X509_get_signature_nid() if needed + + NEWS@1.187, stenn@stenn.ntp.org +1 -0 + Shim X509_get_signature_nid() if needed + + libntp/ssl_init.c@1.17.1.3 +1 -1 + X509_get_signature_nid() shim tweak + + libntp/ssl_init.c@1.17.1.2, stenn@stenn.ntp.org +12 -0 + Shim X509_get_signature_nid() if needed + +ChangeSet@1.3688.1.27, 2016-09-28 11:28:56+00:00, stenn@psp-deb1.ntp.org + NEWS + + NEWS@1.186 +1 -0 + NEWS + +ChangeSet@1.3688.1.25, 2016-09-28 11:24:36+00:00, stenn@psp-deb1.ntp.org + NEWS + + NEWS@1.185 +2 -0 + NEWS + +ChangeSet@1.3688.1.23, 2016-09-28 11:17:22+00:00, stenn@psp-deb1.ntp.org + Updated ChangeLog and NEWS + + ChangeLog@1.1836.1.19 +2 -2 + Updated ChangeLog and NEWS + + NEWS@1.184 +2 -0 + Updated ChangeLog and NEWS + +ChangeSet@1.3688.1.21, 2016-09-28 11:12:28+00:00, stenn@psp-deb1.ntp.org + NEWS + + NEWS@1.183 +2 -0 + NEWS + +ChangeSet@1.3688.1.19, 2016-09-28 11:01:29+00:00, stenn@psp-deb1.ntp.org + NEWS + + NEWS@1.182 +3 -0 + NEWS + +ChangeSet@1.3688.1.17, 2016-09-28 10:54:12+00:00, stenn@psp-deb1.ntp.org + Update ChangeLog and NEWS + + NEWS@1.181 +3 -0 + Update ChangeLog and NEWS + +ChangeSet@1.3688.1.15, 2016-09-28 10:45:21+00:00, stenn@psp-deb1.ntp.org + Update ChangeLog and NEWS + + ChangeLog@1.1836.1.14 +2 -2 + Update ChangeLog and NEWS + + NEWS@1.180 +2 -0 + Update ChangeLog and NEWS + +ChangeSet@1.3688.1.13, 2016-09-28 10:37:17+00:00, stenn@psp-deb1.ntp.org + NEWS updates + + NEWS@1.179 +4 -0 + NEWS updates + +ChangeSet@1.3688.1.11, 2016-09-28 10:25:01+00:00, stenn@psp-deb1.ntp.org + Update ChangeLog and NEWS + + ChangeLog@1.1836.1.11 +1 -1 + Update ChangeLog and NEWS + + NEWS@1.178 +1 -0 + Update ChangeLog and NEWS + +ChangeSet@1.3688.1.8, 2016-09-28 08:17:16+00:00, stenn@psp-deb1.ntp.org + Update ChangeLog and NEWS + + ChangeLog@1.1836.1.8 +2 -4 + Update ChangeLog and NEWS + + NEWS@1.177 +3 -0 + Update ChangeLog and NEWS + +ChangeSet@1.3688.1.6, 2016-09-28 08:10:35+00:00, stenn@psp-deb1.ntp.org + Update ChangeLog and NEWS + + ChangeLog@1.1836.1.6 +4 -6 + Update ChangeLog and NEWS + + NEWS@1.176 +4 -0 + Update ChangeLog and NEWS + +ChangeSet@1.3688.1.4, 2016-09-28 07:59:31+00:00, stenn@psp-deb1.ntp.org + ChangeLog and NEWS cleanup + + ChangeLog@1.1836.1.4 +2 -4 + ChangeLog and NEWS cleanup + + NEWS@1.175 +20 -0 + ChangeLog and NEWS cleanup + +ChangeSet@1.3686.9.2, 2016-09-26 08:24:48+02:00, perlinger@ntp.org + [Bug 3021] unity_fixture.c needs pragma weak + - add library implementation of empty setUp()/tearDown() + + sntp/unity/Makefile.am@1.10 +2 -0 + [Bug 3021] unity_fixture.c needs pragma weak + - add library implementation of empty setUp()/tearDown() + + sntp/unity/ulib_setup.c@1.1 +14 -0 + [Bug 3021] unity_fixture.c needs pragma weak + - add library implementation of empty setUp()/tearDown() + + sntp/unity/ulib_setup.c@1.0 +0 -0 + + sntp/unity/ulib_teardown.c@1.1 +13 -0 + [Bug 3021] unity_fixture.c needs pragma weak + - add library implementation of empty setUp()/tearDown() + + sntp/unity/ulib_teardown.c@1.0 +0 -0 + +ChangeSet@1.3686.18.1, 2016-09-25 10:58:43+02:00, perlinger@ntp.org + [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old + - make sure PPS source is alive before processing samples + - improve stability close to the 500ms phase jump by a 400ms phase gate + + ChangeLog@1.1834.18.1 +6 -0 + [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old + + ntpd/ntp_refclock.c@1.122 +50 -10 + [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old + - make sure PPS source is alive before processing samples + - improve stability close to the 500ms phase jump by a 400ms phase gate + +ChangeSet@1.3686.17.1, 2016-09-24 20:38:17+02:00, perlinger@ntp.org + [Sec 3118] Mode 6 information disclosure and DDoS vector + + ChangeLog@1.1834.17.1 +4 -0 + [Sec 3118] Mode 6 information disclosure and DDoS vector + + ntpd/ntp_control.c@1.209.5.1 +3 -3 + [Sec 3118] Mode 6 information disclosure and DDoS vector + - TRAP config via mode 6 packet requires AUTH now + - writing the clock status should require AUTH, too. + +ChangeSet@1.3686.16.1, 2016-09-23 20:00:55+02:00, perlinger@ntp.org + [Sec 3119] Trap crash + + ChangeLog@1.1834.16.1 +3 -0 + [Sec 3119] Trap crash + + ntpd/ntp_control.c@1.209.4.1 +19 -4 + [Sec 3119] Trap crash + - bail out if we hit a Peer Event without a peer. + +ChangeSet@1.3686.15.1, 2016-09-22 20:42:39+02:00, perlinger@ntp.org + [Bug 3116] unit tests for NTP time stamp expansion + + ChangeLog@1.1834.15.1 +3 -0 + [Bug 3116] unit tests for NTP time stamp expansion + + libntp/ntp_calendar.c@1.18 +56 -29 + [Bug 3116] unit tests for NTP time stamp expansion + - added back unsigned spec to constant to avoid confusion + and explained why there was no problem at all + + tests/libntp/calendar.c@1.13 +127 -0 + [Bug 3116] unit tests for NTP time stamp expansion + - added test cases for NTP time stamp expansion + + tests/libntp/run-calendar.c@1.12 +20 -15 + [Bug 3116] unit tests for NTP time stamp expansion + - update generated file + +ChangeSet@1.3688.1.2, 2016-09-16 08:26:08+00:00, stenn@psp-deb1.ntp.org + [Bug 3053] ntp_loopfilter.c frequency calc precedence error. Sarah White. + + ChangeLog@1.1836.1.2 +1 -0 + [Bug 3053] ntp_loopfilter.c frequency calc precedence error. Sarah White. + + ntpd/ntp_loopfilter.c@1.189 +6 -5 + [Bug 3053] ntp_loopfilter.c frequency calc precedence error. Sarah White. + +ChangeSet@1.3688.1.1, 2016-09-16 08:21:45+00:00, stenn@psp-deb1.ntp.org + cleanup + + ChangeLog@1.1836.1.1 +1 -0 + cleanup + +ChangeSet@1.3686.14.1, 2016-09-15 19:29:17+02:00, perlinger@ntp.org + [Bug 2959] refclock_jupiter: gps week correction + + ChangeLog@1.1834.14.1 +5 -0 + [Bug 2959] refclock_jupiter: gps week correction + + ntpd/refclock_jupiter.c@1.30 +66 -1 + [Bug 2959] refclock_jupiter: gps week correction + - fixed GPS week expansion to work based on build date. Special thanks to Craig Leres + for initial patch and testing. + +ChangeSet@1.3686.13.1, 2016-09-13 07:26:06+02:00, perlinger@ntp.org + [Bug 3072] Attack on interface selection + + ChangeLog@1.1834.13.1 +6 -1 + [Bug 3072] Attack on interface selection + + ntpd/ntp_peer.c@1.159 +61 -50 + [Bug 3072] Attack on interface selection + - implemented Miroslav Lichvars <mlichvar@redhat.com> suggestion to skip interface updates + based on incoming packets + +ChangeSet@1.3686.12.1, 2016-09-10 17:22:27+02:00, perlinger@ntp.org + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> to source + - added shim layer for new SSL API calls + + ChangeLog@1.1834.12.1 +5 -0 + [Bug 3095] Compatibility with openssl 1.1 + + include/libssl_compat.h@1.1 +93 -0 + [Bug 3095] Compatibility with openssl 1.1 + shim layer for OpenSSL v1.1 API compatibility + + include/libssl_compat.h@1.0 +0 -0 + + libntp/Makefile.am@1.78.1.1 +1 -0 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + libntp/a_md5encrypt.c@1.36.1.1 +26 -28 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + libntp/libssl_compat.c@1.1 +327 -0 + [Bug 3095] Compatibility with openssl 1.1 + shim layer for OpenSSL v1.1 API compatibility + + libntp/libssl_compat.c@1.0 +0 -0 + + libntp/ssl_init.c@1.17.1.1 +7 -3 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpd/ntp_control.c@1.209.3.1 +13 -10 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpd/ntp_crypto.c@1.186.1.1 +207 -138 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpq/ntpq.c@1.170.1.1 +6 -3 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + sntp/crypto.c@1.21.1.1 +11 -7 + [Bug 3095] Compatibility with openssl 1.1 + - switched to new OpenSSL API + + util/ntp-keygen.c@1.107.1.1 +217 -150 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + - replaced use of deprecated functions + +ChangeSet@1.3686.11.1, 2016-09-09 18:34:03+02:00, jnperlin@nemesis.localnet + [Sec 3110] Windows: ntpd DoS by oversized UDP packet + + BitKeeper/etc/ignore@1.91.2.1 +2 -0 + add more studio specific garbage + + ChangeLog@1.1834.11.1 +4 -0 + [Sec 3110] Windows: ntpd DoS by oversized UDP packet + + ports/winnt/include/ntp_iocpltypes.h@1.2 +1 -0 + [Sec 3110] Windows: ntpd DoS by oversized UDP packet + - add 'ioFlags' to context; should be persistent during overlapped IO + + ports/winnt/ntpd/ntp_iocompletionport.c@1.73.1.1 +48 -9 + [Sec 3110] Windows: ntpd DoS by oversized UDP packet + - fixed error handling for truncated UDP packets + - sidekick: fixed handling of spurious ERROR_HOST_UNREACHABLE errors + - sidekick: fixed error message formatting for WaitForMultipleObjects() errors + + ports/winnt/vs2015/ntp.sln@1.2 +3 -3 + [Sec 3110] Windows: ntpd DoS by oversized UDP packet + - sidekick: set version of solution to match VS2015 + +ChangeSet@1.3686.10.1, 2016-09-04 21:10:56+02:00, perlinger@ntp.org + [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd' + + ChangeLog@1.1834.10.1 +4 -0 + [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd' + + tests/ntpd/Makefile.am@1.29 +0 -1 + [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd' + - removed source file that is included from t-ntp_signed.c + +ChangeSet@1.3686.9.1, 2016-09-04 19:19:34+02:00, perlinger@ntp.org + [Bug 3021] unity_fixture.c needs pragma weak + + ChangeLog@1.1834.9.1 +4 -0 + [Bug 3021] unity_fixture.c needs pragma weak + + sntp/unity/unity_fixture.c@1.2 +0 -4 + [Bug 3021] unity_fixture.c needs pragma weak + - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()' + (no need to declare & implement locally unreferenced functions) + +ChangeSet@1.3686.8.1, 2016-09-04 17:37:34+02:00, perlinger@ntp.org + [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message + + ChangeLog@1.1834.8.1 +5 -0 + [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message + + libntp/work_fork.c@1.17 +13 -5 + [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message + - applied patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no>. + Reinhard fought the cause, Harvard the symptom -- having both should put an end to this issue. + +ChangeSet@1.3686.7.2, 2016-09-04 11:20:00+02:00, perlinger@ntp.org + [Bug 3059] Potential buffer overrun from oversized hash + + ChangeLog@1.1834.7.2 +2 -0 + [Bug 3059] Potential buffer overrun from oversized hash + + libntp/a_md5encrypt.c@1.38 +7 -1 + [Bug 3059] Potential buffer overrun from oversized hash + - applied patch by Brian Utterback <brian.utterback@oracle.com> + +ChangeSet@1.3686.7.1, 2016-09-04 08:48:03+02:00, perlinger@ntp.org + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> to source + - added shim layer for SSL API calls with issues (both directions) + + ChangeLog@1.1834.7.1 +5 -0 + [Bug 3095] Compatibility with openssl 1.1 + + include/libssl_compat.h@1.1 +127 -0 + [Bug 3095] Compatibility with openssl 1.1 + shim layer for OpenSSL v1.1 API compatibility + + include/libssl_compat.h@1.0 +0 -0 + + libntp/Makefile.am@1.79 +1 -0 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + libntp/a_md5encrypt.c@1.37 +26 -28 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + - added shim layer for SSL API calls with issues (both directions) + + libntp/libssl_compat.c@1.1 +452 -0 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> to source + - added shim layer for SSL API calls with issues (both directions) + + libntp/libssl_compat.c@1.0 +0 -0 + + libntp/ssl_init.c@1.18 +7 -3 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpd/ntp_control.c@1.209.2.1 +13 -10 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpd/ntp_crypto.c@1.187 +207 -138 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + ntpq/ntpq.c@1.171 +6 -3 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + + sntp/crypto.c@1.22 +11 -7 + [Bug 3095] Compatibility with openssl 1.1 + - switched to new OpenSSL API + + util/ntp-keygen.c@1.108 +147 -131 + [Bug 3095] Compatibility with openssl 1.1 + - applied patches by Kurt Roeckx <kurt@roeckx.be> + +ChangeSet@1.3686.6.1, 2016-08-21 09:29:00+02:00, perlinger@ntp.org + [Bug 3100] ntpq can't retrieve daemon_version + (extended sysvar lookup bug, introduced with fix for bug 3008) + + ChangeLog@1.1834.6.1 +4 -0 + [Bug 3100] ntpq can't retrieve daemon_version + + ntpd/ntp_control.c@1.209.1.1 +10 -4 + [Bug 3100] ntpq can't retrieve daemon_version + - extended sysvar lookup broken with fix for bug3008: extended sysvar text is "<name>=<val>", + name compare has to match if the name match stops at NUL or '='. Bug introduced with bug 3008 fix. + +ChangeSet@1.3686.5.1, 2016-08-01 09:09:19+02:00, perlinger@ntp.org + [Bug 3068] Linker warnings when building on Solaris. + - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com> + + ChangeLog@1.1834.5.1 +2 -0 + [Bug 3068] Linker warnings when building on Solaris. + + libntp/audio.c@1.37 +3 -3 + [Bug 3068] Linker warnings when building on Solaris. + - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com> + +ChangeSet@1.3686.4.1, 2016-07-26 08:56:44+02:00, perlinger@ntp.org + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + + ChangeLog@1.1834.4.1 +1 -0 + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + + sntp/tests/packetProcessing.c@1.9.1.1 +107 -89 + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + - make sure the tests compile when configured using --without-crypto --disable-autokey + - ensure the there is no buffer overrun when AUTOKEY is disabled + + sntp/tests/run-packetProcessing.c@1.11 +18 -18 + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + - automatic testrunner update + + tests/libntp/a_md5encrypt.c@1.15 +1 -3 + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + - side kick: avoid extra memset by using 'emalloc_zero()' + + tests/libntp/sfptostr.c@1.6 +3 -3 + [Bug 2998] sntp/tests/packetProcessing.c broken without openssl + - side kick: avoid warnings about left shift of negative integer + +ChangeSet@1.3686.3.1, 2016-07-23 09:20:53+02:00, perlinger@ntp.org + [Bug 3066] NMEA clock ignores pps. + (side kick: ignore msbuild 10 user settings file) + + BitKeeper/etc/ignore@1.91.1.1 +1 -0 + ignore msbuild 10 user setting + + ChangeLog@1.1834.3.1 +4 -0 + [Bug 3066] NMEA clock ignores pps. (actually, the PPS HACK stopped to work for all serial devices) + + ports/winnt/ntpd/ntp_iocompletionport.c@1.74 +20 -2 + [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org + - PPS-HACK works again; now controllable (explicitely) by the env var PPSAPI_HACK=true/yes/1 (anything else is NO) + - if PPSAPI_HACK is not set, a non-empty PPSAPI_DLLS list disables the PPS hack + +ChangeSet@1.3686.2.2, 2016-07-06 01:53:32-07:00, harlan@max.pfcs.com + [Bug 3084] update-leap mis-parses the leapfile name + + ChangeLog@1.1834.2.2 +1 -0 + [Bug 3084] update-leap mis-parses the leapfile name + + scripts/update-leap/update-leap.in@1.3 +5 -2 + [Bug 3084] update-leap mis-parses the leapfile name + +ChangeSet@1.3686.2.1, 2016-07-06 01:47:02-07:00, harlan@max.pfcs.com + [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY + + ChangeLog@1.1834.2.1 +4 -0 + [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY + + sntp/tests/packetProcessing.c@1.10 +5 -3 + [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY + +ChangeSet@1.3686.1.1, 2016-07-05 23:15:20+02:00, perlinger@ntp.org + [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list(). + [Sec 3082] (title too long -- Variation of [Sec 3075].) + - more hardening to read_mru_list(). + + ChangeLog@1.1834.1.1 +7 -1 + [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list() + [Sec 3082] (title too long -- Variation of [Sec 3075].) + - more hardening to read_mru_list(). + + ntpd/ntp_control.c@1.210 +57 -33 + [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list(). + [Sec 3082] (title too long -- Variation of [Sec 3075].) + - more hardening to read_mru_list(). + +ChangeSet@1.3688, 2016-06-14 05:57:34+00:00, stenn@psp-deb1.ntp.org + bk ignore file cleanup + + BitKeeper/etc/ignore@1.92 +17 -13 + bk ignore file cleanup + + ChangeLog@1.1836 +1 -0 + bk ignore file cleanup + +ChangeSet@1.3687, 2016-06-14 05:56:12+00:00, stenn@psp-deb1.ntp.org + git author attribution cleanup + + BitKeeper/etc/Authors/a115350.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/a115350.txt + + BitKeeper/etc/Authors/a115350.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/abe.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/abe.txt + + BitKeeper/etc/Authors/abe.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/amidamaru.txt@1.1 +2 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/amidamaru.txt + + BitKeeper/etc/Authors/amidamaru.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/bkorb.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/bkorb.txt + + BitKeeper/etc/Authors/bkorb.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/blk.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/blk.txt + + BitKeeper/etc/Authors/blk.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/blu.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/blu.txt + + BitKeeper/etc/Authors/blu.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/bruckman.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/bruckman.txt + + BitKeeper/etc/Authors/bruckman.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/burnicki.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/burnicki.txt + + BitKeeper/etc/Authors/burnicki.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/claas.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/claas.txt + + BitKeeper/etc/Authors/claas.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/clemens.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/clemens.txt + + BitKeeper/etc/Authors/clemens.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/cov-build.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/cov-build.txt + + BitKeeper/etc/Authors/cov-build.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/cprice.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/cprice.txt + + BitKeeper/etc/Authors/cprice.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/davehart.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/davehart.txt + + BitKeeper/etc/Authors/davehart.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/dietrich.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/dietrich.txt + + BitKeeper/etc/Authors/dietrich.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/dunlop.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/dunlop.txt + + BitKeeper/etc/Authors/dunlop.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/fernandoph.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/fernandoph.txt + + BitKeeper/etc/Authors/fernandoph.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/fredb.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/fredb.txt + + BitKeeper/etc/Authors/fredb.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/gerstung.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gerstung.txt + + BitKeeper/etc/Authors/gerstung.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/ginsbach.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/ginsbach.txt + + BitKeeper/etc/Authors/ginsbach.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/gnu.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gnu.txt + + BitKeeper/etc/Authors/gnu.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/gopal.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gopal.txt + + BitKeeper/etc/Authors/gopal.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/gunturu.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gunturu.txt + + BitKeeper/etc/Authors/gunturu.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/harlan.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/harlan.txt + + BitKeeper/etc/Authors/harlan.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/harlanst.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/harlanst.txt + + BitKeeper/etc/Authors/harlanst.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/hart.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hart.txt + + BitKeeper/etc/Authors/hart.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/hilbrecht.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hilbrecht.txt + + BitKeeper/etc/Authors/hilbrecht.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/hstenn.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hstenn.txt + + BitKeeper/etc/Authors/hstenn.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/jhay.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/jhay.txt + + BitKeeper/etc/Authors/jhay.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/jnperlin.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/jnperlin.txt + + BitKeeper/etc/Authors/jnperlin.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/kamboj.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kamboj.txt + + BitKeeper/etc/Authors/kamboj.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/kardel.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kardel.txt + + BitKeeper/etc/Authors/kardel.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/karlsson.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/karlsson.txt + + BitKeeper/etc/Authors/karlsson.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/kuehn.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kuehn.txt + + BitKeeper/etc/Authors/kuehn.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/linus.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/linus.txt + + BitKeeper/etc/Authors/linus.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/loki.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/loki.txt + + BitKeeper/etc/Authors/loki.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/martin.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/martin.txt + + BitKeeper/etc/Authors/martin.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/matthias.andree.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/matthias.andree.txt + + BitKeeper/etc/Authors/matthias.andree.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/mayer.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/mayer.txt + + BitKeeper/etc/Authors/mayer.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/mbrett.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/mbrett.txt + + BitKeeper/etc/Authors/mbrett.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/murray.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/murray.txt + + BitKeeper/etc/Authors/murray.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/neal.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/neal.txt + + BitKeeper/etc/Authors/neal.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/paul.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/paul.txt + + BitKeeper/etc/Authors/paul.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/peda.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/peda.txt + + BitKeeper/etc/Authors/peda.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/perlinger.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/perlinger.txt + + BitKeeper/etc/Authors/perlinger.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/phk.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/phk.txt + + BitKeeper/etc/Authors/phk.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/rayvt.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/rayvt.txt + + BitKeeper/etc/Authors/rayvt.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/rick.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/rick.txt + + BitKeeper/etc/Authors/rick.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/ro.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/ro.txt + + BitKeeper/etc/Authors/ro.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/root.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/root.txt + + BitKeeper/etc/Authors/root.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/skamboj.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/skamboj.txt + + BitKeeper/etc/Authors/skamboj.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/stenn.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/stenn.txt + + BitKeeper/etc/Authors/stenn.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/tflendrich.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/tflendrich.txt + + BitKeeper/etc/Authors/tflendrich.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/tomek.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/tomek.txt + + BitKeeper/etc/Authors/tomek.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/utterback.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/utterback.txt + + BitKeeper/etc/Authors/utterback.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/venu.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/venu.txt + + BitKeeper/etc/Authors/venu.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/viperus.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/viperus.txt + + BitKeeper/etc/Authors/viperus.txt@1.0 +0 -0 + + BitKeeper/etc/Authors/wink.txt@1.1 +1 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/wink.txt + + BitKeeper/etc/Authors/wink.txt@1.0 +0 -0 + + BitKeeper/etc/authors.txt@1.1 +58 -0 + BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/authors.txt + + BitKeeper/etc/authors.txt@1.0 +0 -0 + + ChangeLog@1.1835 +3 -0 + git author attribution cleanup + + scripts/build/genAuthors.in@1.2 +7 -5 + git author attribution cleanup + ChangeSet@1.3686, 2016-06-02 07:40:06-04:00, stenn@deacon.udel.edu NTP_4_2_8P8 TAG: NTP_4_2_8P8 @@ -386,13 +2249,13 @@ ChangeSet@1.3680, 2016-05-24 12:05:06+00:00, stenn@psp-deb1.ntp.org ntpd/ntp_proto.c@1.391 +39 -24 [Sec 3044] Spoofed server packets are partially processed. HStenn. -ChangeSet@1.3669.3.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com +ChangeSet@1.3669.4.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com Make sure we have an "author" file for git imports. HStenn. - ChangeLog@1.1820.3.3 +1 -0 + ChangeLog@1.1820.4.3 +1 -0 Update the problem tests for MacOS for sntp. HStenn. - ChangeLog@1.1820.3.2 +1 -0 + ChangeLog@1.1820.4.2 +1 -0 Make sure we have an "author" file for git imports. HStenn. configure.ac@1.606 +1 -0 @@ -420,10 +2283,10 @@ ChangeSet@1.3669.3.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com sntp/tests/Makefile.am@1.67 +8 -2 Update the problem tests for MacOS for sntp. HStenn. -ChangeSet@1.3669.3.1, 2016-05-24 02:25:46-07:00, harlan@hms-mbp11.pfcs.com +ChangeSet@1.3669.4.1, 2016-05-24 02:25:46-07:00, harlan@hms-mbp11.pfcs.com [Sec 3042] Broadcast Interleave. HStenn. - ChangeLog@1.1820.3.1 +4 -0 + ChangeLog@1.1820.4.1 +4 -0 [Sec 3042] Broadcast Interleave. HStenn. ntpd/ntp_proto.c@1.386.1.1 +69 -14 @@ -506,6 +2369,13 @@ ChangeSet@1.3671.1.2, 2016-05-17 04:25:50+00:00, stenn@psp-deb1.ntp.org ChangeLog@1.1822.1.2 +1 -0 [Bug 3052] Add a .gitignore file. Edmund Wong. +ChangeSet@1.3669.3.2, 2016-05-10 12:11:43+00:00, abe@psp-deb1.ntp.org + refclock_jjy.c: + [Bug 3047] Correct typo in the comment line. + + ntpd/refclock_jjy.c@1.32 +1 -1 + [Bug 3047] Correct typo in the comment line. + ChangeSet@1.3675, 2016-05-08 11:59:28+02:00, perlinger@ntp.org [Sec 3043] Autokey association reset. perlinger@ntp.org (fixes [Sec 3044] and [Sec 3045], too) @@ -517,6 +2387,22 @@ ChangeSet@1.3675, 2016-05-08 11:59:28+02:00, perlinger@ntp.org [Sec 3043] Autokey association reset. perlinger@ntp.org (fixes [Sec 3044] and [Sec 3045], too) +ChangeSet@1.3669.3.1, 2016-05-08 07:34:11+00:00, abe@psp-deb1.ntp.org + driver40.html, refclock_jjy.c, driver40-ja.html, ChangeLog: + [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + + ChangeLog@1.1820.3.1 +2 -0 + [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + + html/drivers/driver40-ja.html@1.5 +2 -2 + [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + + html/drivers/driver40.html@1.20 +2 -2 + [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + + ntpd/refclock_jjy.c@1.31 +7 -3 + [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + ChangeSet@1.3674, 2016-05-06 11:05:44+00:00, stenn@psp-deb1.ntp.org [Sec 3046] CRYPTO_NAK crash diff --git a/contrib/ntp/NEWS b/contrib/ntp/NEWS index fd2551c..6445ed4 100644 --- a/contrib/ntp/NEWS +++ b/contrib/ntp/NEWS @@ -1,4 +1,311 @@ --- +NTP 4.2.8p9 (Harlan Stenn <stenn@ntp.org>, 2016/11/21) + +Focus: Security, Bug fixes, enhancements. + +Severity: HIGH + +In addition to bug fixes and enhancements, this release fixes the +following 1 high- (Windows only), 2 medium-, 2 medium-/low, and +5 low-severity vulnerabilities, and provides 28 other non-security +fixes and improvements: + +* Trap crash + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3119 / CVE-2016-9311 / VU#633847 + Affects: ntp-4.0.90 (21 July 1999), possibly earlier, up to but not + including 4.2.8p9, and ntp-4.3.0 up to but not including ntp-4.3.94. + CVSS2: MED 4.9 (AV:N/AC:H/Au:N/C:N/I:N/A:C) + CVSS3: MED 4.4 CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H + Summary: + ntpd does not enable trap service by default. If trap service + has been explicitly enabled, an attacker can send a specially + crafted packet to cause a null pointer dereference that will + crash ntpd, resulting in a denial of service. + Mitigation: + Implement BCP-38. + Use "restrict default noquery ..." in your ntp.conf file. Only + allow mode 6 queries from trusted networks and hosts. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Matthew Van Gundy of Cisco. + +* Mode 6 information disclosure and DDoS vector + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3118 / CVE-2016-9310 / VU#633847 + Affects: ntp-4.0.90 (21 July 1999), possibly earlier, up to but not + including 4.2.8p9, and ntp-4.3.0 up to but not including ntp-4.3.94. + CVSS2: MED 6.4 (AV:A/AC:L/Au:N/C:N/I:N/A:P) + CVSS3: MED 6.5 CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: + An exploitable configuration modification vulnerability exists + in the control mode (mode 6) functionality of ntpd. If, against + long-standing BCP recommendations, "restrict default noquery ..." + is not specified, a specially crafted control mode packet can set + ntpd traps, providing information disclosure and DDoS + amplification, and unset ntpd traps, disabling legitimate + monitoring. A remote, unauthenticated, network attacker can + trigger this vulnerability. + Mitigation: + Implement BCP-38. + Use "restrict default noquery ..." in your ntp.conf file. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Matthew Van Gundy of Cisco. + +* Broadcast Mode Replay Prevention DoS + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3114 / CVE-2016-7427 / VU#633847 + Affects: ntp-4.2.8p6, up to but not including ntp-4.2.8p9, and + ntp-4.3.90 up to, but not including ntp-4.3.94. + CVSS2: LOW 3.3 (AV:A/AC:L/Au:N/C:N/I:N/A:P) + CVSS3: MED 4.3 CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: + The broadcast mode of NTP is expected to only be used in a + trusted network. If the broadcast network is accessible to an + attacker, a potentially exploitable denial of service + vulnerability in ntpd's broadcast mode replay prevention + functionality can be abused. An attacker with access to the NTP + broadcast domain can periodically inject specially crafted + broadcast mode NTP packets into the broadcast domain which, + while being logged by ntpd, can cause ntpd to reject broadcast + mode packets from legitimate NTP broadcast servers. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Matthew Van Gundy of Cisco. + +* Broadcast Mode Poll Interval Enforcement DoS + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3113 / CVE-2016-7428 / VU#633847 + Affects: ntp-4.2.8p6, up to but not including ntp-4.2.8p9, and + ntp-4.3.90 up to, but not including ntp-4.3.94 + CVSS2: LOW 3.3 (AV:A/AC:L/Au:N/C:N/I:N/A:P) + CVSS3: MED 4.3 CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: + The broadcast mode of NTP is expected to only be used in a + trusted network. If the broadcast network is accessible to an + attacker, a potentially exploitable denial of service + vulnerability in ntpd's broadcast mode poll interval enforcement + functionality can be abused. To limit abuse, ntpd restricts the + rate at which each broadcast association will process incoming + packets. ntpd will reject broadcast mode packets that arrive + before the poll interval specified in the preceding broadcast + packet expires. An attacker with access to the NTP broadcast + domain can send specially crafted broadcast mode NTP packets to + the broadcast domain which, while being logged by ntpd, will + cause ntpd to reject broadcast mode packets from legitimate NTP + broadcast servers. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Matthew Van Gundy of Cisco. + +* Windows: ntpd DoS by oversized UDP packet + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3110 / CVE-2016-9312 / VU#633847 + Affects Windows only: ntp-4.?.?, up to but not including ntp-4.2.8p9, + and ntp-4.3.0 up to, but not including ntp-4.3.94. + CVSS2: HIGH 7.8 (AV:N/AC:L/Au:N/C:N/I:N/A:C) + CVSS3: HIGH 7.5 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + Summary: + If a vulnerable instance of ntpd on Windows receives a crafted + malicious packet that is "too big", ntpd will stop working. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Robert Pajak of ABB. + +* 0rigin (zero origin) issues + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3102 / CVE-2016-7431 / VU#633847 + Affects: ntp-4.2.8p8, and ntp-4.3.93. + CVSS2: MED 5.0 (AV:N/AC:L/Au:N/C:N/I:P/A:N) + CVSS3: MED 5.3 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N + Summary: + Zero Origin timestamp problems were fixed by Bug 2945 in + ntp-4.2.8p6. However, subsequent timestamp validation checks + introduced a regression in the handling of some Zero origin + timestamp checks. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Sharon Goldberg and Aanchal + Malhotra of Boston University. + +* read_mru_list() does inadequate incoming packet checks + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3082 / CVE-2016-7434 / VU#633847 + Affects: ntp-4.2.7p22, up to but not including ntp-4.2.8p9, and + ntp-4.3.0 up to, but not including ntp-4.3.94. + CVSS2: LOW 3.8 (AV:L/AC:H/Au:S/C:N/I:N/A:C) + CVSS3: LOW 3.8 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H + Summary: + If ntpd is configured to allow mrulist query requests from a + server that sends a crafted malicious packet, ntpd will crash + on receipt of that crafted malicious mrulist query packet. + Mitigation: + Only allow mrulist query packets from trusted hosts. + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Magnus Stubman. + +* Attack on interface selection + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3072 / CVE-2016-7429 / VU#633847 + Affects: ntp-4.2.7p385, up to but not including ntp-4.2.8p9, and + ntp-4.3.0 up to, but not including ntp-4.3.94 + CVSS2: LOW 1.0 (AV:L/AC:H/Au:S/C:N/I:N/A:P) + CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L + Summary: + When ntpd receives a server response on a socket that corresponds + to a different interface than was used for the request, the peer + structure is updated to use the interface for new requests. If + ntpd is running on a host with multiple interfaces in separate + networks and the operating system doesn't check source address in + received packets (e.g. rp_filter on Linux is set to 0), an + attacker that knows the address of the source can send a packet + with spoofed source address which will cause ntpd to select wrong + interface for the source and prevent it from sending new requests + until the list of interfaces is refreshed, which happens on + routing changes or every 5 minutes by default. If the attack is + repeated often enough (once per second), ntpd will not be able to + synchronize with the source. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + If you are going to configure your OS to disable source address + checks, also configure your firewall configuration to control + what interfaces can receive packets from what networks. + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Miroslav Lichvar of Red Hat. + +* Client rate limiting and server responses + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3071 / CVE-2016-7426 / VU#633847 + Affects: ntp-4.2.5p203, up to but not including ntp-4.2.8p9, and + ntp-4.3.0 up to, but not including ntp-4.3.94 + CVSS2: LOW 1.0 (AV:L/AC:H/Au:S/C:N/I:N/A:P) + CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L + Summary: + When ntpd is configured with rate limiting for all associations + (restrict default limited in ntp.conf), the limits are applied + also to responses received from its configured sources. An + attacker who knows the sources (e.g., from an IPv4 refid in + server response) and knows the system is (mis)configured in this + way can periodically send packets with spoofed source address to + keep the rate limiting activated and prevent ntpd from accepting + valid responses from its sources. + + While this blanket rate limiting can be useful to prevent + brute-force attacks on the origin timestamp, it allows this DoS + attack. Similarly, it allows the attacker to prevent mobilization + of ephemeral associations. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Miroslav Lichvar of Red Hat. + +* Fix for bug 2085 broke initial sync calculations + Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016 + References: Sec 3067 / CVE-2016-7433 / VU#633847 + Affects: ntp-4.2.7p385, up to but not including ntp-4.2.8p9, and + ntp-4.3.0 up to, but not including ntp-4.3.94. But the + root-distance calculation in general is incorrect in all versions + of ntp-4 until this release. + CVSS2: LOW 1.2 (AV:L/AC:H/Au:N/C:N/I:N/A:P) + CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:L + Summary: + Bug 2085 described a condition where the root delay was included + twice, causing the jitter value to be higher than expected. Due + to a misinterpretation of a small-print variable in The Book, the + fix for this problem was incorrect, resulting in a root distance + that did not include the peer dispersion. The calculations and + formulae have been reviewed and reconciled, and the code has been + updated accordingly. + Mitigation: + Upgrade to 4.2.8p9, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered independently by Brian Utterback of + Oracle, and Sharon Goldberg and Aanchal Malhotra of Boston University. + +Other fixes: + +* [Bug 3142] bug in netmask prefix length detection <perlinger@ntp.org> +* [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org +* [Bug 3129] Unknown hosts can put resolver thread into a hard loop + - moved retry decision where it belongs. <perlinger@ntp.org> +* [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order + using the loopback-ppsapi-provider.dll <perlinger@ntp.org> +* [Bug 3116] unit tests for NTP time stamp expansion. <perlinger@ntp.org> +* [Bug 3100] ntpq can't retrieve daemon_version <perlinger@ntp.org> + - fixed extended sysvar lookup (bug introduced with bug 3008 fix) +* [Bug 3095] Compatibility with openssl 1.1 <perlinger@ntp.org> + - applied patches by Kurt Roeckx <kurt@roeckx.be> to source + - added shim layer for SSL API calls with issues (both directions) +* [Bug 3089] Serial Parser does not work anymore for hopfser like device + - simplified / refactored hex-decoding in driver. <perlinger@ntp.org> +* [Bug 3084] update-leap mis-parses the leapfile name. HStenn. +* [Bug 3068] Linker warnings when building on Solaris. perlinger@ntp.org + - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com> +* [Bug 3067] Root distance calculation needs improvement. HStenn +* [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org + - PPS-HACK works again. +* [Bug 3059] Potential buffer overrun from oversized hash <perlinger@ntp.org> + - applied patch by Brian Utterback <brian.utterback@oracle.com> +* [Bug 3053] ntp_loopfilter.c frequency calc precedence error. Sarah White. +* [Bug 3050] Fix for bug #2960 causes [...] spurious error message. + <perlinger@ntp.org> + - patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no> +* [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org + - Patch provided by Kuramatsu. +* [Bug 3021] unity_fixture.c needs pragma weak <perlinger@ntp.org> + - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()' +* [Bug 3019] Windows: ERROR_HOST_UNREACHABLE block packet processing. DMayer +* [Bug 2998] sntp/tests/packetProcessing.c broken without openssl. JPerlinger +* [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY. HStenn. +* [Bug 2959] refclock_jupiter: gps week correction <perlinger@ntp.org> + - fixed GPS week expansion to work based on build date. Special thanks + to Craig Leres for initial patch and testing. +* [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd' + - fixed Makefile.am <perlinger@ntp.org> +* [Bug 2689] ATOM driver processes last PPS pulse at startup, + even if it is very old <perlinger@ntp.org> + - make sure PPS source is alive before processing samples + - improve stability close to the 500ms phase jump (phase gate) +* Fix typos in include/ntp.h. +* Shim X509_get_signature_nid() if needed +* git author attribution cleanup +* bk ignore file cleanup +* remove locks in Windows IO, use rpc-like thread synchronisation instead + +--- NTP 4.2.8p8 (Harlan Stenn <stenn@ntp.org>, 2016/06/02) Focus: Security, Bug fixes, enhancements. diff --git a/contrib/ntp/configure b/contrib/ntp/configure index c38e7eb..91131cd 100755 --- a/contrib/ntp/configure +++ b/contrib/ntp/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ntp 4.2.8p8. +# Generated by GNU Autoconf 2.69 for ntp 4.2.8p9. # # Report bugs to <http://bugs.ntp.org./>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ntp' PACKAGE_TARNAME='ntp' -PACKAGE_VERSION='4.2.8p8' -PACKAGE_STRING='ntp 4.2.8p8' +PACKAGE_VERSION='4.2.8p9' +PACKAGE_STRING='ntp 4.2.8p9' PACKAGE_BUGREPORT='http://bugs.ntp.org./' PACKAGE_URL='http://www.ntp.org./' @@ -1618,7 +1618,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ntp 4.2.8p8 to adapt to many kinds of systems. +\`configure' configures ntp 4.2.8p9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1688,7 +1688,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ntp 4.2.8p8:";; + short | recursive ) echo "Configuration of ntp 4.2.8p9:";; esac cat <<\_ACEOF @@ -1924,7 +1924,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ntp configure 4.2.8p8 +ntp configure 4.2.8p9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2754,7 +2754,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ntp $as_me 4.2.8p8, which was +It was created by ntp $as_me 4.2.8p9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3755,7 +3755,7 @@ fi # Define the identity of the package. PACKAGE='ntp' - VERSION='4.2.8p8' + VERSION='4.2.8p9' cat >>confdefs.h <<_ACEOF @@ -38003,7 +38003,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ntp $as_me 4.2.8p8, which was +This file was extended by ntp $as_me 4.2.8p9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -38070,7 +38070,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ntp config.status 4.2.8p8 +ntp config.status 4.2.8p9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/contrib/ntp/html/drivers/driver40.html b/contrib/ntp/html/drivers/driver40.html index 356429e..3b5f00f 100644 --- a/contrib/ntp/html/drivers/driver40.html +++ b/contrib/ntp/html/drivers/driver40.html @@ -16,7 +16,7 @@ <body> <h3>JJY Receivers</h3> <p>Last update: - <!-- #BeginDate format:En2m -->15-May-2015 00:00<!-- #EndDate --> + <!-- #BeginDate format:En2m -->08-May-2016 00:00<!-- #EndDate --> UTC <a href="driver40.html">ENGLISH</a> <a href="driver40-ja.html">JAPANESE</a></p> <hr> <h4>Synopsis</h4> @@ -136,7 +136,7 @@ <tr> <td><code>{ENQ}1J{ETX}</code></td> <td> --> </td> - <td><code>{STX}JYYMMDD HHMMSSS{ETX}</code></td> + <td><code>{STX}JYYMMDDWHHMMSSS{ETX}</code></td> </tr> </table> <br> diff --git a/contrib/ntp/html/miscopt.html b/contrib/ntp/html/miscopt.html index bf4cfbf..6e03963 100644 --- a/contrib/ntp/html/miscopt.html +++ b/contrib/ntp/html/miscopt.html @@ -11,7 +11,7 @@ <img src="pic/boom3.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a> <p>We have three, now looking for more.</p> <p>Last update: - <!-- #BeginDate format:En2m -->17-May-2016 06:26<!-- #EndDate --> + <!-- #BeginDate format:En2m -->9-Nov-2016 12:26<!-- #EndDate --> UTC</p> <br clear="left"> <h4>Related Links</h4> @@ -145,10 +145,12 @@ <dd>Specifies the stepout threshold in seconds. The default without this command is 300 s. Since this option also affects the training and startup intervals, it should not be set less than the default. Further details are on the <a href="clock.html">Clock State Machine</a> page.</dd> </dl> </dd> - <dt id="tos"><tt>tos [beacon <i>beacon</i> | ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | maxclock <i>maxclock </i>| maxdist <i>maxdist</i> | minclock <i>minclock</i> | mindist <i>mindist </i>| minsane <i>minsane</i> | orphan <i>stratum</i> | orphanwait <em>delay</em>]</tt></dt> + <dt id="tos"><tt>tos [bcpollbstep <i>poll-gate</i> | beacon <i>beacon</i> | ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | maxclock <i>maxclock </i>| maxdist <i>maxdist</i> | minclock <i>minclock</i> | mindist <i>mindist </i>| minsane <i>minsane</i> | orphan <i>stratum</i> | orphanwait <em>delay</em>]</tt></dt> <dd>This command alters certain system variables used by the the clock selection and clustering algorithms. The default values of these variables have been carefully optimized for a wide range of network speeds and reliability expectations. Very rarely is it necessary to change the default values; but, some folks can't resist twisting the knobs. It can be used to select the quality and quantity of peers used to synchronize the system clock and is most useful in dynamic server discovery schemes. The options are as follows:</dd> <dd> <dl> + <dt><tt>bcpollbstep <i>poll-gate</i></tt></dt> + <dd>This option will cause the client to delay believing backward time steps from a broadcast server for <tt>bcpollbstep</tt> poll intervals. NTP Broadcast networks are expected to be trusted, and if the server's time gets stepped backwards then it's desireable that the clients follow this change as soon as possible. However, in spite of various protections built-in to the broadcast protocol, it is possible that an attacker could perform a carefully-constructed replay attack and cause clients to erroneously step their clocks backward. If the risk of a successful broadcast replay attack is greater than the risk of the clients being out of sync in the event that there is a backward step on the broadcast time servers, this option may be used to cause the clients to delay beliveving backward time steps until <i>poll-gate</i> consecutive polls have been received. The default is 0, which means the client will accept these steps upon receipt. Any value from 0 to 4 can be specified.</dd> <dt><tt>beacon <i>beacon</i></tt></dt> <dd>The manycast server sends packets at intervals of 64 s if less than <tt>maxclock</tt> servers are available. Otherwise, it sends packets at the <i><tt>beacon</tt></i> interval in seconds. The default is 3600 s. See the <a href="discover.html">Automatic Server Discovery</a> page for further details.</dd> <dt><tt>ceiling <i>ceiling</i></tt></dt> diff --git a/contrib/ntp/include/Makefile.am b/contrib/ntp/include/Makefile.am index 521ac14..749a0c8 100644 --- a/contrib/ntp/include/Makefile.am +++ b/contrib/ntp/include/Makefile.am @@ -16,6 +16,7 @@ noinst_HEADERS = \ intreswork.h \ iosignal.h \ l_stdlib.h \ + libssl_compat.h \ lib_strbuf.h \ libntp.h \ mbg_gps166.h \ diff --git a/contrib/ntp/include/Makefile.in b/contrib/ntp/include/Makefile.in index ef92804..acd3bb5 100644 --- a/contrib/ntp/include/Makefile.in +++ b/contrib/ntp/include/Makefile.in @@ -501,6 +501,7 @@ noinst_HEADERS = \ intreswork.h \ iosignal.h \ l_stdlib.h \ + libssl_compat.h \ lib_strbuf.h \ libntp.h \ mbg_gps166.h \ diff --git a/contrib/ntp/include/libssl_compat.h b/contrib/ntp/include/libssl_compat.h new file mode 100644 index 0000000..a8938a1 --- /dev/null +++ b/contrib/ntp/include/libssl_compat.h @@ -0,0 +1,100 @@ +/* + * libssl_compat.h -- OpenSSL v1.1 compatibility shims + * + * --------------------------------------------------------------------- + * + * Written by Juergen Perlinger <perlinger@ntp.org> for the NTP project + * + * Based on an idea by Kurt Roeckx <kurt@roeckx.be> + * + * --------------------------------------------------------------------- + * This is a clean room implementation of shim functions that have + * counterparts in the OpenSSL v1.1 API but not in earlier versions. + * + * If the OpenSSL version used for compilation needs the shims (that is, + * does not provide the new functions) the names of these functions are + * redirected to our shims. + * --------------------------------------------------------------------- + */ + +#ifndef NTP_LIBSSL_COMPAT_H +#define NTP_LIBSSL_COMPAT_H + +#include "openssl/evp.h" +#include "openssl/dsa.h" +#include "openssl/rsa.h" + +/* ----------------------------------------------------------------- */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* ----------------------------------------------------------------- */ + +# include <openssl/objects.h> +# include <openssl/x509.h> + +/* shim the new-style API on an old-style OpenSSL */ + +extern BN_GENCB* sslshimBN_GENCB_new(void); +extern void sslshimBN_GENCB_free(BN_GENCB*); + +extern EVP_MD_CTX* sslshim_EVP_MD_CTX_new(void); +extern void sslshim_EVP_MD_CTX_free(EVP_MD_CTX *ctx); + +extern int sslshim_EVP_PKEY_id(const EVP_PKEY * pkey); +extern int sslshim_EVP_PKEY_base_id(const EVP_PKEY * pkey); +extern RSA* sslshim_EVP_PKEY_get0_RSA(EVP_PKEY * pkey); +extern DSA* sslshim_EVP_PKEY_get0_DSA(EVP_PKEY * pkey); + +extern void sslshim_RSA_get0_key(const RSA *prsa, const BIGNUM **pn, + const BIGNUM **pe, const BIGNUM **pd); +extern int sslshim_RSA_set0_key(RSA *prsa, BIGNUM *n, + BIGNUM *e, BIGNUM *d); +extern void sslshim_RSA_get0_factors(const RSA *prsa, const BIGNUM **pp, + const BIGNUM **pq); +extern int sslshim_RSA_set0_factors(RSA *prsar, BIGNUM *p, BIGNUM *q); +extern int sslshim_RSA_set0_crt_params(RSA *prsa, BIGNUM *dmp1, + BIGNUM *dmq1, BIGNUM *iqmp); + +extern void sslshim_DSA_SIG_get0(const DSA_SIG *psig, const BIGNUM **pr, + const BIGNUM **ps); +extern int sslshim_DSA_SIG_set0(DSA_SIG *psig, BIGNUM *r, BIGNUM *s); +extern void sslshim_DSA_get0_pqg(const DSA *pdsa, const BIGNUM **pp, + const BIGNUM **pq, const BIGNUM **pg); +extern int sslshim_DSA_set0_pqg(DSA *pdsa, BIGNUM *p, BIGNUM *q, BIGNUM *g); +extern void sslshim_DSA_get0_key(const DSA *pdsa, const BIGNUM **ppub_key, + const BIGNUM **ppriv_key); +extern int sslshim_DSA_set0_key(DSA *pdsa, BIGNUM *pub_key, + BIGNUM *priv_key); + +extern int sslshim_X509_get_signature_nid(const X509 *x); + +#define BN_GENCB_new sslshimBN_GENCB_new +#define BN_GENCB_free sslshimBN_GENCB_free + +#define EVP_MD_CTX_new sslshim_EVP_MD_CTX_new +#define EVP_MD_CTX_free sslshim_EVP_MD_CTX_free + +#define EVP_PKEY_id sslshim_EVP_PKEY_id +#define EVP_PKEY_base_id sslshim_EVP_PKEY_base_id +#define EVP_PKEY_get0_RSA sslshim_EVP_PKEY_get0_RSA +#define EVP_PKEY_get0_DSA sslshim_EVP_PKEY_get0_DSA + +#define RSA_get0_key sslshim_RSA_get0_key +#define RSA_set0_key sslshim_RSA_set0_key +#define RSA_get0_factors sslshim_RSA_get0_factors +#define RSA_set0_factors sslshim_RSA_set0_factors +#define RSA_set0_crt_params sslshim_RSA_set0_crt_params + +#define DSA_SIG_get0 sslshim_DSA_SIG_get0 +#define DSA_SIG_set0 sslshim_DSA_SIG_set0 +#define DSA_get0_pqg sslshim_DSA_get0_pqg +#define DSA_set0_pqg sslshim_DSA_set0_pqg +#define DSA_get0_key sslshim_DSA_get0_key +#define DSA_set0_key sslshim_DSA_set0_key + +#define X509_get_signature_nid sslshim_X509_get_signature_nid + +/* ----------------------------------------------------------------- */ +#endif /* OPENSSL_VERSION_NUMBER < v1.1.0 */ +/* ----------------------------------------------------------------- */ + +#endif /* NTP_LIBSSL_COMPAT_H */ diff --git a/contrib/ntp/include/ntp.h b/contrib/ntp/include/ntp.h index 84c30d9..323135d 100644 --- a/contrib/ntp/include/ntp.h +++ b/contrib/ntp/include/ntp.h @@ -391,7 +391,7 @@ struct peer { * Statistic counters */ u_long timereset; /* time stat counters were reset */ - u_long timelastrec; /* last packet received time */ + u_long timelastrec; /* last packet received time, incl. trash */ u_long timereceived; /* last (clean) packet received time */ u_long timereachable; /* last reachable/unreachable time */ @@ -419,8 +419,7 @@ struct peer { * MODE_BROADCAST and MODE_BCLIENT appear in the transition * function. MODE_CONTROL and MODE_PRIVATE can appear in packets, * but those never survive to the transition function. - * is a -/ */ + */ #define MODE_UNSPEC 0 /* unspecified (old version) */ #define MODE_ACTIVE 1 /* symmetric active mode */ #define MODE_PASSIVE 2 /* symmetric passive mode */ @@ -433,7 +432,7 @@ struct peer { #define MODE_CONTROL 6 /* control mode */ #define MODE_PRIVATE 7 /* private mode */ /* - * This is a madeup mode for broadcast client. + * This is a made-up mode for broadcast client. */ #define MODE_BCLIENT 6 /* broadcast client mode */ @@ -724,6 +723,7 @@ struct pkt { #define PROTO_UECRYPTONAK 30 #define PROTO_UEDIGEST 31 #define PROTO_PCEDIGEST 32 +#define PROTO_BCPOLLBSTEP 33 /* * Configuration items for the loop filter @@ -731,7 +731,7 @@ struct pkt { #define LOOP_DRIFTINIT 1 /* iniitialize frequency */ #define LOOP_KERN_CLEAR 2 /* set initial frequency offset */ #define LOOP_MAX 3 /* set both step offsets */ -#define LOOP_MAX_BACK 4 /* set bacward-step offset */ +#define LOOP_MAX_BACK 4 /* set backward-step offset */ #define LOOP_MAX_FWD 5 /* set forward-step offset */ #define LOOP_PANIC 6 /* set panic offseet */ #define LOOP_PHI 7 /* set dispersion rate */ diff --git a/contrib/ntp/include/ntp_intres.h b/contrib/ntp/include/ntp_intres.h index 1b6bd66..1109130 100644 --- a/contrib/ntp/include/ntp_intres.h +++ b/contrib/ntp/include/ntp_intres.h @@ -9,6 +9,9 @@ #ifdef WORKER #define INITIAL_DNS_RETRY 2 /* seconds between queries */ +/* flags for extended addrinfo version */ +#define GAIR_F_IGNDNSERR 0x0001 /* ignore DNS errors */ + /* * you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context); * later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called. @@ -19,6 +22,9 @@ typedef void (*gai_sometime_callback) extern int getaddrinfo_sometime(const char *, const char *, const struct addrinfo *, int, gai_sometime_callback, void *); +extern int getaddrinfo_sometime_ex(const char *, const char *, + const struct addrinfo *, int, + gai_sometime_callback, void *, u_int); /* * In gai_sometime_callback routines, the resulting addrinfo list is * only available until the callback returns. To hold on to the list diff --git a/contrib/ntp/include/ntpd.h b/contrib/ntp/include/ntpd.h index 362068c..1f33bf4 100644 --- a/contrib/ntp/include/ntpd.h +++ b/contrib/ntp/include/ntpd.h @@ -483,6 +483,7 @@ extern int sys_bclient; /* we set our time to broadcasts */ extern double sys_bdelay; /* broadcast client default delay */ extern int sys_authenticate; /* requre authentication for config */ extern l_fp sys_authdelay; /* authentication delay */ +extern u_char sys_bcpollbstep; /* broadcast poll backstep gate */ extern u_long sys_epoch; /* last clock update time */ extern keyid_t sys_private; /* private value for session seed */ extern int sys_manycastserver; /* respond to manycast client pkts */ diff --git a/contrib/ntp/lib/isc/netaddr.c b/contrib/ntp/lib/isc/netaddr.c index 9710466..01f9080 100644 --- a/contrib/ntp/lib/isc/netaddr.c +++ b/contrib/ntp/lib/isc/netaddr.c @@ -280,7 +280,6 @@ isc_netaddr_masktoprefixlen(const isc_netaddr_t *s, unsigned int *lenp) { for (; i < ipbytes; i++) { if (p[i] != 0) return (ISC_R_MASKNONCONTIG); - i++; } *lenp = nbytes * 8 + nbits; return (ISC_R_SUCCESS); diff --git a/contrib/ntp/libntp/Makefile.am b/contrib/ntp/libntp/Makefile.am index 26a4709..874739a 100644 --- a/contrib/ntp/libntp/Makefile.am +++ b/contrib/ntp/libntp/Makefile.am @@ -73,6 +73,7 @@ libntp_a_SRCS = \ iosignal.c \ is_ip_address.c \ lib_strbuf.c \ + libssl_compat.c \ machines.c \ mktime.c \ modetoa.c \ diff --git a/contrib/ntp/libntp/Makefile.in b/contrib/ntp/libntp/Makefile.in index 9125c19..46b7926 100644 --- a/contrib/ntp/libntp/Makefile.in +++ b/contrib/ntp/libntp/Makefile.in @@ -150,15 +150,15 @@ am__libntp_a_SOURCES_DIST = systime.c a_md5encrypt.c adjtime.c \ calyearstart.c clocktime.c clocktypes.c decodenetnum.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ - is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \ - mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \ - ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \ - ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \ - prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \ - socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \ - strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \ - vint64ops.c work_fork.c work_thread.c ymd2yd.c \ - $(srcdir)/../lib/isc/assertions.c \ + is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \ + mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \ + ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \ + ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ + octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \ + snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ + statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ + timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ + ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -209,20 +209,21 @@ am__objects_4 = a_md5encrypt.$(OBJEXT) adjtime.$(OBJEXT) \ getopt.$(OBJEXT) hextoint.$(OBJEXT) hextolfp.$(OBJEXT) \ humandate.$(OBJEXT) icom.$(OBJEXT) iosignal.$(OBJEXT) \ is_ip_address.$(OBJEXT) lib_strbuf.$(OBJEXT) \ - machines.$(OBJEXT) mktime.$(OBJEXT) modetoa.$(OBJEXT) \ - mstolfp.$(OBJEXT) msyslog.$(OBJEXT) netof.$(OBJEXT) \ - ntp_calendar.$(OBJEXT) ntp_crypto_rnd.$(OBJEXT) \ - ntp_intres.$(OBJEXT) ntp_libopts.$(OBJEXT) \ - ntp_lineedit.$(OBJEXT) ntp_random.$(OBJEXT) \ - ntp_rfc2553.$(OBJEXT) ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) \ - numtohost.$(OBJEXT) octtoint.$(OBJEXT) prettydate.$(OBJEXT) \ - refidsmear.$(OBJEXT) recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) \ - snprintf.$(OBJEXT) socket.$(OBJEXT) socktoa.$(OBJEXT) \ - socktohost.$(OBJEXT) ssl_init.$(OBJEXT) statestr.$(OBJEXT) \ - strdup.$(OBJEXT) strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) \ - timetoa.$(OBJEXT) timevalops.$(OBJEXT) uglydate.$(OBJEXT) \ - vint64ops.$(OBJEXT) work_fork.$(OBJEXT) work_thread.$(OBJEXT) \ - ymd2yd.$(OBJEXT) $(am__objects_3) $(am__objects_1) + libssl_compat.$(OBJEXT) machines.$(OBJEXT) mktime.$(OBJEXT) \ + modetoa.$(OBJEXT) mstolfp.$(OBJEXT) msyslog.$(OBJEXT) \ + netof.$(OBJEXT) ntp_calendar.$(OBJEXT) \ + ntp_crypto_rnd.$(OBJEXT) ntp_intres.$(OBJEXT) \ + ntp_libopts.$(OBJEXT) ntp_lineedit.$(OBJEXT) \ + ntp_random.$(OBJEXT) ntp_rfc2553.$(OBJEXT) \ + ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) numtohost.$(OBJEXT) \ + octtoint.$(OBJEXT) prettydate.$(OBJEXT) refidsmear.$(OBJEXT) \ + recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) snprintf.$(OBJEXT) \ + socket.$(OBJEXT) socktoa.$(OBJEXT) socktohost.$(OBJEXT) \ + ssl_init.$(OBJEXT) statestr.$(OBJEXT) strdup.$(OBJEXT) \ + strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) timetoa.$(OBJEXT) \ + timevalops.$(OBJEXT) uglydate.$(OBJEXT) vint64ops.$(OBJEXT) \ + work_fork.$(OBJEXT) work_thread.$(OBJEXT) ymd2yd.$(OBJEXT) \ + $(am__objects_3) $(am__objects_1) am_libntp_a_OBJECTS = systime.$(OBJEXT) $(am__objects_4) libntp_a_OBJECTS = $(am_libntp_a_OBJECTS) libntpsim_a_AR = $(AR) $(ARFLAGS) @@ -233,15 +234,15 @@ am__libntpsim_a_SOURCES_DIST = systime_s.c a_md5encrypt.c adjtime.c \ calyearstart.c clocktime.c clocktypes.c decodenetnum.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ - is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \ - mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \ - ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \ - ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \ - prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \ - socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \ - strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \ - vint64ops.c work_fork.c work_thread.c ymd2yd.c \ - $(srcdir)/../lib/isc/assertions.c \ + is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \ + mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \ + ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \ + ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ + octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \ + snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ + statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ + timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ + ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -665,6 +666,7 @@ libntp_a_SRCS = \ iosignal.c \ is_ip_address.c \ lib_strbuf.c \ + libssl_compat.c \ machines.c \ mktime.c \ modetoa.c \ @@ -813,6 +815,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ip_address.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_strbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libssl_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ diff --git a/contrib/ntp/libntp/a_md5encrypt.c b/contrib/ntp/libntp/a_md5encrypt.c index 618ccd9..7edcd2e 100644 --- a/contrib/ntp/libntp/a_md5encrypt.c +++ b/contrib/ntp/libntp/a_md5encrypt.c @@ -11,6 +11,7 @@ #include "ntp.h" #include "ntp_md5.h" /* provides OpenSSL digest API */ #include "isc/string.h" +#include "libssl_compat.h" /* * MD5authencrypt - generate message digest * @@ -26,7 +27,7 @@ MD5authencrypt( { u_char digest[EVP_MAX_MD_SIZE]; u_int len; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; /* * Compute digest of key concatenated with packet. Note: the @@ -34,18 +35,20 @@ MD5authencrypt( * was creaded. */ INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) { + ctx = EVP_MD_CTX_new(); + if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) { msyslog(LOG_ERR, "MAC encrypt: digest init failed"); + EVP_MD_CTX_free(ctx); return (0); } -#else - EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); -#endif - EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, length); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestUpdate(ctx, key, cache_secretsize); + EVP_DigestUpdate(ctx, (u_char *)pkt, length); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); + /* If the MAC is longer than the MAX then truncate it. */ + if (len > MAX_MAC_LEN - 4) + len = MAX_MAC_LEN - 4; memmove((u_char *)pkt + length + 4, digest, len); return (len + 4); } @@ -67,7 +70,7 @@ MD5authdecrypt( { u_char digest[EVP_MAX_MD_SIZE]; u_int len; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; /* * Compute digest of key concatenated with packet. Note: the @@ -75,24 +78,26 @@ MD5authdecrypt( * was created. */ INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) { + ctx = EVP_MD_CTX_new(); + if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) { msyslog(LOG_ERR, "MAC decrypt: digest init failed"); + EVP_MD_CTX_free(ctx); return (0); } -#else - EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); -#endif - EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, length); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestUpdate(ctx, key, cache_secretsize); + EVP_DigestUpdate(ctx, (u_char *)pkt, length); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); + /* If the MAC is longer than the MAX then truncate it. */ + if (len > MAX_MAC_LEN - 4) + len = MAX_MAC_LEN - 4; if (size != (size_t)len + 4) { msyslog(LOG_ERR, "MAC decrypt: MAC length error"); return (0); } - return !isc_tsmemcmp(digest, (const char *)pkt + length + 4, len); + return !isc_tsmemcmp(digest, (u_char *)pkt + length + 4, len); } /* @@ -106,7 +111,7 @@ addr2refid(sockaddr_u *addr) { u_char digest[20]; u_int32 addr_refid; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; u_int len; if (IS_IPV4(addr)) @@ -114,24 +119,23 @@ addr2refid(sockaddr_u *addr) INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - EVP_MD_CTX_init(&ctx); + ctx = EVP_MD_CTX_new(); + EVP_MD_CTX_init(ctx); #ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW /* MD5 is not used as a crypto hash here. */ - EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); + EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); #endif - if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL)) { + if (!EVP_DigestInit_ex(ctx, EVP_md5(), NULL)) { msyslog(LOG_ERR, "MD5 init failed"); + EVP_MD_CTX_free(ctx); /* pedantic... but safe */ exit(1); } -#else - EVP_DigestInit(&ctx, EVP_md5()); -#endif - EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr), + EVP_DigestUpdate(ctx, (u_char *)PSOCK_ADDR6(addr), sizeof(struct in6_addr)); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); memcpy(&addr_refid, digest, sizeof(addr_refid)); return (addr_refid); } diff --git a/contrib/ntp/libntp/audio.c b/contrib/ntp/libntp/audio.c index 726dfa9..3b0a0b3 100644 --- a/contrib/ntp/libntp/audio.c +++ b/contrib/ntp/libntp/audio.c @@ -55,7 +55,7 @@ static struct audio_device device; /* audio device ident */ #ifdef PCM_STYLE_SOUND # define INIT_FILE "/etc/ntp.audio" int agc = SOUND_MIXER_WRITE_RECLEV; /* or IGAIN or LINE */ -int monitor = SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */ +int audiomonitor = SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */ int devmask = 0; int recmask = 0; char cf_c_dev[100], cf_i_dev[100], cf_agc[100], cf_monitor[100]; @@ -334,7 +334,7 @@ audio_init( /* devmask */ i = mixer_name(cf_monitor, devmask); if (i >= 0) - monitor = MIXER_WRITE(i); + audiomonitor = MIXER_WRITE(i); else printf("monitor %s not in devmask %#x\n", cf_monitor, devmask); @@ -412,7 +412,7 @@ audio_gain( # endif l |= r << 8; if (cf_monitor[0] != '\0') - rval = ioctl(ctl_fd, monitor, &l ); + rval = ioctl(ctl_fd, audiomonitor, &l ); else rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_VOLUME, &l); diff --git a/contrib/ntp/libntp/libssl_compat.c b/contrib/ntp/libntp/libssl_compat.c new file mode 100644 index 0000000..ce6acb7 --- /dev/null +++ b/contrib/ntp/libntp/libssl_compat.c @@ -0,0 +1,335 @@ +/* + * libssl_compat.c -- OpenSSL v1.1 compatibility functions + * + * --------------------------------------------------------------------- + * Written by Juergen Perlinger <perlinger@ntp.org> for the NTP project + * + * Based on an idea by Kurt Roeckx <kurt@roeckx.be> + * + * --------------------------------------------------------------------- + * This is a clean room implementation of shim functions that have + * counterparts in the OpenSSL v1.1 API but not in earlier versions. So + * while OpenSSL broke binary compatibility with v1.1, this shim module + * should provide the necessary source code compatibility with older + * versions of OpenSSL. + * --------------------------------------------------------------------- + */ +#include "config.h" + +#include <string.h> +#include <openssl/bn.h> +#include <openssl/evp.h> + +#include "ntp_types.h" + +/* ----------------------------------------------------------------- */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* ----------------------------------------------------------------- */ + +#include "libssl_compat.h" +#include "ntp_assert.h" + +/* -------------------------------------------------------------------- + * replace a BIGNUM owned by the caller with another one if it's not + * NULL, taking over the ownership of the new value. This clears & frees + * the old value -- the clear might be overkill, but it's better to err + * on the side of paranoia here. + */ +static void +replace_bn_nn( + BIGNUM ** ps, + BIGNUM * n + ) +{ + if (n) { + REQUIRE(*ps != n); + BN_clear_free(*ps); + *ps = n; + } +} + +/* -------------------------------------------------------------------- + * allocation and deallocation of prime number callbacks + */ +BN_GENCB* +sslshimBN_GENCB_new(void) +{ + return calloc(1,sizeof(BN_GENCB)); +} + +void +sslshimBN_GENCB_free( + BN_GENCB *cb + ) +{ + free(cb); +} + +/* -------------------------------------------------------------------- + * allocation and deallocation of message digests + */ +EVP_MD_CTX* +sslshim_EVP_MD_CTX_new(void) +{ + return calloc(1, sizeof(EVP_MD_CTX)); +} + +void +sslshim_EVP_MD_CTX_free( + EVP_MD_CTX * pctx + ) +{ + free(pctx); +} + +/* -------------------------------------------------------------------- + * get EVP keys and key type + */ +int +sslshim_EVP_PKEY_id( + const EVP_PKEY *pkey + ) +{ + return (pkey) ? pkey->type : EVP_PKEY_NONE; +} + +int +sslshim_EVP_PKEY_base_id( + const EVP_PKEY *pkey + ) +{ + return (pkey) ? EVP_PKEY_type(pkey->type) : EVP_PKEY_NONE; +} + +RSA* +sslshim_EVP_PKEY_get0_RSA( + EVP_PKEY * pkey + ) +{ + return (pkey) ? pkey->pkey.rsa : NULL; +} + +DSA* +sslshim_EVP_PKEY_get0_DSA( + EVP_PKEY * pkey + ) +{ + return (pkey) ? pkey->pkey.dsa : NULL; +} + +/* -------------------------------------------------------------------- + * set/get RSA params + */ +void +sslshim_RSA_get0_key( + const RSA * prsa, + const BIGNUM ** pn, + const BIGNUM ** pe, + const BIGNUM ** pd + ) +{ + REQUIRE(prsa != NULL); + + if (pn) + *pn = prsa->n; + if (pe) + *pe = prsa->e; + if (pd) + *pd = prsa->d; +} + +int +sslshim_RSA_set0_key( + RSA * prsa, + BIGNUM * n, + BIGNUM * e, + BIGNUM * d + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->n || n) && (prsa->e || e))) + return 0; + + replace_bn_nn(&prsa->n, n); + replace_bn_nn(&prsa->e, e); + replace_bn_nn(&prsa->d, d); + + return 1; +} + +void +sslshim_RSA_get0_factors( + const RSA * prsa, + const BIGNUM ** pp, + const BIGNUM ** pq + ) +{ + REQUIRE(prsa != NULL); + + if (pp) + *pp = prsa->p; + if (pq) + *pq = prsa->q; +} + +int +sslshim_RSA_set0_factors( + RSA * prsa, + BIGNUM * p, + BIGNUM * q + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->p || p) && (prsa->q || q))) + return 0; + + replace_bn_nn(&prsa->p, p); + replace_bn_nn(&prsa->q, q); + + return 1; +} + +int +sslshim_RSA_set0_crt_params( + RSA * prsa, + BIGNUM * dmp1, + BIGNUM * dmq1, + BIGNUM * iqmp + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->dmp1 || dmp1) && + (prsa->dmq1 || dmq1) && + (prsa->iqmp || iqmp) )) + return 0; + + replace_bn_nn(&prsa->dmp1, dmp1); + replace_bn_nn(&prsa->dmq1, dmq1); + replace_bn_nn(&prsa->iqmp, iqmp); + + return 1; +} + +/* -------------------------------------------------------------------- + * set/get DSA signature parameters + */ +void +sslshim_DSA_SIG_get0( + const DSA_SIG * psig, + const BIGNUM ** pr, + const BIGNUM ** ps + ) +{ + REQUIRE(psig != NULL); + + if (pr != NULL) + *pr = psig->r; + if (ps != NULL) + *ps = psig->s; +} + +int +sslshim_DSA_SIG_set0( + DSA_SIG * psig, + BIGNUM * r, + BIGNUM * s + ) +{ + REQUIRE(psig != NULL); + if (!(r && s)) + return 0; + + replace_bn_nn(&psig->r, r); + replace_bn_nn(&psig->s, s); + + return 1; +} + +/* -------------------------------------------------------------------- + * get/set DSA parameters + */ +void +sslshim_DSA_get0_pqg( + const DSA * pdsa, + const BIGNUM ** pp, + const BIGNUM ** pq, + const BIGNUM ** pg + ) +{ + REQUIRE(pdsa != NULL); + + if (pp != NULL) + *pp = pdsa->p; + if (pq != NULL) + *pq = pdsa->q; + if (pg != NULL) + *pg = pdsa->g; +} + +int +sslshim_DSA_set0_pqg( + DSA * pdsa, + BIGNUM * p, + BIGNUM * q, + BIGNUM * g + ) +{ + if (!((pdsa->p || p) && (pdsa->q || q) && (pdsa->g || g))) + return 0; + + replace_bn_nn(&pdsa->p, p); + replace_bn_nn(&pdsa->q, q); + replace_bn_nn(&pdsa->g, g); + + return 1; +} + +void +sslshim_DSA_get0_key( + const DSA * pdsa, + const BIGNUM ** ppub_key, + const BIGNUM ** ppriv_key + ) +{ + REQUIRE(pdsa != NULL); + + if (ppub_key != NULL) + *ppub_key = pdsa->pub_key; + if (ppriv_key != NULL) + *ppriv_key = pdsa->priv_key; +} + +int +sslshim_DSA_set0_key( + DSA * pdsa, + BIGNUM * pub_key, + BIGNUM * priv_key + ) +{ + REQUIRE(pdsa != NULL); + if (!(pdsa->pub_key || pub_key)) + return 0; + + replace_bn_nn(&pdsa->pub_key, pub_key); + replace_bn_nn(&pdsa->priv_key, priv_key); + + return 1; +} + +int +sslshim_X509_get_signature_nid( + const X509 *x + ) +{ + return OBJ_obj2nid(x->sig_alg->algorithm); +} + +/* ----------------------------------------------------------------- */ +#else /* OPENSSL_VERSION_NUMBER >= v1.1.0 */ +/* ----------------------------------------------------------------- */ + +NONEMPTY_TRANSLATION_UNIT + +/* ----------------------------------------------------------------- */ +#endif +/* ----------------------------------------------------------------- */ diff --git a/contrib/ntp/libntp/ntp_calendar.c b/contrib/ntp/libntp/ntp_calendar.c index ff6ead3..4bfb0e7 100644 --- a/contrib/ntp/libntp/ntp_calendar.c +++ b/contrib/ntp/libntp/ntp_calendar.c @@ -91,7 +91,7 @@ /* *--------------------------------------------------------------------- * replacing the 'time()' function - * -------------------------------------------------------------------- + *--------------------------------------------------------------------- */ static systime_func_ptr systime_func = &time; @@ -395,7 +395,7 @@ ntpcal_get_build_date( /* *--------------------------------------------------------------------- * basic calendar stuff - * -------------------------------------------------------------------- + *--------------------------------------------------------------------- */ /* month table for a year starting with March,1st */ @@ -443,11 +443,11 @@ static const uint16_t real_month_table[2][13] = { */ /* - * ================================================================== + * ==================================================================== * * General algorithmic stuff * - * ================================================================== + * ==================================================================== */ /* @@ -495,7 +495,7 @@ static const uint16_t real_month_table[2][13] = { * 32/16bit divisions and is still performant is a bit more * difficult. Since most usecases can be coded in a way that does only * require the 32-bit version a 64bit version is NOT provided here. - * --------------------------------------------------------------------- + *--------------------------------------------------------------------- */ int32_t ntpcal_periodic_extend( @@ -542,8 +542,35 @@ ntpcal_periodic_extend( return pivot; } +/*--------------------------------------------------------------------- + * Note to the casual reader + * + * In the next two functions you will find (or would have found...) + * the expression + * + * res.Q_s -= 0x80000000; + * + * There was some ruckus about a possible programming error due to + * integer overflow and sign propagation. + * + * This assumption is based on a lack of understanding of the C + * standard. (Though this is admittedly not one of the most 'natural' + * aspects of the 'C' language and easily to get wrong.) + * + * see + * http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf + * "ISO/IEC 9899:201x Committee Draft — April 12, 2011" + * 6.4.4.1 Integer constants, clause 5 + * + * why there is no sign extension/overflow problem here. + * + * But to ease the minds of the doubtful, I added back the 'u' qualifiers + * that somehow got lost over the last years. + */ + + /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Convert a timestamp in NTP scale to a 64bit seconds value in the UN*X * scale with proper epoch unfolding around a given pivot or the current * system time. This function happily accepts negative pivot values as @@ -553,7 +580,7 @@ ntpcal_periodic_extend( * This is also a periodic extension, but since the cycle is 2^32 and * the shift is 2^31, we can do some *very* fast math without explicit * divisions. - *------------------------------------------------------------------- + *--------------------------------------------------------------------- */ vint64 ntpcal_ntp_to_time( @@ -568,7 +595,7 @@ ntpcal_ntp_to_time( res.q_s = (pivot != NULL) ? *pivot : now(); - res.Q_s -= 0x80000000; /* unshift of half range */ + res.Q_s -= 0x80000000u; /* unshift of half range */ ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ ntp -= res.D_s.lo; /* cycle difference */ res.Q_s += (uint64_t)ntp; /* get expanded time */ @@ -581,7 +608,7 @@ ntpcal_ntp_to_time( ? *pivot : now(); res = time_to_vint64(&tmp); - M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000); + M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000u); ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ ntp -= res.D_s.lo; /* cycle difference */ M_ADD(res.D_s.hi, res.D_s.lo, 0, ntp); @@ -592,7 +619,7 @@ ntpcal_ntp_to_time( } /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Convert a timestamp in NTP scale to a 64bit seconds value in the NTP * scale with proper epoch unfolding around a given pivot or the current * system time. @@ -602,7 +629,7 @@ ntpcal_ntp_to_time( * This is also a periodic extension, but since the cycle is 2^32 and * the shift is 2^31, we can do some *very* fast math without explicit * divisions. - *------------------------------------------------------------------- + *--------------------------------------------------------------------- */ vint64 ntpcal_ntp_to_ntp( @@ -617,7 +644,7 @@ ntpcal_ntp_to_ntp( res.q_s = (pivot) ? *pivot : now(); - res.Q_s -= 0x80000000; /* unshift of half range */ + res.Q_s -= 0x80000000u; /* unshift of half range */ res.Q_s += (uint32_t)JAN_1970; /* warp into NTP domain */ ntp -= res.D_s.lo; /* cycle difference */ res.Q_s += (uint64_t)ntp; /* get expanded time */ @@ -642,20 +669,20 @@ ntpcal_ntp_to_ntp( /* - * ================================================================== + * ==================================================================== * * Splitting values to composite entities * - * ================================================================== + * ==================================================================== */ /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Split a 64bit seconds value into elapsed days in 'res.hi' and * elapsed seconds since midnight in 'res.lo' using explicit floor * division. This function happily accepts negative time values as * timestamps before the respective epoch start. - * ------------------------------------------------------------------- + *--------------------------------------------------------------------- */ ntpcal_split ntpcal_daysplit( @@ -736,11 +763,11 @@ ntpcal_daysplit( } /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Split a 32bit seconds value into h/m/s and excessive days. This * function happily accepts negative time values as timestamps before * midnight. - * ------------------------------------------------------------------- + *--------------------------------------------------------------------- */ static int32_t priv_timesplit( @@ -773,7 +800,7 @@ priv_timesplit( } /* - * --------------------------------------------------------------------- + *--------------------------------------------------------------------- * Given the number of elapsed days in the calendar era, split this * number into the number of elapsed years in 'res.hi' and the number * of elapsed days of that year in 'res.lo'. @@ -1053,11 +1080,11 @@ ntpcal_time_to_date( /* - * ================================================================== + * ==================================================================== * * merging composite entities * - * ================================================================== + * ==================================================================== */ /* @@ -1251,8 +1278,8 @@ ntpcal_edate_to_eradays( * Convert ELAPSED years/months/days of gregorian calendar to elapsed * days in year. * - * Note: This will give the true difference to the start of the given year, - * even if months & days are off-scale. + * Note: This will give the true difference to the start of the given + * year, even if months & days are off-scale. *--------------------------------------------------------------------- */ int32_t @@ -1434,11 +1461,11 @@ ntpcal_date_to_time( /* - * ================================================================== + * ==================================================================== * * extended and unchecked variants of caljulian/caltontp * - * ================================================================== + * ==================================================================== */ int ntpcal_ntp64_to_date( @@ -1500,11 +1527,11 @@ ntpcal_date_to_ntp( /* - * ================================================================== + * ==================================================================== * * day-of-week calculations * - * ================================================================== + * ==================================================================== */ /* * Given a RataDie and a day-of-week, calculate a RDN that is reater-than, @@ -1557,7 +1584,7 @@ ntpcal_weekday_lt( } /* - * ================================================================== + * ==================================================================== * * ISO week-calendar conversions * @@ -1601,7 +1628,7 @@ ntpcal_weekday_lt( * smallest possible powers of two, so the division can be implemented * as shifts if the optimiser chooses to do so. * - * ================================================================== + * ==================================================================== */ /* diff --git a/contrib/ntp/libntp/ntp_intres.c b/contrib/ntp/libntp/ntp_intres.c index 0b5bb75..7aa288a 100644 --- a/contrib/ntp/libntp/ntp_intres.c +++ b/contrib/ntp/libntp/ntp_intres.c @@ -118,14 +118,16 @@ * is managed by the code which calls the *_complete routines. */ + /* === typedefs === */ typedef struct blocking_gai_req_tag { /* marshalled args */ size_t octets; u_int dns_idx; time_t scheduled; time_t earliest; - struct addrinfo hints; int retry; + struct addrinfo hints; + u_int qflags; gai_sometime_callback callback; void * context; size_t nodesize; @@ -205,8 +207,8 @@ static dnsworker_ctx * get_worker_context(blocking_child *, u_int); static void scheduled_sleep(time_t, time_t, dnsworker_ctx *); static void manage_dns_retry_interval(time_t *, time_t *, - int *, - time_t *); + int *, time_t *, + int/*BOOL*/); static int should_retry_dns(int, int); #ifdef HAVE_RES_INIT static void reload_resolv_conf(dnsworker_ctx *); @@ -230,13 +232,14 @@ static void getnameinfo_sometime_complete(blocking_work_req, * invokes provided callback completion function. */ int -getaddrinfo_sometime( +getaddrinfo_sometime_ex( const char * node, const char * service, const struct addrinfo * hints, int retry, gai_sometime_callback callback, - void * context + void * context, + u_int qflags ) { blocking_gai_req * gai_req; @@ -277,6 +280,7 @@ getaddrinfo_sometime( gai_req->context = context; gai_req->nodesize = nodesize; gai_req->servsize = servsize; + gai_req->qflags = qflags; memcpy((char *)gai_req + sizeof(*gai_req), node, nodesize); memcpy((char *)gai_req + sizeof(*gai_req) + nodesize, service, @@ -451,6 +455,20 @@ blocking_getaddrinfo( return 0; } +int +getaddrinfo_sometime( + const char * node, + const char * service, + const struct addrinfo * hints, + int retry, + gai_sometime_callback callback, + void * context + ) +{ + return getaddrinfo_sometime_ex(node, service, hints, retry, + callback, context, 0); +} + static void getaddrinfo_sometime_complete( @@ -470,7 +488,7 @@ getaddrinfo_sometime_complete( char * service; char * canon_start; time_t time_now; - int again; + int again, noerr; int af; const char * fam_spec; int i; @@ -498,8 +516,9 @@ getaddrinfo_sometime_complete( gai_req->dns_idx, humantime(time_now))); } } else { - again = should_retry_dns(gai_resp->retcode, - gai_resp->gai_errno); + noerr = !!(gai_req->qflags & GAIR_F_IGNDNSERR); + again = noerr || should_retry_dns( + gai_resp->retcode, gai_resp->gai_errno); /* * exponential backoff of DNS retries to 64s */ @@ -528,9 +547,10 @@ getaddrinfo_sometime_complete( gai_strerror(gai_resp->retcode), gai_resp->retcode); } - manage_dns_retry_interval(&gai_req->scheduled, - &gai_req->earliest, &gai_req->retry, - &child_ctx->next_dns_timeslot); + manage_dns_retry_interval( + &gai_req->scheduled, &gai_req->earliest, + &gai_req->retry, &child_ctx->next_dns_timeslot, + noerr); if (!queue_blocking_request( BLOCKING_GETADDRINFO, gai_req, @@ -826,7 +846,7 @@ getnameinfo_sometime_complete( if (gni_req->retry > 0) manage_dns_retry_interval(&gni_req->scheduled, &gni_req->earliest, &gni_req->retry, - &child_ctx->next_dns_timeslot); + &child_ctx->next_dns_timeslot, FALSE); if (gni_req->retry > 0 && again) { if (!queue_blocking_request( @@ -1033,18 +1053,32 @@ manage_dns_retry_interval( time_t * pscheduled, time_t * pwhen, int * pretry, - time_t * pnext_timeslot + time_t * pnext_timeslot, + int forever ) { time_t now; time_t when; int retry; + int retmax; now = time(NULL); retry = *pretry; when = max(now + retry, *pnext_timeslot); *pnext_timeslot = when; - retry = min(64, retry << 1); + + /* this exponential backoff is slower than doubling up: The + * sequence goes 2-3-4-6-8-12-16-24-32... and the upper limit is + * 64 seconds for things that should not repeat forever, and + * 1024 when repeated forever. + */ + retmax = forever ? 1024 : 64; + retry <<= 1; + if (retry & (retry - 1)) + retry &= (retry - 1); + else + retry -= (retry >> 2); + retry = min(retmax, retry); *pscheduled = now; *pwhen = when; diff --git a/contrib/ntp/libntp/ssl_init.c b/contrib/ntp/libntp/ssl_init.c index a9d1d54..ef0f1c1 100644 --- a/contrib/ntp/libntp/ssl_init.c +++ b/contrib/ntp/libntp/ssl_init.c @@ -15,6 +15,7 @@ #ifdef OPENSSL #include "openssl/err.h" #include "openssl/evp.h" +#include "libssl_compat.h" void atexit_ssl_cleanup(void); @@ -62,6 +63,7 @@ ssl_check_version(void) INIT_SSL(); } + #endif /* OPENSSL */ @@ -84,7 +86,6 @@ keytype_from_text( u_char digest[EVP_MAX_MD_SIZE]; char * upcased; char * pch; - EVP_MD_CTX ctx; /* * OpenSSL digest short names are capitalized, so uppercase the @@ -110,8 +111,12 @@ keytype_from_text( if (NULL != pdigest_len) { #ifdef OPENSSL - EVP_DigestInit(&ctx, EVP_get_digestbynid(key_type)); - EVP_DigestFinal(&ctx, digest, &digest_len); + EVP_MD_CTX *ctx; + + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbynid(key_type)); + EVP_DigestFinal(ctx, digest, &digest_len); + EVP_MD_CTX_free(ctx); if (digest_len > max_digest_len) { fprintf(stderr, "key type %s %u octet digests are too big, max %lu\n", diff --git a/contrib/ntp/libntp/work_fork.c b/contrib/ntp/libntp/work_fork.c index 6c9545a..8223fdd 100644 --- a/contrib/ntp/libntp/work_fork.c +++ b/contrib/ntp/libntp/work_fork.c @@ -114,18 +114,24 @@ interrupt_worker_sleep(void) /* * harvest_child_status() runs in the parent. + * + * Note the error handling -- this is an interaction with SIGCHLD. + * SIG_IGN on SIGCHLD on some OSes means do not wait but reap + * automatically. Since we're not really interested in the result code, + * we simply ignore the error. */ static void harvest_child_status( blocking_child * c ) { - if (c->pid) - { + if (c->pid) { /* Wait on the child so it can finish terminating */ if (waitpid(c->pid, NULL, 0) == c->pid) TRACE(4, ("harvested child %d\n", c->pid)); - else msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid); + else if (errno != ECHILD) + msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid); + c->pid = 0; } } @@ -162,7 +168,6 @@ cleanup_after_child( close(c->resp_read_pipe); c->resp_read_pipe = -1; } - c->pid = 0; c->resp_read_ctx = NULL; DEBUG_INSIST(-1 == c->req_read_pipe); DEBUG_INSIST(-1 == c->resp_write_pipe); @@ -461,7 +466,10 @@ fork_blocking_child( fflush(stdout); fflush(stderr); - signal_no_reset(SIGCHLD, SIG_IGN); + /* [BUG 3050] setting SIGCHLD to SIG_IGN likely causes unwanted + * or undefined effects. We don't do it and leave SIGCHLD alone. + */ + /* signal_no_reset(SIGCHLD, SIG_IGN); */ childpid = fork(); if (-1 == childpid) { diff --git a/contrib/ntp/libparse/clk_hopf6021.c b/contrib/ntp/libparse/clk_hopf6021.c index 2359628..c5980ef 100644 --- a/contrib/ntp/libparse/clk_hopf6021.c +++ b/contrib/ntp/libparse/clk_hopf6021.c @@ -113,13 +113,10 @@ static struct format hopf6021_fmt = #define OFFS(x) format->field_offsets[(x)].offset #define STOI(x, y) Stoi(&buffer[OFFS(x)], y, format->field_offsets[(x)].length) -#define hexval(x) (('0' <= (x) && (x) <= '9') ? (x) - '0' : \ - ('a' <= (x) && (x) <= 'f') ? (x) - 'a' + 10 : \ - ('A' <= (x) && (x) <= 'F') ? (x) - 'A' + 10 : \ - -1) static parse_cvt_fnc_t cvt_hopf6021; static parse_inp_fnc_t inp_hopf6021; +static unsigned char hexval(unsigned char); clockformat_t clock_hopf6021 = { @@ -160,40 +157,40 @@ cvt_hopf6021( return CVT_FAIL|CVT_BADFMT; } - clock_time->usecond = 0; - clock_time->utcoffset = 0; + clock_time->usecond = 0; + clock_time->flags = 0; - status = (u_char) hexval(buffer[OFFS(O_FLAGS)]); - weekday= (u_char) hexval(buffer[OFFS(O_WDAY)]); + status = hexval(buffer[OFFS(O_FLAGS)]); + weekday = hexval(buffer[OFFS(O_WDAY)]); if ((status == 0xFF) || (weekday == 0xFF)) { return CVT_FAIL|CVT_BADFMT; } - clock_time->flags = 0; - if (weekday & HOPF_UTC) { - clock_time->flags |= PARSEB_UTC; + clock_time->flags |= PARSEB_UTC; + clock_time->utcoffset = 0; + } + else if (status & HOPF_DST) + { + clock_time->flags |= PARSEB_DST; + clock_time->utcoffset = -2*60*60; /* MET DST */ } else { - if (status & HOPF_DST) - { - clock_time->flags |= PARSEB_DST; - clock_time->utcoffset = -2*60*60; /* MET DST */ - } - else - { - clock_time->utcoffset = -1*60*60; /* MET */ - } + clock_time->utcoffset = -1*60*60; /* MET */ } - clock_time->flags |= (status & HOPF_DSTWARN) ? PARSEB_ANNOUNCE : 0; - + if (status & HOPF_DSTWARN) + { + clock_time->flags |= PARSEB_ANNOUNCE; + } + switch (status & HOPF_MODE) { + default: /* dummy: we cover all 4 cases. */ case HOPF_INVALID: /* Time/Date invalid */ clock_time->flags |= PARSEB_POWERUP; break; @@ -205,9 +202,6 @@ cvt_hopf6021( case HOPF_RADIO: /* Radio clock */ case HOPF_RADIOHP: /* Radio clock high precision */ break; - - default: - return CVT_FAIL|CVT_BADFMT; } return CVT_OK; @@ -244,6 +238,30 @@ inp_hopf6021( } } +/* + * convert a hex-digit to numeric value + */ +static unsigned char +hexval( + unsigned char ch + ) +{ + unsigned int dv; + + if ((dv = ch - '0') >= 10u) + { + if ((dv -= 'A'-'0') < 6u || (dv -= 'a'-'A') < 6u) + { + dv += 10; + } + else + { + dv = 0xFF; + } + } + return (unsigned char)dv; +} + #else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */ int clk_hopf6021_bs; #endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */ diff --git a/contrib/ntp/ntpd/complete.conf.in b/contrib/ntp/ntpd/complete.conf.in index 2c547fa..4c6c045 100644 --- a/contrib/ntp/ntpd/complete.conf.in +++ b/contrib/ntp/ntpd/complete.conf.in @@ -26,7 +26,7 @@ controlkey 12 requestkey 12 enable auth ntp monitor stats disable bclient calibrate kernel mode7 peer_clear_digest_early unpeer_crypto_early unpeer_crypto_nak_early unpeer_digest_early -tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 +tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 bcpollbstep 3 rlimit@HAVE_RLIMIT_MEMLOCK@@HAVE_RLIMIT_STACK@ tinker allan 1500 dispersion 15 freq 0 huffpuff 7200 panic 1000 step 0.128 stepout 900 tick 0.01 broadcastclient diff --git a/contrib/ntp/ntpd/invoke-ntp.conf.texi b/contrib/ntp/ntpd/invoke-ntp.conf.texi index 7efecee..afd92ff 100644 --- a/contrib/ntp/ntpd/invoke-ntp.conf.texi +++ b/contrib/ntp/ntpd/invoke-ntp.conf.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:07 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:01:55 AM by AutoGen 5.18.5 # From the definitions ntp.conf.def # and the template file agtexi-file.tpl @end ignore @@ -1925,6 +1925,21 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +@subsubsection Broadcast Options +@table @asis +@item @code{tos} @code{[@code{bcpollbstep} @kbd{gate}]} +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. @subsubsection Manycast Options @table @asis @item @code{tos} @code{[@code{ceiling} @kbd{ceiling} | @code{cohort} @code{@{} @code{0} | @code{1} @code{@}} | @code{floor} @kbd{floor} | @code{minclock} @kbd{minclock} | @code{minsane} @kbd{minsane}]} diff --git a/contrib/ntp/ntpd/invoke-ntp.keys.texi b/contrib/ntp/ntpd/invoke-ntp.keys.texi index 8585e65..5982f03 100644 --- a/contrib/ntp/ntpd/invoke-ntp.keys.texi +++ b/contrib/ntp/ntpd/invoke-ntp.keys.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.keys.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:10 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:01:58 AM by AutoGen 5.18.5 # From the definitions ntp.keys.def # and the template file agtexi-file.tpl @end ignore diff --git a/contrib/ntp/ntpd/invoke-ntpd.texi b/contrib/ntp/ntpd/invoke-ntpd.texi index 7c1275a..975494b 100644 --- a/contrib/ntp/ntpd/invoke-ntpd.texi +++ b/contrib/ntp/ntpd/invoke-ntpd.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpd.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:12 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:02:00 AM by AutoGen 5.18.5 # From the definitions ntpd-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -142,7 +142,7 @@ with a status code of 0. @exampleindent 0 @example -ntpd - NTP daemon program - Ver. 4.2.8p8 +ntpd - NTP daemon program - Ver. 4.2.8p9 Usage: ntpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \ [ <server1> ... <serverN> ] Flg Arg Option-Name Description diff --git a/contrib/ntp/ntpd/keyword-gen-utd b/contrib/ntp/ntpd/keyword-gen-utd index 69665c2..683453d 100644 --- a/contrib/ntp/ntpd/keyword-gen-utd +++ b/contrib/ntp/ntpd/keyword-gen-utd @@ -1 +1 @@ - * Generated 2016-05-19 06:35:34 UTC diff_ignore_line + * Generated 2016-11-09 11:39:28 UTC diff_ignore_line diff --git a/contrib/ntp/ntpd/keyword-gen.c b/contrib/ntp/ntpd/keyword-gen.c index 648b3ae..c9d30be 100644 --- a/contrib/ntp/ntpd/keyword-gen.c +++ b/contrib/ntp/ntpd/keyword-gen.c @@ -148,6 +148,7 @@ struct key_tok ntp_keywords[] = { { "cohort", T_Cohort, FOLLBY_TOKEN }, { "mindist", T_Mindist, FOLLBY_TOKEN }, { "maxdist", T_Maxdist, FOLLBY_TOKEN }, +{ "bcpollbstep", T_Bcpollbstep, FOLLBY_TOKEN }, { "beacon", T_Beacon, FOLLBY_TOKEN }, { "orphan", T_Orphan, FOLLBY_TOKEN }, { "orphanwait", T_Orphanwait, FOLLBY_TOKEN }, diff --git a/contrib/ntp/ntpd/ntp.conf.5man b/contrib/ntp/ntpd/ntp.conf.5man index b3fc3d8..35fa0aa 100644 --- a/contrib/ntp/ntpd/ntp.conf.5man +++ b/contrib/ntp/ntpd/ntp.conf.5man @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5man "02 Jun 2016" "4.2.8p8" "File Formats" +.TH ntp.conf 5man "21 Nov 2016" "4.2.8p9" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Q_ai3f/ag-2_aa2f) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:41 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -2174,7 +2174,23 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.SS Broadcast Options +.TP 7 +.NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]bcpollbstep\f[] \f\*[I-Font]gate\f[]] +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .SS Manycast Options +.RS .TP 7 .NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]ceiling\f[] \f\*[I-Font]ceiling\f[] | \f\*[B-Font]cohort\f[] { \f\*[B-Font]0\f[] | \f\*[B-Font]1\f[] } | \f\*[B-Font]floor\f[] \f\*[I-Font]floor\f[] | \f\*[B-Font]minclock\f[] \f\*[I-Font]minclock\f[] | \f\*[B-Font]minsane\f[] \f\*[I-Font]minsane\f[]] This command affects the clock selection and clustering @@ -2244,7 +2260,7 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH Reference Clock Support The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock @@ -2411,6 +2427,7 @@ option is used for this purpose. Except where noted, these options apply to all clock drivers. .SS Reference Clock Commands +.RS .TP 7 .NOP \f\*[B-Font]server\f[] \f[C]127.127.\f[]\f\*[I-Font]t\f[].\f\*[I-Font]u\f[] [\f\*[B-Font]prefer\f[]] [\f\*[B-Font]mode\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]minpoll\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]maxpoll\f[] \f\*[I-Font]int\f[]] This command can be used to configure reference clocks in @@ -2559,8 +2576,9 @@ Further information on the command can be found in \fIMonitoring\f[] \fIOptions\f[]. .RE -.PP +.RE .SH Miscellaneous Options +.RS .TP 7 .NOP \f\*[B-Font]broadcastdelay\f[] \f\*[I-Font]seconds\f[] The broadcast and multicast modes require a special calibration @@ -3079,8 +3097,9 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH "OPTIONS" +.RS .TP .NOP \f\*[B-Font]\-\-help\f[] Display usage information and exit. @@ -3092,7 +3111,7 @@ Pass the extended usage information through a pager. Output version of program and exit. The default mode is `v', a simple version. The `c' mode will print copyright information and `n' will print the full copyright notice. -.PP +.RE .SH "OPTION PRESETS" Any option that is not marked as \fInot presettable\fP may be preset by loading values from environment variables named: @@ -3103,6 +3122,7 @@ by loading values from environment variables named: .SH "ENVIRONMENT" See \fBOPTION PRESETS\fP for configuration environment variables. .SH FILES +.RS .TP 15 .NOP \fI/etc/ntp.conf\f[] the default name of the configuration file @@ -3126,9 +3146,10 @@ RSA public key .TP 15 .NOP \fIntp_dh\f[] Diffie-Hellman agreement parameters -.PP +.RE .SH "EXIT STATUS" One of the following exit values will be returned: +.RS .TP .NOP 0 " (EXIT_SUCCESS)" Successful program execution. @@ -3139,7 +3160,7 @@ The operation failed or the command syntax was not valid. .NOP 70 " (EX_SOFTWARE)" libopts had an internal operational error. Please report it to autogen-users@lists.sourceforge.net. Thank you. -.PP +.RE .SH "SEE ALSO" \fCntpd\f[]\fR(1ntpdmdoc)\f[], \fCntpdc\f[]\fR(1ntpdcmdoc)\f[], diff --git a/contrib/ntp/ntpd/ntp.conf.5mdoc b/contrib/ntp/ntpd/ntp.conf.5mdoc index 21806bc..3d328eb 100644 --- a/contrib/ntp/ntpd/ntp.conf.5mdoc +++ b/contrib/ntp/ntpd/ntp.conf.5mdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_CONF 5mdoc File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:16 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -1995,6 +1995,25 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.Ss Broadcast Options +.Bl -tag -width indent +.It Xo Ic tos +.Oo +.Cm bcpollbstep Ar gate +.Oc +.Xc +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .Ss Manycast Options .Bl -tag -width indent .It Xo Ic tos diff --git a/contrib/ntp/ntpd/ntp.conf.def b/contrib/ntp/ntpd/ntp.conf.def index a62e976..5ae8c38 100644 --- a/contrib/ntp/ntpd/ntp.conf.def +++ b/contrib/ntp/ntpd/ntp.conf.def @@ -1997,6 +1997,25 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.Ss Broadcast Options +.Bl -tag -width indent +.It Xo Ic tos +.Oo +.Cm bcpollbstep Ar gate +.Oc +.Xc +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .Ss Manycast Options .Bl -tag -width indent .It Xo Ic tos diff --git a/contrib/ntp/ntpd/ntp.conf.html b/contrib/ntp/ntpd/ntp.conf.html index 2f0db05..31cf87e 100644 --- a/contrib/ntp/ntpd/ntp.conf.html +++ b/contrib/ntp/ntpd/ntp.conf.html @@ -33,9 +33,9 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <p>This document describes the configuration file for the NTP Project's <code>ntpd</code> program. - <p>This document applies to version 4.2.8p8 of <code>ntp.conf</code>. + <p>This document applies to version 4.2.8p9 of <code>ntp.conf</code>. - <div class="shortcontents"> + <div class="shortcontents"> <h2>Short Contents</h2> <ul> <a href="#Top">NTP's Configuration File User Manual</a> @@ -1926,9 +1926,25 @@ scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. -<h5 class="subsubsection">Manycast Options</h5> +<h5 class="subsubsection">Broadcast Options</h5> <dl> +<dt><code>tos</code> <code>[bcpollbstep </code><kbd>gate</kbd><code>]</code><dd>This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. + +<h5 class="subsubsection">Manycast Options</h5> + + <dl> <dt><code>tos</code> <code>[ceiling </code><kbd>ceiling</kbd><code> | cohort { 0 | 1 } | floor </code><kbd>floor</kbd><code> | minclock </code><kbd>minclock</kbd><code> | minsane </code><kbd>minsane</kbd><code>]</code><dd>This command affects the clock selection and clustering algorithms. It can be used to select the quality and @@ -1936,7 +1952,7 @@ quantity of peers used to synchronize the system clock and is most useful in manycast mode. The variables operate as follows: - <dl> + <dl> <dt><code>ceiling</code> <kbd>ceiling</kbd><dd>Peers with strata above <code>ceiling</code> will be discarded if there are at least @@ -1978,14 +1994,14 @@ Byzantine agreement, should be at least 4 in order to detect and discard a single falseticker. </dl> - <br><dt><code>ttl</code> <kbd>hop</kbd> <kbd>...</kbd><dd>This command specifies a list of TTL values in increasing + <br><dt><code>ttl</code> <kbd>hop</kbd> <kbd>...</kbd><dd>This command specifies a list of TTL values in increasing order, up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. </dl> -<div class="node"> + <div class="node"> <p><hr> <a name="Reference-Clock-Support"></a> <br> @@ -1993,7 +2009,7 @@ multiples of 32 starting at 31. <h4 class="subsection">Reference Clock Support</h4> -<p>The NTP Version 4 daemon supports some three dozen different radio, + <p>The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock used for backup or when no other clock source is available. Detailed descriptions of individual device drivers and options can @@ -2030,7 +2046,7 @@ page provided in <span class="file">/usr/share/doc/ntp</span>). - <p>A reference clock will generally (though not always) be a radio + <p>A reference clock will generally (though not always) be a radio timecode receiver which is synchronized to a source of standard time such as the services offered by the NRC in Canada and NIST and USNO in the US. @@ -2046,7 +2062,7 @@ or the hardware port has not been appropriately configured results in a scalding remark to the system log file, but is otherwise non hazardous. - <p>For the purposes of configuration, + <p>For the purposes of configuration, <code>ntpd(1ntpdmdoc)</code> treats reference clocks in a manner analogous to normal NTP peers as much @@ -2067,7 +2083,7 @@ While it may seem overkill, it is in fact sometimes useful to configure multiple reference clocks of the same type, in which case the unit numbers must be unique. - <p>The + <p>The <code>server</code> command is used to configure a reference clock, where the @@ -2105,7 +2121,7 @@ meaning only for selected clock drivers. See the individual clock driver document pages for additional information. - <p>The + <p>The <code>fudge</code> command is used to provide additional information for individual clock drivers and normally follows @@ -2127,7 +2143,7 @@ in the <code>fudge</code> command as well. - <p>The stratum number of a reference clock is by default zero. + <p>The stratum number of a reference clock is by default zero. Since the <code>ntpd(1ntpdmdoc)</code> daemon adds one to the stratum of each @@ -2150,11 +2166,11 @@ these options apply to all clock drivers. <h5 class="subsubsection">Reference Clock Commands</h5> - <dl> + <dl> <dt><code>server</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[prefer]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[minpoll </code><kbd>int</kbd><code>]</code> <code>[maxpoll </code><kbd>int</kbd><code>]</code><dd>This command can be used to configure reference clocks in special ways. The options are interpreted as follows: - <dl> + <dl> <dt><code>prefer</code><dd>Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of @@ -2187,7 +2203,7 @@ defaults to 10 (17.1 m) and defaults to 14 (4.5 h). The allowable range is 4 (16 s) to 17 (36.4 h) inclusive. </dl> - <br><dt><code>fudge</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[time1 </code><kbd>sec</kbd><code>]</code> <code>[time2 </code><kbd>sec</kbd><code>]</code> <code>[stratum </code><kbd>int</kbd><code>]</code> <code>[refid </code><kbd>string</kbd><code>]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[flag1 0 | 1]</code> <code>[flag2 0 | 1]</code> <code>[flag3 0 | 1]</code> <code>[flag4 0 | 1]</code><dd>This command can be used to configure reference clocks in + <br><dt><code>fudge</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[time1 </code><kbd>sec</kbd><code>]</code> <code>[time2 </code><kbd>sec</kbd><code>]</code> <code>[stratum </code><kbd>int</kbd><code>]</code> <code>[refid </code><kbd>string</kbd><code>]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[flag1 0 | 1]</code> <code>[flag2 0 | 1]</code> <code>[flag3 0 | 1]</code> <code>[flag4 0 | 1]</code><dd>This command can be used to configure reference clocks in special ways. It must immediately follow the <code>server</code> @@ -2198,7 +2214,7 @@ is possible at run time using the program. The options are interpreted as follows: - <dl> + <dl> <dt><code>time1</code> <kbd>sec</kbd><dd>Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used @@ -2269,8 +2285,8 @@ Further information on the command can be found in <a href="#Monitoring-Options">Monitoring Options</a>. </dl> - </dl> -<div class="node"> + </dl> + <div class="node"> <p><hr> <a name="Miscellaneous-Options"></a> <br> @@ -2278,7 +2294,7 @@ command can be found in <h4 class="subsection">Miscellaneous Options</h4> - <dl> + <dl> <dt><code>broadcastdelay</code> <kbd>seconds</kbd><dd>The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. @@ -2311,7 +2327,7 @@ frequency of zero and creates the file when writing it for the first time. If this command is not given, the daemon will always start with an initial frequency of zero. - <p>The file format consists of a single line containing a single + <p>The file format consists of a single line containing a single floating point number, which records the frequency offset measured in parts-per-million (PPM). The file is updated by first writing @@ -2331,7 +2347,7 @@ Note that all of these flags can be controlled remotely using the <code>ntpdc(1ntpdcmdoc)</code> utility program. - <dl> + <dl> <dt><code>auth</code><dd>Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using either public key or private key cryptography. @@ -2466,7 +2482,7 @@ The default for this flag is <code>enable</code>. </dl> - <br><dt><code>includefile</code> <kbd>includefile</kbd><dd>This command allows additional configuration commands + <br><dt><code>includefile</code> <kbd>includefile</kbd><dd>This command allows additional configuration commands to be included from a separate file. Include files may be nested to a depth of five; upon reaching the end of any @@ -2527,7 +2543,7 @@ and status messages (<code>status</code>). - <p>Configuration keywords are formed by concatenating the message class with + <p>Configuration keywords are formed by concatenating the message class with the event class. The <code>all</code> @@ -2539,20 +2555,20 @@ keyword to enable/disable all messages of the respective message class. Thus, a minimal log configuration could look like this: -<pre class="verbatim"> - logconfig =syncstatus +sysevents -</pre> +<pre class="verbatim"> + logconfig =syncstatus +sysevents + </pre> - <p>This would just list the synchronizations state of + <p>This would just list the synchronizations state of <code>ntpd(1ntpdmdoc)</code> and the major system events. For a simple reference server, the following minimum message configuration could be useful: -<pre class="verbatim"> - logconfig =syncall +clockall -</pre> +<pre class="verbatim"> + logconfig =syncall +clockall + </pre> - <p>This configuration will list all clock information and + <p>This configuration will list all clock information and synchronization information. All other events and messages about peers, system events and so on is suppressed. @@ -2611,8 +2627,8 @@ for them. Emphasis added: twisters are on their own and can expect no help from the support group. - <p>The variables operate as follows: - <dl> + <p>The variables operate as follows: + <dl> <dt><code>allan</code> <kbd>allan</kbd><dd>The argument becomes the new value for the minimum Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm. @@ -2661,8 +2677,8 @@ be set to any positive number in seconds. If set to zero, the stepout pulses will not be suppressed. </dl> - <br><dt><code>rlimit</code> <code>[memlock </code><kbd>Nmegabytes</kbd><code> | stacksize </code><kbd>N4kPages</kbd><code> filenum </code><kbd>Nfiledescriptors</kbd><code>]</code><dd> - <dl> + <br><dt><code>rlimit</code> <code>[memlock </code><kbd>Nmegabytes</kbd><code> | stacksize </code><kbd>N4kPages</kbd><code> filenum </code><kbd>Nfiledescriptors</kbd><code>]</code><dd> + <dl> <dt><code>memlock</code> <kbd>Nmegabytes</kbd><dd>Specify the number of megabytes of memory that should be allocated and locked. Probably only available under Linux, this option may be useful @@ -2679,7 +2695,7 @@ Defaults to 50 4k pages (200 4k pages in OpenBSD). <br><dt><code>filenum</code> <kbd>Nfiledescriptors</kbd><dd>Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default. </dl> - <br><dt><code>trap</code> <kbd>host_address</kbd> <code>[port </code><kbd>port_number</kbd><code>]</code> <code>[interface </code><kbd>interface_address</kbd><code>]</code><dd>This command configures a trap receiver at the given host + <br><dt><code>trap</code> <kbd>host_address</kbd> <code>[port </code><kbd>port_number</kbd><code>]</code> <code>[interface </code><kbd>interface_address</kbd><code>]</code><dd>This command configures a trap receiver at the given host address and port number for sending messages with the specified local interface address. If the port number is unspecified, a value @@ -2690,7 +2706,7 @@ message is sent through. Note that on a multihomed host the interface used may vary from time to time with routing changes. - <p>The trap receiver will generally log event messages and other + <p>The trap receiver will generally log event messages and other information from the server in a log file. While such monitor programs may also request their own trap dynamically, configuring a @@ -2704,11 +2720,11 @@ The default is eight multiples of 32 starting at 31. </dl> - <p>This section was generated by <strong>AutoGen</strong>, + <p>This section was generated by <strong>AutoGen</strong>, using the <code>agtexi-cmd</code> template and the option descriptions for the <code>ntp.conf</code> program. This software is released under the NTP license, <http://ntp.org/license>. -<ul class="menu"> + <ul class="menu"> <li><a accesskey="1" href="#ntp_002econf-Files">ntp.conf Files</a>: Files <li><a accesskey="2" href="#ntp_002econf-See-Also">ntp.conf See Also</a>: See Also <li><a accesskey="3" href="#ntp_002econf-Bugs">ntp.conf Bugs</a>: Bugs @@ -2723,14 +2739,14 @@ This software is released under the NTP license, <http://ntp.org/license>. <h4 class="subsection">ntp.conf Files</h4> - <dl> + <dl> <dt><span class="file">/etc/ntp.conf</span><dd>the default name of the configuration file <br><dt><span class="file">ntp.keys</span><dd>private MD5 keys <br><dt><span class="file">ntpkey</span><dd>RSA private key <br><dt><span class="file">ntpkey_</span><kbd>host</kbd><dd>RSA public key <br><dt><span class="file">ntp_dh</span><dd>Diffie-Hellman agreement parameters </dl> -<div class="node"> + <div class="node"> <p><hr> <a name="ntp_002econf-See-Also"></a> <br> @@ -2738,11 +2754,11 @@ This software is released under the NTP license, <http://ntp.org/license>. <h4 class="subsection">ntp.conf See Also</h4> -<p><code>ntpd(1ntpdmdoc)</code>, + <p><code>ntpd(1ntpdmdoc)</code>, <code>ntpdc(1ntpdcmdoc)</code>, <code>ntpq(1ntpqmdoc)</code> - <p>In addition to the manual pages provided, + <p>In addition to the manual pages provided, comprehensive documentation is available on the world wide web at <code>http://www.ntp.org/</code>. @@ -2750,7 +2766,7 @@ A snapshot of this documentation is available in HTML format in <span class="file">/usr/share/doc/ntp</span>. <br> - <p><br> + <p><br> David L. Mills, <em>Network Time Protocol (Version 4)</em>, RFC5905 <div class="node"> <p><hr> @@ -2760,11 +2776,11 @@ David L. Mills, <em>Network Time Protocol (Version 4)</em>, RFC5905 <h4 class="subsection">ntp.conf Bugs</h4> -<p>The syntax checking is not picky; some combinations of + <p>The syntax checking is not picky; some combinations of ridiculous and even hilarious options and modes may not be detected. - <p>The + <p>The <span class="file">ntpkey_</span><kbd>host</kbd> files are really digital certificates. @@ -2778,7 +2794,7 @@ services when they become universally available. <h4 class="subsection">ntp.conf Notes</h4> -<p>This document was derived from FreeBSD. + <p>This document was derived from FreeBSD. </body></html> diff --git a/contrib/ntp/ntpd/ntp.conf.man.in b/contrib/ntp/ntpd/ntp.conf.man.in index 8b794da..d6ee791 100644 --- a/contrib/ntp/ntpd/ntp.conf.man.in +++ b/contrib/ntp/ntpd/ntp.conf.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5 "02 Jun 2016" "4.2.8p8" "File Formats" +.TH ntp.conf 5 "21 Nov 2016" "4.2.8p9" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Q_ai3f/ag-2_aa2f) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:41 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -2174,7 +2174,23 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.SS Broadcast Options +.TP 7 +.NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]bcpollbstep\f[] \f\*[I-Font]gate\f[]] +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .SS Manycast Options +.RS .TP 7 .NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]ceiling\f[] \f\*[I-Font]ceiling\f[] | \f\*[B-Font]cohort\f[] { \f\*[B-Font]0\f[] | \f\*[B-Font]1\f[] } | \f\*[B-Font]floor\f[] \f\*[I-Font]floor\f[] | \f\*[B-Font]minclock\f[] \f\*[I-Font]minclock\f[] | \f\*[B-Font]minsane\f[] \f\*[I-Font]minsane\f[]] This command affects the clock selection and clustering @@ -2244,7 +2260,7 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH Reference Clock Support The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock @@ -2411,6 +2427,7 @@ option is used for this purpose. Except where noted, these options apply to all clock drivers. .SS Reference Clock Commands +.RS .TP 7 .NOP \f\*[B-Font]server\f[] \f[C]127.127.\f[]\f\*[I-Font]t\f[].\f\*[I-Font]u\f[] [\f\*[B-Font]prefer\f[]] [\f\*[B-Font]mode\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]minpoll\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]maxpoll\f[] \f\*[I-Font]int\f[]] This command can be used to configure reference clocks in @@ -2559,8 +2576,9 @@ Further information on the command can be found in \fIMonitoring\f[] \fIOptions\f[]. .RE -.PP +.RE .SH Miscellaneous Options +.RS .TP 7 .NOP \f\*[B-Font]broadcastdelay\f[] \f\*[I-Font]seconds\f[] The broadcast and multicast modes require a special calibration @@ -3079,8 +3097,9 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH "OPTIONS" +.RS .TP .NOP \f\*[B-Font]\-\-help\f[] Display usage information and exit. @@ -3092,7 +3111,7 @@ Pass the extended usage information through a pager. Output version of program and exit. The default mode is `v', a simple version. The `c' mode will print copyright information and `n' will print the full copyright notice. -.PP +.RE .SH "OPTION PRESETS" Any option that is not marked as \fInot presettable\fP may be preset by loading values from environment variables named: @@ -3103,6 +3122,7 @@ by loading values from environment variables named: .SH "ENVIRONMENT" See \fBOPTION PRESETS\fP for configuration environment variables. .SH FILES +.RS .TP 15 .NOP \fI/etc/ntp.conf\f[] the default name of the configuration file @@ -3126,9 +3146,10 @@ RSA public key .TP 15 .NOP \fIntp_dh\f[] Diffie-Hellman agreement parameters -.PP +.RE .SH "EXIT STATUS" One of the following exit values will be returned: +.RS .TP .NOP 0 " (EXIT_SUCCESS)" Successful program execution. @@ -3139,7 +3160,7 @@ The operation failed or the command syntax was not valid. .NOP 70 " (EX_SOFTWARE)" libopts had an internal operational error. Please report it to autogen-users@lists.sourceforge.net. Thank you. -.PP +.RE .SH "SEE ALSO" \fCntpd\f[]\fR(@NTPD_MS@)\f[], \fCntpdc\f[]\fR(@NTPDC_MS@)\f[], diff --git a/contrib/ntp/ntpd/ntp.conf.mdoc.in b/contrib/ntp/ntpd/ntp.conf.mdoc.in index a9a3424..ea6fe4e 100644 --- a/contrib/ntp/ntpd/ntp.conf.mdoc.in +++ b/contrib/ntp/ntpd/ntp.conf.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_CONF 5 File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:16 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -1995,6 +1995,25 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.Ss Broadcast Options +.Bl -tag -width indent +.It Xo Ic tos +.Oo +.Cm bcpollbstep Ar gate +.Oc +.Xc +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .Ss Manycast Options .Bl -tag -width indent .It Xo Ic tos diff --git a/contrib/ntp/ntpd/ntp.keys.5man b/contrib/ntp/ntpd/ntp.keys.5man index 3e02861..2125af0 100644 --- a/contrib/ntp/ntpd/ntp.keys.5man +++ b/contrib/ntp/ntpd/ntp.keys.5man @@ -1,8 +1,8 @@ -.TH ntp.keys 5man "02 Jun 2016" "4.2.8p8" "File Formats" +.TH ntp.keys 5man "21 Nov 2016" "4.2.8p9" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:35:57 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:46 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.5mdoc b/contrib/ntp/ntpd/ntp.keys.5mdoc index 275b0d5..33d1b8b 100644 --- a/contrib/ntp/ntpd/ntp.keys.5mdoc +++ b/contrib/ntp/ntpd/ntp.keys.5mdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_KEYS 5mdoc File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:20 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:06 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.html b/contrib/ntp/ntpd/ntp.keys.html index 5952608..63e7002 100644 --- a/contrib/ntp/ntpd/ntp.keys.html +++ b/contrib/ntp/ntpd/ntp.keys.html @@ -33,7 +33,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <p>This document describes the symmetric key file for the NTP Project's <code>ntpd</code> program. - <p>This document applies to version 4.2.8p8 of <code>ntp.keys</code>. + <p>This document applies to version 4.2.8p9 of <code>ntp.keys</code>. <div class="shortcontents"> <h2>Short Contents</h2> diff --git a/contrib/ntp/ntpd/ntp.keys.man.in b/contrib/ntp/ntpd/ntp.keys.man.in index 692a4e2..49465e0 100644 --- a/contrib/ntp/ntpd/ntp.keys.man.in +++ b/contrib/ntp/ntpd/ntp.keys.man.in @@ -1,8 +1,8 @@ -.TH ntp.keys 5 "02 Jun 2016" "4.2.8p8" "File Formats" +.TH ntp.keys 5 "21 Nov 2016" "4.2.8p9" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:35:57 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:46 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.mdoc.in b/contrib/ntp/ntpd/ntp.keys.mdoc.in index 7881296..3ace854 100644 --- a/contrib/ntp/ntpd/ntp.keys.mdoc.in +++ b/contrib/ntp/ntpd/ntp.keys.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_KEYS 5 File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:20 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:06 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp_config.c b/contrib/ntp/ntpd/ntp_config.c index 2d4ab52..c36a218 100644 --- a/contrib/ntp/ntpd/ntp_config.c +++ b/contrib/ntp/ntpd/ntp_config.c @@ -53,6 +53,12 @@ #include "ntp_parser.h" #include "ntpd-opts.h" +#ifndef IGNORE_DNS_ERRORS +# define DNSFLAGS 0 +#else +# define DNSFLAGS GAIR_F_IGNDNSERR +#endif + extern int yyparse(void); /* Bug 2817 */ @@ -2002,6 +2008,21 @@ config_tos( INSIST(0); break; + case T_Bcpollbstep: + if (val > 4) { + msyslog(LOG_WARNING, + "Using maximum bcpollbstep ceiling %d, %g requested", + 4, val); + val = 4; + } else if (val < 0) { + msyslog(LOG_WARNING, + "Using minimum bcpollbstep floor %d, %g requested", + 0, val); + val = 0; + } + item = PROTO_BCPOLLBSTEP; + break; + case T_Ceiling: if (val > STRATUM_UNSPEC - 1) { msyslog(LOG_WARNING, @@ -3813,11 +3834,11 @@ config_peers( hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = IPPROTO_UDP; - getaddrinfo_sometime(*cmdline_servers, + getaddrinfo_sometime_ex(*cmdline_servers, "ntp", &hints, INITIAL_DNS_RETRY, &peer_name_resolved, - (void *)ctx); + (void *)ctx, DNSFLAGS); # else /* !WORKER follows */ msyslog(LOG_ERR, "hostname %s can not be used, please use IP address instead.", @@ -3891,10 +3912,11 @@ config_peers( hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = IPPROTO_UDP; - getaddrinfo_sometime(curr_peer->addr->address, + getaddrinfo_sometime_ex(curr_peer->addr->address, "ntp", &hints, INITIAL_DNS_RETRY, - &peer_name_resolved, ctx); + &peer_name_resolved, ctx, + DNSFLAGS); # else /* !WORKER follows */ msyslog(LOG_ERR, "hostname %s can not be used, please use IP address instead.", @@ -3935,16 +3957,10 @@ peer_name_resolved( DPRINTF(1, ("peer_name_resolved(%s) rescode %d\n", name, rescode)); if (rescode) { -#ifndef IGNORE_DNS_ERRORS free(ctx); msyslog(LOG_ERR, "giving up resolving host %s: %s (%d)", name, gai_strerror(rescode), rescode); -#else /* IGNORE_DNS_ERRORS follows */ - getaddrinfo_sometime(name, service, hints, - INITIAL_DNS_RETRY, - &peer_name_resolved, context); -#endif return; } diff --git a/contrib/ntp/ntpd/ntp_control.c b/contrib/ntp/ntpd/ntp_control.c index 07b5697..fac17a7 100644 --- a/contrib/ntp/ntpd/ntp_control.c +++ b/contrib/ntp/ntpd/ntp_control.c @@ -33,6 +33,7 @@ # include "ntp_syscall.h" #endif +#include "libssl_compat.h" /* * Structure to hold request procedure information @@ -120,14 +121,14 @@ static const struct ctl_proc control_codes[] = { { CTL_OP_READVAR, NOAUTH, read_variables }, { CTL_OP_WRITEVAR, AUTH, write_variables }, { CTL_OP_READCLOCK, NOAUTH, read_clockstatus }, - { CTL_OP_WRITECLOCK, NOAUTH, write_clockstatus }, - { CTL_OP_SETTRAP, NOAUTH, set_trap }, + { CTL_OP_WRITECLOCK, AUTH, write_clockstatus }, + { CTL_OP_SETTRAP, AUTH, set_trap }, { CTL_OP_CONFIGURE, AUTH, configure }, { CTL_OP_SAVECONFIG, AUTH, save_config }, { CTL_OP_READ_MRU, NOAUTH, read_mru_list }, { CTL_OP_READ_ORDLIST_A, AUTH, read_ordlist }, { CTL_OP_REQ_NONCE, NOAUTH, req_nonce }, - { CTL_OP_UNSETTRAP, NOAUTH, unset_trap }, + { CTL_OP_UNSETTRAP, AUTH, unset_trap }, { NO_REQUEST, 0, NULL } }; @@ -3158,15 +3159,21 @@ ctl_getitem( for (v = var_list; !(EOV & v->flags); ++v) if (!(PADDING & v->flags)) { - /* check if the var name matches the buffer */ + /* Check if the var name matches the buffer. The + * name is bracketed by [reqpt..tp] and not NUL + * terminated, and it contains no '=' char. The + * lookup value IS NUL-terminated but might + * include a '='... We have to look out for + * that! + */ const char *sp1 = reqpt; const char *sp2 = v->text; - - while ((sp1 != tp) && *sp2 && (*sp1 == *sp2)) { + + while ((sp1 != tp) && (*sp1 == *sp2)) { ++sp1; ++sp2; } - if (sp1 == tp && !*sp2) + if (sp1 == tp && (*sp2 == '\0' || *sp2 == '=')) break; } @@ -3649,7 +3656,7 @@ static u_int32 derive_nonce( u_char digest[EVP_MAX_MD_SIZE]; u_int32 extract; } d; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; u_int len; while (!salt[0] || current_time - last_salt_update >= 3600) { @@ -3660,19 +3667,21 @@ static u_int32 derive_nonce( last_salt_update = current_time; } - EVP_DigestInit(&ctx, EVP_get_digestbynid(NID_md5)); - EVP_DigestUpdate(&ctx, salt, sizeof(salt)); - EVP_DigestUpdate(&ctx, &ts_i, sizeof(ts_i)); - EVP_DigestUpdate(&ctx, &ts_f, sizeof(ts_f)); + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbynid(NID_md5)); + EVP_DigestUpdate(ctx, salt, sizeof(salt)); + EVP_DigestUpdate(ctx, &ts_i, sizeof(ts_i)); + EVP_DigestUpdate(ctx, &ts_f, sizeof(ts_f)); if (IS_IPV4(addr)) - EVP_DigestUpdate(&ctx, &SOCK_ADDR4(addr), + EVP_DigestUpdate(ctx, &SOCK_ADDR4(addr), sizeof(SOCK_ADDR4(addr))); else - EVP_DigestUpdate(&ctx, &SOCK_ADDR6(addr), + EVP_DigestUpdate(ctx, &SOCK_ADDR6(addr), sizeof(SOCK_ADDR6(addr))); - EVP_DigestUpdate(&ctx, &NSRCPORT(addr), sizeof(NSRCPORT(addr))); - EVP_DigestUpdate(&ctx, salt, sizeof(salt)); - EVP_DigestFinal(&ctx, d.digest, &len); + EVP_DigestUpdate(ctx, &NSRCPORT(addr), sizeof(NSRCPORT(addr))); + EVP_DigestUpdate(ctx, salt, sizeof(salt)); + EVP_DigestFinal(ctx, d.digest, &len); + EVP_MD_CTX_free(ctx); return d.extract; } @@ -3954,15 +3963,17 @@ static void read_mru_list( int restrict_mask ) { - const char nonce_text[] = "nonce"; - const char frags_text[] = "frags"; - const char limit_text[] = "limit"; - const char mincount_text[] = "mincount"; - const char resall_text[] = "resall"; - const char resany_text[] = "resany"; - const char maxlstint_text[] = "maxlstint"; - const char laddr_text[] = "laddr"; - const char resaxx_fmt[] = "0x%hx"; + static const char nulltxt[1] = { '\0' }; + static const char nonce_text[] = "nonce"; + static const char frags_text[] = "frags"; + static const char limit_text[] = "limit"; + static const char mincount_text[] = "mincount"; + static const char resall_text[] = "resall"; + static const char resany_text[] = "resany"; + static const char maxlstint_text[] = "maxlstint"; + static const char laddr_text[] = "laddr"; + static const char resaxx_fmt[] = "0x%hx"; + u_int limit; u_short frags; u_short resall; @@ -3979,7 +3990,7 @@ static void read_mru_list( char buf[128]; struct ctl_var * in_parms; const struct ctl_var * v; - char * val; + const char * val; const char * pch; char * pnonce; int nonce_valid; @@ -4031,46 +4042,68 @@ static void read_mru_list( ZERO(last); ZERO(addr); - while (NULL != (v = ctl_getitem(in_parms, &val)) && + /* have to go through '(void*)' to drop 'const' property from pointer. + * ctl_getitem()' needs some cleanup, too.... perlinger@ntp.org + */ + while (NULL != (v = ctl_getitem(in_parms, (void*)&val)) && !(EOV & v->flags)) { int si; + if (NULL == val) + val = nulltxt; + if (!strcmp(nonce_text, v->text)) { - if (NULL != pnonce) - free(pnonce); - pnonce = estrdup(val); + free(pnonce); + pnonce = (*val) ? estrdup(val) : NULL; } else if (!strcmp(frags_text, v->text)) { - sscanf(val, "%hu", &frags); + if (1 != sscanf(val, "%hu", &frags)) + goto blooper; } else if (!strcmp(limit_text, v->text)) { - sscanf(val, "%u", &limit); + if (1 != sscanf(val, "%u", &limit)) + goto blooper; } else if (!strcmp(mincount_text, v->text)) { - if (1 != sscanf(val, "%d", &mincount) || - mincount < 0) + if (1 != sscanf(val, "%d", &mincount)) + goto blooper; + if (mincount < 0) mincount = 0; } else if (!strcmp(resall_text, v->text)) { - sscanf(val, resaxx_fmt, &resall); + if (1 != sscanf(val, resaxx_fmt, &resall)) + goto blooper; } else if (!strcmp(resany_text, v->text)) { - sscanf(val, resaxx_fmt, &resany); + if (1 != sscanf(val, resaxx_fmt, &resany)) + goto blooper; } else if (!strcmp(maxlstint_text, v->text)) { - sscanf(val, "%u", &maxlstint); + if (1 != sscanf(val, "%u", &maxlstint)) + goto blooper; } else if (!strcmp(laddr_text, v->text)) { - if (decodenetnum(val, &laddr)) - lcladr = getinterface(&laddr, 0); + if (!decodenetnum(val, &laddr)) + goto blooper; + lcladr = getinterface(&laddr, 0); } else if (1 == sscanf(v->text, last_fmt, &si) && (size_t)si < COUNTOF(last)) { - if (2 == sscanf(val, "0x%08x.%08x", &ui, &uf)) { - last[si].l_ui = ui; - last[si].l_uf = uf; - if (!SOCK_UNSPEC(&addr[si]) && - si == priors) - priors++; - } + if (2 != sscanf(val, "0x%08x.%08x", &ui, &uf)) + goto blooper; + last[si].l_ui = ui; + last[si].l_uf = uf; + if (!SOCK_UNSPEC(&addr[si]) && si == priors) + priors++; } else if (1 == sscanf(v->text, addr_fmt, &si) && (size_t)si < COUNTOF(addr)) { - if (decodenetnum(val, &addr[si]) - && last[si].l_ui && last[si].l_uf && - si == priors) + if (!decodenetnum(val, &addr[si])) + goto blooper; + if (last[si].l_ui && last[si].l_uf && si == priors) priors++; + } else { + DPRINTF(1, ("read_mru_list: invalid key item: '%s' (ignored)\n", + v->text)); + continue; + + blooper: + DPRINTF(1, ("read_mru_list: invalid param for '%s': '%s' (bailing)\n", + v->text, val)); + free(pnonce); + pnonce = NULL; + break; } } free_varlist(in_parms); @@ -4997,6 +5030,22 @@ report_event( if (num_ctl_traps <= 0) return; + /* [Bug 3119] + * Peer Events should be associated with a peer -- hence the + * name. But there are instances where this function is called + * *without* a valid peer. This happens e.g. with an unsolicited + * CryptoNAK, or when a leap second alarm is going off while + * currently without a system peer. + * + * The most sensible approach to this seems to bail out here if + * this happens. Avoiding to call this function would also + * bypass the log reporting in the first part of this function, + * and this is probably not the best of all options. + * -*-perlinger@ntp.org-*- + */ + if ((err & PEER_EVENT) && !peer) + return; + /* * Set up the outgoing packet variables */ @@ -5013,15 +5062,14 @@ report_event( /* Include the core system variables and the list. */ for (i = 1; i <= CS_VARLIST; i++) ctl_putsys(i); - } else { - INSIST(peer != NULL); + } else if (NULL != peer) { /* paranoia -- skip output */ rpkt.associd = htons(peer->associd); rpkt.status = htons(ctlpeerstatus(peer)); /* Dump it all. Later, maybe less. */ for (i = 1; i <= CP_MAX_NOAUTOKEY; i++) ctl_putpeer(i, peer); -#ifdef REFCLOCK +# ifdef REFCLOCK /* * for clock exception events: add clock variables to * reflect info on exception @@ -5047,7 +5095,7 @@ report_event( FALSE); free_varlist(cs.kv_list); } -#endif /* REFCLOCK */ +# endif /* REFCLOCK */ } /* diff --git a/contrib/ntp/ntpd/ntp_crypto.c b/contrib/ntp/ntpd/ntp_crypto.c index 5b87f19..956875d 100644 --- a/contrib/ntp/ntpd/ntp_crypto.c +++ b/contrib/ntp/ntpd/ntp_crypto.c @@ -22,13 +22,13 @@ #include "ntp_calendar.h" #include "ntp_leapsec.h" -#include "openssl/asn1_mac.h" #include "openssl/bn.h" #include "openssl/err.h" #include "openssl/evp.h" #include "openssl/pem.h" #include "openssl/rand.h" #include "openssl/x509v3.h" +#include "libssl_compat.h" #ifdef KERNEL_PLL #include "ntp_syscall.h" @@ -230,7 +230,7 @@ session_key( u_long lifetime /* key lifetime */ ) { - EVP_MD_CTX ctx; /* message digest context */ + EVP_MD_CTX *ctx; /* message digest context */ u_char dgst[EVP_MAX_MD_SIZE]; /* message digest */ keyid_t keyid; /* key identifer */ u_int32 header[10]; /* data in network byte order */ @@ -263,9 +263,11 @@ session_key( hdlen = 10 * sizeof(u_int32); break; } - EVP_DigestInit(&ctx, EVP_get_digestbynid(crypto_nid)); - EVP_DigestUpdate(&ctx, (u_char *)header, hdlen); - EVP_DigestFinal(&ctx, dgst, &len); + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbynid(crypto_nid)); + EVP_DigestUpdate(ctx, (u_char *)header, hdlen); + EVP_DigestFinal(ctx, dgst, &len); + EVP_MD_CTX_free(ctx); memcpy(&keyid, dgst, 4); keyid = ntohl(keyid); if (lifetime != 0) { @@ -299,7 +301,7 @@ make_keylist( struct interface *dstadr /* interface */ ) { - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ struct autokey *ap; /* autokey pointer */ struct value *vp; /* value pointer */ @@ -377,14 +379,16 @@ make_keylist( if (tstamp != 0) { if (vp->sig == NULL) vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)vp, 12); - EVP_SignUpdate(&ctx, vp->ptr, sizeof(struct autokey)); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)vp, 12); + EVP_SignUpdate(ctx, vp->ptr, sizeof(struct autokey)); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); peer->flags |= FLAG_ASSOC; } + EVP_MD_CTX_free(ctx); } DPRINTF(1, ("make_keys: %d %08x %08x ts %u fs %u poll %d\n", peer->keynumber, keyid, cookie, ntohl(vp->tstamp), @@ -820,8 +824,8 @@ crypto_recv( * errors. */ if (vallen == (u_int)EVP_PKEY_size(host_pkey)) { - u_int32 *cookiebuf = malloc( - RSA_size(host_pkey->pkey.rsa)); + RSA *rsa = EVP_PKEY_get0_RSA(host_pkey); + u_int32 *cookiebuf = malloc(RSA_size(rsa)); if (!cookiebuf) { rval = XEVNT_CKY; break; @@ -830,7 +834,7 @@ crypto_recv( if (RSA_private_decrypt(vallen, (u_char *)ep->pkt, (u_char *)cookiebuf, - host_pkey->pkey.rsa, + rsa, RSA_PKCS1_OAEP_PADDING) != 4) { rval = XEVNT_CKY; free(cookiebuf); @@ -1421,7 +1425,7 @@ crypto_verify( ) { EVP_PKEY *pkey; /* server public key */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp, tstamp1 = 0; /* timestamp */ tstamp_t fstamp, fstamp1 = 0; /* filestamp */ u_int vallen; /* value length */ @@ -1533,12 +1537,16 @@ crypto_verify( * signature. If the identity exchange is verified, light the * proventic bit. What a relief. */ - EVP_VerifyInit(&ctx, peer->digest); + ctx = EVP_MD_CTX_new(); + EVP_VerifyInit(ctx, peer->digest); /* XXX: the "+ 12" needs to be at least documented... */ - EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen + 12); - if (EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen, - pkey) <= 0) + EVP_VerifyUpdate(ctx, (u_char *)&ep->tstamp, vallen + 12); + if (EVP_VerifyFinal(ctx, (u_char *)&ep->pkt[i], siglen, + pkey) <= 0) { + EVP_MD_CTX_free(ctx); return (XEVNT_SIG); + } + EVP_MD_CTX_free(ctx); if (peer->crypto & CRYPTO_FLAG_VRFY) peer->crypto |= CRYPTO_FLAG_PROV; @@ -1564,7 +1572,7 @@ crypto_encrypt( ) { EVP_PKEY *pkey; /* public key */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ u_int32 temp32; u_char *puch; @@ -1592,7 +1600,7 @@ crypto_encrypt( puch = vp->ptr; temp32 = htonl(*cookie); if (RSA_public_encrypt(4, (u_char *)&temp32, puch, - pkey->pkey.rsa, RSA_PKCS1_OAEP_PADDING) <= 0) { + EVP_PKEY_get0_RSA(pkey), RSA_PKCS1_OAEP_PADDING) <= 0) { msyslog(LOG_ERR, "crypto_encrypt: %s", ERR_error_string(ERR_get_error(), NULL)); free(vp->ptr); @@ -1604,13 +1612,15 @@ crypto_encrypt( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, vallen); - if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, vallen); + if (EVP_SignFinal(ctx, vp->sig, &vallen, sign_pkey)) { INSIST(vallen <= sign_siglen); vp->siglen = htonl(vallen); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -1817,7 +1827,7 @@ crypto_send( void crypto_update(void) { - EVP_MD_CTX ctx; /* message digest context */ + EVP_MD_CTX *ctx; /* message digest context */ struct cert_info *cp; /* certificate info/value */ char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */ u_int32 *ptr; @@ -1828,6 +1838,8 @@ crypto_update(void) if (hostval.tstamp == 0) return; + ctx = EVP_MD_CTX_new(); + /* * Sign public key and timestamps. The filestamp is derived from * the host key file extension from wherever the file was @@ -1838,10 +1850,10 @@ crypto_update(void) pubkey.siglen = 0; if (pubkey.sig == NULL) pubkey.sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&pubkey, 12); - EVP_SignUpdate(&ctx, pubkey.ptr, ntohl(pubkey.vallen)); - if (EVP_SignFinal(&ctx, pubkey.sig, &len, sign_pkey)) { + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&pubkey, 12); + EVP_SignUpdate(ctx, pubkey.ptr, ntohl(pubkey.vallen)); + if (EVP_SignFinal(ctx, pubkey.sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); pubkey.siglen = htonl(len); } @@ -1858,11 +1870,11 @@ crypto_update(void) cp->cert.siglen = 0; if (cp->cert.sig == NULL) cp->cert.sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&cp->cert, 12); - EVP_SignUpdate(&ctx, cp->cert.ptr, + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&cp->cert, 12); + EVP_SignUpdate(ctx, cp->cert.ptr, ntohl(cp->cert.vallen)); - if (EVP_SignFinal(&ctx, cp->cert.sig, &len, sign_pkey)) { + if (EVP_SignFinal(ctx, cp->cert.sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); cp->cert.siglen = htonl(len); } @@ -1909,10 +1921,10 @@ crypto_update(void) } if (tai_leap.sig == NULL) tai_leap.sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&tai_leap, 12); - EVP_SignUpdate(&ctx, tai_leap.ptr, len); - if (EVP_SignFinal(&ctx, tai_leap.sig, &len, sign_pkey)) { + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&tai_leap, 12); + EVP_SignUpdate(ctx, tai_leap.ptr, len); + if (EVP_SignFinal(ctx, tai_leap.sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); tai_leap.siglen = htonl(len); } @@ -1922,6 +1934,7 @@ crypto_update(void) ntohl(hostval.tstamp)); record_crypto_stats(NULL, statstr); DPRINTF(1, ("crypto_update: %s\n", statstr)); + EVP_MD_CTX_free(ctx); } /* @@ -2061,7 +2074,7 @@ bighash( BIGNUM *bk /* BIGNUM * to */ ) { - EVP_MD_CTX ctx; /* message digest context */ + EVP_MD_CTX *ctx; /* message digest context */ u_char dgst[EVP_MAX_MD_SIZE]; /* message digest */ u_char *ptr; /* a BIGNUM as binary string */ u_int len; @@ -2069,9 +2082,11 @@ bighash( len = BN_num_bytes(bn); ptr = emalloc(len); BN_bn2bin(bn, ptr); - EVP_DigestInit(&ctx, EVP_md5()); - EVP_DigestUpdate(&ctx, ptr, len); - EVP_DigestFinal(&ctx, dgst, &len); + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_md5()); + EVP_DigestUpdate(ctx, ptr, len); + EVP_DigestFinal(ctx, dgst, &len); + EVP_MD_CTX_free(ctx); BN_bin2bn(dgst, len, bk); free(ptr); } @@ -2139,9 +2154,10 @@ crypto_alice( { DSA *dsa; /* IFF parameters */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; u_int len; + const BIGNUM *q; /* * The identity parameters must have correct format and content. @@ -2151,7 +2167,7 @@ crypto_alice( return (XEVNT_ID); } - if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) { + if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_alice: defective key"); return (XEVNT_PUB); } @@ -2162,10 +2178,11 @@ crypto_alice( if (peer->iffval != NULL) BN_free(peer->iffval); peer->iffval = BN_new(); - len = BN_num_bytes(dsa->q); + DSA_get0_pqg(dsa, NULL, &q, NULL); + len = BN_num_bytes(q); BN_rand(peer->iffval, len * 8, -1, 1); /* r mod q*/ bctx = BN_CTX_new(); - BN_mod(peer->iffval, peer->iffval, dsa->q, bctx); + BN_mod(peer->iffval, peer->iffval, q, bctx); BN_CTX_free(bctx); /* @@ -2182,13 +2199,15 @@ crypto_alice( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2210,11 +2229,13 @@ crypto_bob( DSA *dsa; /* IFF parameters */ DSA_SIG *sdsa; /* DSA signature context fake */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ BIGNUM *bn, *bk, *r; u_char *ptr; u_int len; /* extension field value length */ + const BIGNUM *p, *q, *g; + const BIGNUM *priv_key; /* * If the IFF parameters are not valid, something awful @@ -2224,7 +2245,9 @@ crypto_bob( msyslog(LOG_NOTICE, "crypto_bob: scheme unavailable"); return (XEVNT_ID); } - dsa = iffkey_info->pkey->pkey.dsa; + dsa = EVP_PKEY_get0_DSA(iffkey_info->pkey); + DSA_get0_pqg(dsa, &p, &q, &g); + DSA_get0_key(dsa, NULL, &priv_key); /* * Extract r from the challenge. @@ -2245,15 +2268,14 @@ crypto_bob( bctx = BN_CTX_new(); bk = BN_new(); bn = BN_new(); sdsa = DSA_SIG_new(); BN_rand(bk, len * 8, -1, 1); /* k */ - BN_mod_mul(bn, dsa->priv_key, r, dsa->q, bctx); /* b r mod q */ + BN_mod_mul(bn, priv_key, r, q, bctx); /* b r mod q */ BN_add(bn, bn, bk); - BN_mod(bn, bn, dsa->q, bctx); /* k + b r mod q */ - sdsa->r = BN_dup(bn); - BN_mod_exp(bk, dsa->g, bk, dsa->p, bctx); /* g^k mod p */ + BN_mod(bn, bn, q, bctx); /* k + b r mod q */ + BN_mod_exp(bk, g, bk, p, bctx); /* g^k mod p */ bighash(bk, bk); - sdsa->s = BN_dup(bk); + DSA_SIG_set0(sdsa, bn, bk); BN_CTX_free(bctx); - BN_free(r); BN_free(bn); BN_free(bk); + BN_free(r); #ifdef DEBUG if (debug > 1) DSA_print_fp(stdout, dsa, 0); @@ -2290,13 +2312,15 @@ crypto_bob( /* XXX: more validation to make sure the sign fits... */ vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2323,6 +2347,9 @@ crypto_iff( u_int len; const u_char *ptr; int temp; + const BIGNUM *p, *g; + const BIGNUM *r, *s; + const BIGNUM *pub_key; /* * If the IFF parameters are not valid or no challenge was sent, @@ -2337,7 +2364,7 @@ crypto_iff( ntohl(ep->fstamp)); return (XEVNT_FSP); } - if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) { + if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_iff: defective key"); return (XEVNT_PUB); } @@ -2362,15 +2389,18 @@ crypto_iff( /* * Compute g^(k + b r) g^(q - b)r mod p. */ - BN_mod_exp(bn, dsa->pub_key, peer->iffval, dsa->p, bctx); - BN_mod_exp(bk, dsa->g, sdsa->r, dsa->p, bctx); - BN_mod_mul(bn, bn, bk, dsa->p, bctx); + DSA_get0_key(dsa, &pub_key, NULL); + DSA_get0_pqg(dsa, &p, NULL, &g); + DSA_SIG_get0(sdsa, &r, &s); + BN_mod_exp(bn, pub_key, peer->iffval, p, bctx); + BN_mod_exp(bk, g, r, p, bctx); + BN_mod_mul(bn, bn, bk, p, bctx); /* * Verify the hash of the result matches hash(x). */ bighash(bn, bn); - temp = BN_cmp(bn, sdsa->s); + temp = BN_cmp(bn, s); BN_free(bn); BN_free(bk); BN_CTX_free(bctx); BN_free(peer->iffval); peer->iffval = NULL; @@ -2456,9 +2486,10 @@ crypto_alice2( { RSA *rsa; /* GQ parameters */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; u_int len; + const BIGNUM *n; /* * The identity parameters must have correct format and content. @@ -2466,7 +2497,7 @@ crypto_alice2( if (peer->ident_pkey == NULL) return (XEVNT_ID); - if ((rsa = peer->ident_pkey->pkey->pkey.rsa) == NULL) { + if ((rsa = EVP_PKEY_get0_RSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_alice2: defective key"); return (XEVNT_PUB); } @@ -2477,10 +2508,11 @@ crypto_alice2( if (peer->iffval != NULL) BN_free(peer->iffval); peer->iffval = BN_new(); - len = BN_num_bytes(rsa->n); + RSA_get0_key(rsa, &n, NULL, NULL); + len = BN_num_bytes(n); BN_rand(peer->iffval, len * 8, -1, 1); /* r mod n */ bctx = BN_CTX_new(); - BN_mod(peer->iffval, peer->iffval, rsa->n, bctx); + BN_mod(peer->iffval, peer->iffval, n, bctx); BN_CTX_free(bctx); /* @@ -2497,13 +2529,15 @@ crypto_alice2( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2525,12 +2559,13 @@ crypto_bob2( RSA *rsa; /* GQ parameters */ DSA_SIG *sdsa; /* DSA parameters */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ BIGNUM *r, *k, *g, *y; u_char *ptr; u_int len; int s_len; + const BIGNUM *n, *p, *e; /* * If the GQ parameters are not valid, something awful @@ -2540,7 +2575,8 @@ crypto_bob2( msyslog(LOG_NOTICE, "crypto_bob2: scheme unavailable"); return (XEVNT_ID); } - rsa = gqkey_info->pkey->pkey.rsa; + rsa = EVP_PKEY_get0_RSA(gqkey_info->pkey); + RSA_get0_key(rsa, &n, &p, &e); /* * Extract r from the challenge. @@ -2561,15 +2597,14 @@ crypto_bob2( bctx = BN_CTX_new(); k = BN_new(); g = BN_new(); y = BN_new(); sdsa = DSA_SIG_new(); BN_rand(k, len * 8, -1, 1); /* k */ - BN_mod(k, k, rsa->n, bctx); - BN_mod_exp(y, rsa->p, r, rsa->n, bctx); /* u^r mod n */ - BN_mod_mul(y, k, y, rsa->n, bctx); /* k u^r mod n */ - sdsa->r = BN_dup(y); - BN_mod_exp(g, k, rsa->e, rsa->n, bctx); /* k^b mod n */ + BN_mod(k, k, n, bctx); + BN_mod_exp(y, p, r, n, bctx); /* u^r mod n */ + BN_mod_mul(y, k, y, n, bctx); /* k u^r mod n */ + BN_mod_exp(g, k, e, n, bctx); /* k^b mod n */ bighash(g, g); - sdsa->s = BN_dup(g); + DSA_SIG_set0(sdsa, y, g); BN_CTX_free(bctx); - BN_free(r); BN_free(k); BN_free(g); BN_free(y); + BN_free(r); BN_free(k); #ifdef DEBUG if (debug > 1) RSA_print_fp(stdout, rsa, 0); @@ -2599,13 +2634,15 @@ crypto_bob2( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2633,6 +2670,8 @@ crypto_gq( const u_char *ptr; long len; u_int temp; + const BIGNUM *n, *e; + const BIGNUM *r, *s; /* * If the GQ parameters are not valid or no challenge was sent, @@ -2649,10 +2688,11 @@ crypto_gq( ntohl(ep->fstamp)); return (XEVNT_FSP); } - if ((rsa = peer->ident_pkey->pkey->pkey.rsa) == NULL) { + if ((rsa = EVP_PKEY_get0_RSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_gq: defective key"); return (XEVNT_PUB); } + RSA_get0_key(rsa, &n, NULL, &e); if (peer->iffval == NULL) { msyslog(LOG_NOTICE, "crypto_gq: missing challenge"); return (XEVNT_ID); @@ -2671,6 +2711,7 @@ crypto_gq( ERR_error_string(ERR_get_error(), NULL)); return (XEVNT_ERR); } + DSA_SIG_get0(sdsa, &r, &s); /* * Compute v^r y^b mod n. @@ -2679,16 +2720,16 @@ crypto_gq( msyslog(LOG_NOTICE, "crypto_gq: missing group key"); return (XEVNT_ID); } - BN_mod_exp(v, peer->grpkey, peer->iffval, rsa->n, bctx); + BN_mod_exp(v, peer->grpkey, peer->iffval, n, bctx); /* v^r mod n */ - BN_mod_exp(y, sdsa->r, rsa->e, rsa->n, bctx); /* y^b mod n */ - BN_mod_mul(y, v, y, rsa->n, bctx); /* v^r y^b mod n */ + BN_mod_exp(y, r, e, n, bctx); /* y^b mod n */ + BN_mod_mul(y, v, y, n, bctx); /* v^r y^b mod n */ /* * Verify the hash of the result matches hash(x). */ bighash(y, y); - temp = BN_cmp(y, sdsa->s); + temp = BN_cmp(y, s); BN_CTX_free(bctx); BN_free(y); BN_free(v); BN_free(peer->iffval); peer->iffval = NULL; @@ -2789,9 +2830,10 @@ crypto_alice3( { DSA *dsa; /* MV parameters */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; u_int len; + const BIGNUM *p; /* * The identity parameters must have correct format and content. @@ -2799,10 +2841,11 @@ crypto_alice3( if (peer->ident_pkey == NULL) return (XEVNT_ID); - if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) { + if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_alice3: defective key"); return (XEVNT_PUB); } + DSA_get0_pqg(dsa, &p, NULL, NULL); /* * Roll new random r (0 < r < q). @@ -2810,10 +2853,10 @@ crypto_alice3( if (peer->iffval != NULL) BN_free(peer->iffval); peer->iffval = BN_new(); - len = BN_num_bytes(dsa->p); + len = BN_num_bytes(p); BN_rand(peer->iffval, len * 8, -1, 1); /* r mod p */ bctx = BN_CTX_new(); - BN_mod(peer->iffval, peer->iffval, dsa->p, bctx); + BN_mod(peer->iffval, peer->iffval, p, bctx); BN_CTX_free(bctx); /* @@ -2830,13 +2873,15 @@ crypto_alice3( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2857,11 +2902,14 @@ crypto_bob3( DSA *dsa; /* MV parameters */ DSA *sdsa; /* DSA signature context fake */ BN_CTX *bctx; /* BIGNUM context */ - EVP_MD_CTX ctx; /* signature context */ + EVP_MD_CTX *ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ BIGNUM *r, *k, *u; u_char *ptr; u_int len; + const BIGNUM *p, *q, *g; + const BIGNUM *pub_key, *priv_key; + BIGNUM *sp, *sq, *sg; /* * If the MV parameters are not valid, something awful @@ -2871,7 +2919,9 @@ crypto_bob3( msyslog(LOG_NOTICE, "crypto_bob3: scheme unavailable"); return (XEVNT_ID); } - dsa = mvkey_info->pkey->pkey.dsa; + dsa = EVP_PKEY_get0_DSA(mvkey_info->pkey); + DSA_get0_pqg(dsa, &p, &q, &g); + DSA_get0_key(dsa, &pub_key, &priv_key); /* * Extract r from the challenge. @@ -2892,18 +2942,20 @@ crypto_bob3( */ bctx = BN_CTX_new(); k = BN_new(); u = BN_new(); sdsa = DSA_new(); - sdsa->p = BN_new(); sdsa->q = BN_new(); sdsa->g = BN_new(); + sp = BN_new(); sq = BN_new(); sg = BN_new(); while (1) { - BN_rand(k, BN_num_bits(dsa->q), 0, 0); - BN_mod(k, k, dsa->q, bctx); - BN_gcd(u, k, dsa->q, bctx); + BN_rand(k, BN_num_bits(q), 0, 0); + BN_mod(k, k, q, bctx); + BN_gcd(u, k, q, bctx); if (BN_is_one(u)) break; } - BN_mod_exp(u, dsa->g, k, dsa->p, bctx); /* A^k r */ - BN_mod_mul(sdsa->p, u, r, dsa->p, bctx); - BN_mod_exp(sdsa->q, dsa->priv_key, k, dsa->p, bctx); /* gbar */ - BN_mod_exp(sdsa->g, dsa->pub_key, k, dsa->p, bctx); /* ghat */ + BN_mod_exp(u, g, k, p, bctx); /* A^k r */ + BN_mod_mul(sp, u, r, p, bctx); + BN_mod_exp(sq, priv_key, k, p, bctx); /* gbar */ + BN_mod_exp(sg, pub_key, k, p, bctx); /* ghat */ + DSA_set0_key(sdsa, BN_dup(pub_key), NULL); + DSA_set0_pqg(sdsa, sp, sq, sg); BN_CTX_free(bctx); BN_free(k); BN_free(r); BN_free(u); #ifdef DEBUG if (debug > 1) @@ -2934,13 +2986,15 @@ crypto_bob3( return (XEVNT_OK); vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); return (XEVNT_OK); } @@ -2968,6 +3022,9 @@ crypto_mv( u_int len; const u_char *ptr; int temp; + const BIGNUM *p; + const BIGNUM *pub_key, *priv_key; + const BIGNUM *sp, *sq, *sg; /* * If the MV parameters are not valid or no challenge was sent, @@ -2982,10 +3039,12 @@ crypto_mv( ntohl(ep->fstamp)); return (XEVNT_FSP); } - if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) { + if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) { msyslog(LOG_NOTICE, "crypto_mv: defective key"); return (XEVNT_PUB); } + DSA_get0_pqg(dsa, &p, NULL, NULL); + DSA_get0_key(dsa, &pub_key, &priv_key); if (peer->iffval == NULL) { msyslog(LOG_NOTICE, "crypto_mv: missing challenge"); return (XEVNT_ID); @@ -3002,14 +3061,15 @@ crypto_mv( ERR_error_string(ERR_get_error(), NULL)); return (XEVNT_ERR); } + DSA_get0_pqg(sdsa, &sp, &sq, &sg); /* * Compute (gbar^xhat ghat^xbar) mod p. */ - BN_mod_exp(u, sdsa->q, dsa->pub_key, dsa->p, bctx); - BN_mod_exp(v, sdsa->g, dsa->priv_key, dsa->p, bctx); - BN_mod_mul(u, u, v, dsa->p, bctx); - BN_mod_mul(u, u, sdsa->p, dsa->p, bctx); + BN_mod_exp(u, sq, pub_key, p, bctx); + BN_mod_exp(v, sg, priv_key, p, bctx); + BN_mod_mul(u, u, v, p, bctx); + BN_mod_mul(u, u, sp, p, bctx); /* * The result should match r. @@ -3080,7 +3140,7 @@ cert_sign( ASN1_INTEGER *serial; /* serial number */ X509_NAME *subj; /* distinguished (common) name */ EVP_PKEY *pkey; /* public key */ - EVP_MD_CTX ctx; /* message digest context */ + EVP_MD_CTX *ctx; /* message digest context */ tstamp_t tstamp; /* NTP timestamp */ struct calendar tscal; u_int len; @@ -3176,13 +3236,15 @@ cert_sign( vp->siglen = 0; if (tstamp != 0) { vp->sig = emalloc(sign_siglen); - EVP_SignInit(&ctx, sign_digest); - EVP_SignUpdate(&ctx, (u_char *)vp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) { + ctx = EVP_MD_CTX_new(); + EVP_SignInit(ctx, sign_digest); + EVP_SignUpdate(ctx, (u_char *)vp, 12); + EVP_SignUpdate(ctx, vp->ptr, len); + if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) { INSIST(len <= sign_siglen); vp->siglen = htonl(len); } + EVP_MD_CTX_free(ctx); } #ifdef DEBUG if (debug > 1) @@ -3368,13 +3430,12 @@ cert_parse( ) { X509 *cert; /* X509 certificate */ - X509_EXTENSION *ext; /* X509v3 extension */ struct cert_info *ret; /* certificate info/value */ BIO *bp; char pathbuf[MAXFILENAME]; const u_char *ptr; char *pch; - int temp, cnt, i; + int cnt, i; struct calendar fscal; /* @@ -3422,7 +3483,7 @@ cert_parse( * objects at this time, since the real crunch can happen only * when the time is valid but not yet certificated. */ - ret->nid = OBJ_obj2nid(cert->cert_info->signature->algorithm); + ret->nid = X509_get_signature_nid(cert); ret->digest = (const EVP_MD *)EVP_get_digestbynid(ret->nid); ret->serial = (u_long)ASN1_INTEGER_get(X509_get_serialNumber(cert)); @@ -3446,9 +3507,16 @@ cert_parse( */ cnt = X509_get_ext_count(cert); for (i = 0; i < cnt; i++) { + X509_EXTENSION *ext; + ASN1_OBJECT *obj; + int nid; + ASN1_OCTET_STRING *data; + ext = X509_get_ext(cert, i); - temp = OBJ_obj2nid(ext->object); - switch (temp) { + obj = X509_EXTENSION_get_object(ext); + nid = OBJ_obj2nid(obj); + + switch (nid) { /* * If a key_usage field is present, we decode whether @@ -3466,7 +3534,7 @@ cert_parse( else if (strcmp(pathbuf, "Private") == 0) ret->flags |= CERT_PRIV; DPRINTF(1, ("cert_parse: %s: %s\n", - OBJ_nid2ln(temp), pathbuf)); + OBJ_nid2ln(nid), pathbuf)); break; /* @@ -3474,12 +3542,13 @@ cert_parse( * contains the GQ public key. */ case NID_subject_key_identifier: - ret->grpkey = BN_bin2bn(&ext->value->data[2], - ext->value->length - 2, NULL); + data = X509_EXTENSION_get_data(ext); + ret->grpkey = BN_bin2bn(&data->data[2], + data->length - 2, NULL); /* fall through */ default: DPRINTF(1, ("cert_parse: %s\n", - OBJ_nid2ln(temp))); + OBJ_nid2ln(nid))); break; } } @@ -3669,10 +3738,10 @@ crypto_key( DPRINTF(1, ("crypto_key: %s\n", statstr)); #ifdef DEBUG if (debug > 1) { - if (pkey->type == EVP_PKEY_DSA) - DSA_print_fp(stdout, pkey->pkey.dsa, 0); - else if (pkey->type == EVP_PKEY_RSA) - RSA_print_fp(stdout, pkey->pkey.rsa, 0); + if (EVP_PKEY_base_id(pkey) == EVP_PKEY_DSA) + DSA_print_fp(stdout, EVP_PKEY_get0_DSA(pkey), 0); + else if (EVP_PKEY_base_id(pkey) == EVP_PKEY_RSA) + RSA_print_fp(stdout, EVP_PKEY_get0_RSA(pkey), 0); } #endif return (pkp); @@ -3882,7 +3951,7 @@ crypto_setup(void) filename); exit (-1); } - if (pinfo->pkey->type != EVP_PKEY_RSA) { + if (EVP_PKEY_base_id(pinfo->pkey) != EVP_PKEY_RSA) { msyslog(LOG_ERR, "crypto_setup: host key is not RSA key type"); exit (-1); diff --git a/contrib/ntp/ntpd/ntp_keyword.h b/contrib/ntp/ntpd/ntp_keyword.h index ec373cf..57ec764 100644 --- a/contrib/ntp/ntpd/ntp_keyword.h +++ b/contrib/ntp/ntpd/ntp_keyword.h @@ -2,7 +2,7 @@ * ntp_keyword.h * * NOTE: edit this file with caution, it is generated by keyword-gen.c - * Generated 2016-05-19 06:35:34 UTC diff_ignore_line + * Generated 2016-11-09 11:39:28 UTC diff_ignore_line * */ #include "ntp_scanner.h" @@ -10,7 +10,7 @@ #define LOWEST_KEYWORD_ID 258 -const char * const keyword_text[195] = { +const char * const keyword_text[196] = { /* 0 258 T_Abbrev */ "abbrev", /* 1 259 T_Age */ "age", /* 2 260 T_All */ "all", @@ -21,201 +21,202 @@ const char * const keyword_text[195] = { /* 7 265 T_Automax */ "automax", /* 8 266 T_Average */ "average", /* 9 267 T_Bclient */ "bclient", - /* 10 268 T_Beacon */ "beacon", - /* 11 269 T_Broadcast */ "broadcast", - /* 12 270 T_Broadcastclient */ "broadcastclient", - /* 13 271 T_Broadcastdelay */ "broadcastdelay", - /* 14 272 T_Burst */ "burst", - /* 15 273 T_Calibrate */ "calibrate", - /* 16 274 T_Ceiling */ "ceiling", - /* 17 275 T_Clockstats */ "clockstats", - /* 18 276 T_Cohort */ "cohort", - /* 19 277 T_ControlKey */ "controlkey", - /* 20 278 T_Crypto */ "crypto", - /* 21 279 T_Cryptostats */ "cryptostats", - /* 22 280 T_Ctl */ "ctl", - /* 23 281 T_Day */ "day", - /* 24 282 T_Default */ "default", - /* 25 283 T_Digest */ "digest", - /* 26 284 T_Disable */ "disable", - /* 27 285 T_Discard */ "discard", - /* 28 286 T_Dispersion */ "dispersion", - /* 29 287 T_Double */ NULL, - /* 30 288 T_Driftfile */ "driftfile", - /* 31 289 T_Drop */ "drop", - /* 32 290 T_Dscp */ "dscp", - /* 33 291 T_Ellipsis */ "...", - /* 34 292 T_Enable */ "enable", - /* 35 293 T_End */ "end", - /* 36 294 T_False */ NULL, - /* 37 295 T_File */ "file", - /* 38 296 T_Filegen */ "filegen", - /* 39 297 T_Filenum */ "filenum", - /* 40 298 T_Flag1 */ "flag1", - /* 41 299 T_Flag2 */ "flag2", - /* 42 300 T_Flag3 */ "flag3", - /* 43 301 T_Flag4 */ "flag4", - /* 44 302 T_Flake */ "flake", - /* 45 303 T_Floor */ "floor", - /* 46 304 T_Freq */ "freq", - /* 47 305 T_Fudge */ "fudge", - /* 48 306 T_Host */ "host", - /* 49 307 T_Huffpuff */ "huffpuff", - /* 50 308 T_Iburst */ "iburst", - /* 51 309 T_Ident */ "ident", - /* 52 310 T_Ignore */ "ignore", - /* 53 311 T_Incalloc */ "incalloc", - /* 54 312 T_Incmem */ "incmem", - /* 55 313 T_Initalloc */ "initalloc", - /* 56 314 T_Initmem */ "initmem", - /* 57 315 T_Includefile */ "includefile", - /* 58 316 T_Integer */ NULL, - /* 59 317 T_Interface */ "interface", - /* 60 318 T_Intrange */ NULL, - /* 61 319 T_Io */ "io", - /* 62 320 T_Ipv4 */ "ipv4", - /* 63 321 T_Ipv4_flag */ "-4", - /* 64 322 T_Ipv6 */ "ipv6", - /* 65 323 T_Ipv6_flag */ "-6", - /* 66 324 T_Kernel */ "kernel", - /* 67 325 T_Key */ "key", - /* 68 326 T_Keys */ "keys", - /* 69 327 T_Keysdir */ "keysdir", - /* 70 328 T_Kod */ "kod", - /* 71 329 T_Mssntp */ "mssntp", - /* 72 330 T_Leapfile */ "leapfile", - /* 73 331 T_Leapsmearinterval */ "leapsmearinterval", - /* 74 332 T_Limited */ "limited", - /* 75 333 T_Link */ "link", - /* 76 334 T_Listen */ "listen", - /* 77 335 T_Logconfig */ "logconfig", - /* 78 336 T_Logfile */ "logfile", - /* 79 337 T_Loopstats */ "loopstats", - /* 80 338 T_Lowpriotrap */ "lowpriotrap", - /* 81 339 T_Manycastclient */ "manycastclient", - /* 82 340 T_Manycastserver */ "manycastserver", - /* 83 341 T_Mask */ "mask", - /* 84 342 T_Maxage */ "maxage", - /* 85 343 T_Maxclock */ "maxclock", - /* 86 344 T_Maxdepth */ "maxdepth", - /* 87 345 T_Maxdist */ "maxdist", - /* 88 346 T_Maxmem */ "maxmem", - /* 89 347 T_Maxpoll */ "maxpoll", - /* 90 348 T_Mdnstries */ "mdnstries", - /* 91 349 T_Mem */ "mem", - /* 92 350 T_Memlock */ "memlock", - /* 93 351 T_Minclock */ "minclock", - /* 94 352 T_Mindepth */ "mindepth", - /* 95 353 T_Mindist */ "mindist", - /* 96 354 T_Minimum */ "minimum", - /* 97 355 T_Minpoll */ "minpoll", - /* 98 356 T_Minsane */ "minsane", - /* 99 357 T_Mode */ "mode", - /* 100 358 T_Mode7 */ "mode7", - /* 101 359 T_Monitor */ "monitor", - /* 102 360 T_Month */ "month", - /* 103 361 T_Mru */ "mru", - /* 104 362 T_Multicastclient */ "multicastclient", - /* 105 363 T_Nic */ "nic", - /* 106 364 T_Nolink */ "nolink", - /* 107 365 T_Nomodify */ "nomodify", - /* 108 366 T_Nomrulist */ "nomrulist", - /* 109 367 T_None */ "none", - /* 110 368 T_Nonvolatile */ "nonvolatile", - /* 111 369 T_Nopeer */ "nopeer", - /* 112 370 T_Noquery */ "noquery", - /* 113 371 T_Noselect */ "noselect", - /* 114 372 T_Noserve */ "noserve", - /* 115 373 T_Notrap */ "notrap", - /* 116 374 T_Notrust */ "notrust", - /* 117 375 T_Ntp */ "ntp", - /* 118 376 T_Ntpport */ "ntpport", - /* 119 377 T_NtpSignDsocket */ "ntpsigndsocket", - /* 120 378 T_Orphan */ "orphan", - /* 121 379 T_Orphanwait */ "orphanwait", - /* 122 380 T_PCEdigest */ "peer_clear_digest_early", - /* 123 381 T_Panic */ "panic", - /* 124 382 T_Peer */ "peer", - /* 125 383 T_Peerstats */ "peerstats", - /* 126 384 T_Phone */ "phone", - /* 127 385 T_Pid */ "pid", - /* 128 386 T_Pidfile */ "pidfile", - /* 129 387 T_Pool */ "pool", - /* 130 388 T_Port */ "port", - /* 131 389 T_Preempt */ "preempt", - /* 132 390 T_Prefer */ "prefer", - /* 133 391 T_Protostats */ "protostats", - /* 134 392 T_Pw */ "pw", - /* 135 393 T_Randfile */ "randfile", - /* 136 394 T_Rawstats */ "rawstats", - /* 137 395 T_Refid */ "refid", - /* 138 396 T_Requestkey */ "requestkey", - /* 139 397 T_Reset */ "reset", - /* 140 398 T_Restrict */ "restrict", - /* 141 399 T_Revoke */ "revoke", - /* 142 400 T_Rlimit */ "rlimit", - /* 143 401 T_Saveconfigdir */ "saveconfigdir", - /* 144 402 T_Server */ "server", - /* 145 403 T_Setvar */ "setvar", - /* 146 404 T_Source */ "source", - /* 147 405 T_Stacksize */ "stacksize", - /* 148 406 T_Statistics */ "statistics", - /* 149 407 T_Stats */ "stats", - /* 150 408 T_Statsdir */ "statsdir", - /* 151 409 T_Step */ "step", - /* 152 410 T_Stepback */ "stepback", - /* 153 411 T_Stepfwd */ "stepfwd", - /* 154 412 T_Stepout */ "stepout", - /* 155 413 T_Stratum */ "stratum", - /* 156 414 T_String */ NULL, - /* 157 415 T_Sys */ "sys", - /* 158 416 T_Sysstats */ "sysstats", - /* 159 417 T_Tick */ "tick", - /* 160 418 T_Time1 */ "time1", - /* 161 419 T_Time2 */ "time2", - /* 162 420 T_Timer */ "timer", - /* 163 421 T_Timingstats */ "timingstats", - /* 164 422 T_Tinker */ "tinker", - /* 165 423 T_Tos */ "tos", - /* 166 424 T_Trap */ "trap", - /* 167 425 T_True */ "true", - /* 168 426 T_Trustedkey */ "trustedkey", - /* 169 427 T_Ttl */ "ttl", - /* 170 428 T_Type */ "type", - /* 171 429 T_U_int */ NULL, - /* 172 430 T_UEcrypto */ "unpeer_crypto_early", - /* 173 431 T_UEcryptonak */ "unpeer_crypto_nak_early", - /* 174 432 T_UEdigest */ "unpeer_digest_early", - /* 175 433 T_Unconfig */ "unconfig", - /* 176 434 T_Unpeer */ "unpeer", - /* 177 435 T_Version */ "version", - /* 178 436 T_WanderThreshold */ NULL, - /* 179 437 T_Week */ "week", - /* 180 438 T_Wildcard */ "wildcard", - /* 181 439 T_Xleave */ "xleave", - /* 182 440 T_Year */ "year", - /* 183 441 T_Flag */ NULL, - /* 184 442 T_EOC */ NULL, - /* 185 443 T_Simulate */ "simulate", - /* 186 444 T_Beep_Delay */ "beep_delay", - /* 187 445 T_Sim_Duration */ "simulation_duration", - /* 188 446 T_Server_Offset */ "server_offset", - /* 189 447 T_Duration */ "duration", - /* 190 448 T_Freq_Offset */ "freq_offset", - /* 191 449 T_Wander */ "wander", - /* 192 450 T_Jitter */ "jitter", - /* 193 451 T_Prop_Delay */ "prop_delay", - /* 194 452 T_Proc_Delay */ "proc_delay" + /* 10 268 T_Bcpollbstep */ "bcpollbstep", + /* 11 269 T_Beacon */ "beacon", + /* 12 270 T_Broadcast */ "broadcast", + /* 13 271 T_Broadcastclient */ "broadcastclient", + /* 14 272 T_Broadcastdelay */ "broadcastdelay", + /* 15 273 T_Burst */ "burst", + /* 16 274 T_Calibrate */ "calibrate", + /* 17 275 T_Ceiling */ "ceiling", + /* 18 276 T_Clockstats */ "clockstats", + /* 19 277 T_Cohort */ "cohort", + /* 20 278 T_ControlKey */ "controlkey", + /* 21 279 T_Crypto */ "crypto", + /* 22 280 T_Cryptostats */ "cryptostats", + /* 23 281 T_Ctl */ "ctl", + /* 24 282 T_Day */ "day", + /* 25 283 T_Default */ "default", + /* 26 284 T_Digest */ "digest", + /* 27 285 T_Disable */ "disable", + /* 28 286 T_Discard */ "discard", + /* 29 287 T_Dispersion */ "dispersion", + /* 30 288 T_Double */ NULL, + /* 31 289 T_Driftfile */ "driftfile", + /* 32 290 T_Drop */ "drop", + /* 33 291 T_Dscp */ "dscp", + /* 34 292 T_Ellipsis */ "...", + /* 35 293 T_Enable */ "enable", + /* 36 294 T_End */ "end", + /* 37 295 T_False */ NULL, + /* 38 296 T_File */ "file", + /* 39 297 T_Filegen */ "filegen", + /* 40 298 T_Filenum */ "filenum", + /* 41 299 T_Flag1 */ "flag1", + /* 42 300 T_Flag2 */ "flag2", + /* 43 301 T_Flag3 */ "flag3", + /* 44 302 T_Flag4 */ "flag4", + /* 45 303 T_Flake */ "flake", + /* 46 304 T_Floor */ "floor", + /* 47 305 T_Freq */ "freq", + /* 48 306 T_Fudge */ "fudge", + /* 49 307 T_Host */ "host", + /* 50 308 T_Huffpuff */ "huffpuff", + /* 51 309 T_Iburst */ "iburst", + /* 52 310 T_Ident */ "ident", + /* 53 311 T_Ignore */ "ignore", + /* 54 312 T_Incalloc */ "incalloc", + /* 55 313 T_Incmem */ "incmem", + /* 56 314 T_Initalloc */ "initalloc", + /* 57 315 T_Initmem */ "initmem", + /* 58 316 T_Includefile */ "includefile", + /* 59 317 T_Integer */ NULL, + /* 60 318 T_Interface */ "interface", + /* 61 319 T_Intrange */ NULL, + /* 62 320 T_Io */ "io", + /* 63 321 T_Ipv4 */ "ipv4", + /* 64 322 T_Ipv4_flag */ "-4", + /* 65 323 T_Ipv6 */ "ipv6", + /* 66 324 T_Ipv6_flag */ "-6", + /* 67 325 T_Kernel */ "kernel", + /* 68 326 T_Key */ "key", + /* 69 327 T_Keys */ "keys", + /* 70 328 T_Keysdir */ "keysdir", + /* 71 329 T_Kod */ "kod", + /* 72 330 T_Mssntp */ "mssntp", + /* 73 331 T_Leapfile */ "leapfile", + /* 74 332 T_Leapsmearinterval */ "leapsmearinterval", + /* 75 333 T_Limited */ "limited", + /* 76 334 T_Link */ "link", + /* 77 335 T_Listen */ "listen", + /* 78 336 T_Logconfig */ "logconfig", + /* 79 337 T_Logfile */ "logfile", + /* 80 338 T_Loopstats */ "loopstats", + /* 81 339 T_Lowpriotrap */ "lowpriotrap", + /* 82 340 T_Manycastclient */ "manycastclient", + /* 83 341 T_Manycastserver */ "manycastserver", + /* 84 342 T_Mask */ "mask", + /* 85 343 T_Maxage */ "maxage", + /* 86 344 T_Maxclock */ "maxclock", + /* 87 345 T_Maxdepth */ "maxdepth", + /* 88 346 T_Maxdist */ "maxdist", + /* 89 347 T_Maxmem */ "maxmem", + /* 90 348 T_Maxpoll */ "maxpoll", + /* 91 349 T_Mdnstries */ "mdnstries", + /* 92 350 T_Mem */ "mem", + /* 93 351 T_Memlock */ "memlock", + /* 94 352 T_Minclock */ "minclock", + /* 95 353 T_Mindepth */ "mindepth", + /* 96 354 T_Mindist */ "mindist", + /* 97 355 T_Minimum */ "minimum", + /* 98 356 T_Minpoll */ "minpoll", + /* 99 357 T_Minsane */ "minsane", + /* 100 358 T_Mode */ "mode", + /* 101 359 T_Mode7 */ "mode7", + /* 102 360 T_Monitor */ "monitor", + /* 103 361 T_Month */ "month", + /* 104 362 T_Mru */ "mru", + /* 105 363 T_Multicastclient */ "multicastclient", + /* 106 364 T_Nic */ "nic", + /* 107 365 T_Nolink */ "nolink", + /* 108 366 T_Nomodify */ "nomodify", + /* 109 367 T_Nomrulist */ "nomrulist", + /* 110 368 T_None */ "none", + /* 111 369 T_Nonvolatile */ "nonvolatile", + /* 112 370 T_Nopeer */ "nopeer", + /* 113 371 T_Noquery */ "noquery", + /* 114 372 T_Noselect */ "noselect", + /* 115 373 T_Noserve */ "noserve", + /* 116 374 T_Notrap */ "notrap", + /* 117 375 T_Notrust */ "notrust", + /* 118 376 T_Ntp */ "ntp", + /* 119 377 T_Ntpport */ "ntpport", + /* 120 378 T_NtpSignDsocket */ "ntpsigndsocket", + /* 121 379 T_Orphan */ "orphan", + /* 122 380 T_Orphanwait */ "orphanwait", + /* 123 381 T_PCEdigest */ "peer_clear_digest_early", + /* 124 382 T_Panic */ "panic", + /* 125 383 T_Peer */ "peer", + /* 126 384 T_Peerstats */ "peerstats", + /* 127 385 T_Phone */ "phone", + /* 128 386 T_Pid */ "pid", + /* 129 387 T_Pidfile */ "pidfile", + /* 130 388 T_Pool */ "pool", + /* 131 389 T_Port */ "port", + /* 132 390 T_Preempt */ "preempt", + /* 133 391 T_Prefer */ "prefer", + /* 134 392 T_Protostats */ "protostats", + /* 135 393 T_Pw */ "pw", + /* 136 394 T_Randfile */ "randfile", + /* 137 395 T_Rawstats */ "rawstats", + /* 138 396 T_Refid */ "refid", + /* 139 397 T_Requestkey */ "requestkey", + /* 140 398 T_Reset */ "reset", + /* 141 399 T_Restrict */ "restrict", + /* 142 400 T_Revoke */ "revoke", + /* 143 401 T_Rlimit */ "rlimit", + /* 144 402 T_Saveconfigdir */ "saveconfigdir", + /* 145 403 T_Server */ "server", + /* 146 404 T_Setvar */ "setvar", + /* 147 405 T_Source */ "source", + /* 148 406 T_Stacksize */ "stacksize", + /* 149 407 T_Statistics */ "statistics", + /* 150 408 T_Stats */ "stats", + /* 151 409 T_Statsdir */ "statsdir", + /* 152 410 T_Step */ "step", + /* 153 411 T_Stepback */ "stepback", + /* 154 412 T_Stepfwd */ "stepfwd", + /* 155 413 T_Stepout */ "stepout", + /* 156 414 T_Stratum */ "stratum", + /* 157 415 T_String */ NULL, + /* 158 416 T_Sys */ "sys", + /* 159 417 T_Sysstats */ "sysstats", + /* 160 418 T_Tick */ "tick", + /* 161 419 T_Time1 */ "time1", + /* 162 420 T_Time2 */ "time2", + /* 163 421 T_Timer */ "timer", + /* 164 422 T_Timingstats */ "timingstats", + /* 165 423 T_Tinker */ "tinker", + /* 166 424 T_Tos */ "tos", + /* 167 425 T_Trap */ "trap", + /* 168 426 T_True */ "true", + /* 169 427 T_Trustedkey */ "trustedkey", + /* 170 428 T_Ttl */ "ttl", + /* 171 429 T_Type */ "type", + /* 172 430 T_U_int */ NULL, + /* 173 431 T_UEcrypto */ "unpeer_crypto_early", + /* 174 432 T_UEcryptonak */ "unpeer_crypto_nak_early", + /* 175 433 T_UEdigest */ "unpeer_digest_early", + /* 176 434 T_Unconfig */ "unconfig", + /* 177 435 T_Unpeer */ "unpeer", + /* 178 436 T_Version */ "version", + /* 179 437 T_WanderThreshold */ NULL, + /* 180 438 T_Week */ "week", + /* 181 439 T_Wildcard */ "wildcard", + /* 182 440 T_Xleave */ "xleave", + /* 183 441 T_Year */ "year", + /* 184 442 T_Flag */ NULL, + /* 185 443 T_EOC */ NULL, + /* 186 444 T_Simulate */ "simulate", + /* 187 445 T_Beep_Delay */ "beep_delay", + /* 188 446 T_Sim_Duration */ "simulation_duration", + /* 189 447 T_Server_Offset */ "server_offset", + /* 190 448 T_Duration */ "duration", + /* 191 449 T_Freq_Offset */ "freq_offset", + /* 192 450 T_Wander */ "wander", + /* 193 451 T_Jitter */ "jitter", + /* 194 452 T_Prop_Delay */ "prop_delay", + /* 195 453 T_Proc_Delay */ "proc_delay" }; -#define SCANNER_INIT_S 906 +#define SCANNER_INIT_S 915 -const scan_state sst[909] = { +const scan_state sst[918] = { /*SS_T( ch, f-by, match, other ), */ 0, /* 0 */ - S_ST( '-', 3, 323, 0 ), /* 1 */ + S_ST( '-', 3, 324, 0 ), /* 1 */ S_ST( '.', 3, 3, 1 ), /* 2 */ - S_ST( '.', 3, 291, 0 ), /* 3 . */ + S_ST( '.', 3, 292, 0 ), /* 3 . */ S_ST( 'a', 3, 23, 2 ), /* 4 */ S_ST( 'b', 3, 6, 0 ), /* 5 a */ S_ST( 'b', 3, 7, 0 ), /* 6 ab */ @@ -240,236 +241,236 @@ const scan_state sst[909] = { S_ST( 'r', 3, 26, 0 ), /* 25 ave */ S_ST( 'a', 3, 27, 0 ), /* 26 aver */ S_ST( 'g', 3, 266, 0 ), /* 27 avera */ - S_ST( 'b', 3, 61, 4 ), /* 28 */ - S_ST( 'c', 3, 30, 0 ), /* 29 b */ + S_ST( 'b', 3, 69, 4 ), /* 28 */ + S_ST( 'c', 3, 34, 0 ), /* 29 b */ S_ST( 'l', 3, 31, 0 ), /* 30 bc */ S_ST( 'i', 3, 32, 0 ), /* 31 bcl */ S_ST( 'e', 3, 33, 0 ), /* 32 bcli */ S_ST( 'n', 3, 267, 0 ), /* 33 bclie */ - S_ST( 'e', 3, 38, 29 ), /* 34 b */ - S_ST( 'a', 3, 36, 0 ), /* 35 be */ - S_ST( 'c', 3, 37, 0 ), /* 36 bea */ - S_ST( 'o', 3, 268, 0 ), /* 37 beac */ - S_ST( 'e', 3, 39, 35 ), /* 38 be */ - S_ST( 'p', 3, 40, 0 ), /* 39 bee */ - S_ST( '_', 3, 41, 0 ), /* 40 beep */ - S_ST( 'd', 3, 42, 0 ), /* 41 beep_ */ - S_ST( 'e', 3, 43, 0 ), /* 42 beep_d */ - S_ST( 'l', 3, 44, 0 ), /* 43 beep_de */ - S_ST( 'a', 3, 444, 0 ), /* 44 beep_del */ - S_ST( 'r', 3, 46, 34 ), /* 45 b */ - S_ST( 'o', 3, 47, 0 ), /* 46 br */ - S_ST( 'a', 3, 48, 0 ), /* 47 bro */ - S_ST( 'd', 3, 49, 0 ), /* 48 broa */ - S_ST( 'c', 3, 50, 0 ), /* 49 broad */ - S_ST( 'a', 3, 51, 0 ), /* 50 broadc */ - S_ST( 's', 3, 269, 0 ), /* 51 broadca */ - S_ST( 'c', 3, 53, 0 ), /* 52 broadcast */ - S_ST( 'l', 3, 54, 0 ), /* 53 broadcastc */ - S_ST( 'i', 3, 55, 0 ), /* 54 broadcastcl */ - S_ST( 'e', 3, 56, 0 ), /* 55 broadcastcli */ - S_ST( 'n', 3, 270, 0 ), /* 56 broadcastclie */ - S_ST( 'd', 3, 58, 52 ), /* 57 broadcast */ - S_ST( 'e', 3, 59, 0 ), /* 58 broadcastd */ - S_ST( 'l', 3, 60, 0 ), /* 59 broadcastde */ - S_ST( 'a', 3, 271, 0 ), /* 60 broadcastdel */ - S_ST( 'u', 3, 62, 45 ), /* 61 b */ - S_ST( 'r', 3, 63, 0 ), /* 62 bu */ - S_ST( 's', 3, 272, 0 ), /* 63 bur */ - S_ST( 'c', 3, 104, 28 ), /* 64 */ - S_ST( 'a', 3, 66, 0 ), /* 65 c */ - S_ST( 'l', 3, 67, 0 ), /* 66 ca */ - S_ST( 'i', 3, 68, 0 ), /* 67 cal */ - S_ST( 'b', 3, 69, 0 ), /* 68 cali */ - S_ST( 'r', 3, 70, 0 ), /* 69 calib */ - S_ST( 'a', 3, 71, 0 ), /* 70 calibr */ - S_ST( 't', 3, 273, 0 ), /* 71 calibra */ - S_ST( 'e', 3, 73, 65 ), /* 72 c */ - S_ST( 'i', 3, 74, 0 ), /* 73 ce */ - S_ST( 'l', 3, 75, 0 ), /* 74 cei */ - S_ST( 'i', 3, 76, 0 ), /* 75 ceil */ - S_ST( 'n', 3, 274, 0 ), /* 76 ceili */ - S_ST( 'l', 3, 78, 72 ), /* 77 c */ - S_ST( 'o', 3, 79, 0 ), /* 78 cl */ - S_ST( 'c', 3, 80, 0 ), /* 79 clo */ - S_ST( 'k', 3, 81, 0 ), /* 80 cloc */ - S_ST( 's', 3, 82, 0 ), /* 81 clock */ - S_ST( 't', 3, 83, 0 ), /* 82 clocks */ - S_ST( 'a', 3, 84, 0 ), /* 83 clockst */ - S_ST( 't', 3, 275, 0 ), /* 84 clocksta */ - S_ST( 'o', 3, 89, 77 ), /* 85 c */ - S_ST( 'h', 3, 87, 0 ), /* 86 co */ - S_ST( 'o', 3, 88, 0 ), /* 87 coh */ - S_ST( 'r', 3, 276, 0 ), /* 88 coho */ - S_ST( 'n', 3, 90, 86 ), /* 89 co */ - S_ST( 't', 3, 91, 0 ), /* 90 con */ - S_ST( 'r', 3, 92, 0 ), /* 91 cont */ - S_ST( 'o', 3, 93, 0 ), /* 92 contr */ - S_ST( 'l', 3, 94, 0 ), /* 93 contro */ - S_ST( 'k', 3, 95, 0 ), /* 94 control */ - S_ST( 'e', 3, 277, 0 ), /* 95 controlk */ - S_ST( 'r', 3, 97, 85 ), /* 96 c */ - S_ST( 'y', 3, 98, 0 ), /* 97 cr */ - S_ST( 'p', 3, 99, 0 ), /* 98 cry */ - S_ST( 't', 3, 278, 0 ), /* 99 cryp */ - S_ST( 's', 3, 101, 0 ), /* 100 crypto */ - S_ST( 't', 3, 102, 0 ), /* 101 cryptos */ - S_ST( 'a', 3, 103, 0 ), /* 102 cryptost */ - S_ST( 't', 3, 279, 0 ), /* 103 cryptosta */ - S_ST( 't', 3, 280, 96 ), /* 104 c */ - S_ST( 'd', 3, 139, 64 ), /* 105 */ - S_ST( 'a', 3, 281, 0 ), /* 106 d */ - S_ST( 'e', 3, 108, 106 ), /* 107 d */ - S_ST( 'f', 3, 109, 0 ), /* 108 de */ - S_ST( 'a', 3, 110, 0 ), /* 109 def */ - S_ST( 'u', 3, 111, 0 ), /* 110 defa */ - S_ST( 'l', 3, 282, 0 ), /* 111 defau */ - S_ST( 'i', 3, 116, 107 ), /* 112 d */ - S_ST( 'g', 3, 114, 0 ), /* 113 di */ - S_ST( 'e', 3, 115, 0 ), /* 114 dig */ - S_ST( 's', 3, 283, 0 ), /* 115 dige */ - S_ST( 's', 3, 123, 113 ), /* 116 di */ - S_ST( 'a', 3, 118, 0 ), /* 117 dis */ - S_ST( 'b', 3, 119, 0 ), /* 118 disa */ - S_ST( 'l', 3, 284, 0 ), /* 119 disab */ - S_ST( 'c', 3, 121, 117 ), /* 120 dis */ - S_ST( 'a', 3, 122, 0 ), /* 121 disc */ - S_ST( 'r', 3, 285, 0 ), /* 122 disca */ - S_ST( 'p', 3, 124, 120 ), /* 123 dis */ - S_ST( 'e', 3, 125, 0 ), /* 124 disp */ - S_ST( 'r', 3, 126, 0 ), /* 125 dispe */ - S_ST( 's', 3, 127, 0 ), /* 126 disper */ - S_ST( 'i', 3, 128, 0 ), /* 127 dispers */ - S_ST( 'o', 3, 286, 0 ), /* 128 dispersi */ - S_ST( 'r', 3, 136, 112 ), /* 129 d */ - S_ST( 'i', 3, 131, 0 ), /* 130 dr */ - S_ST( 'f', 3, 132, 0 ), /* 131 dri */ - S_ST( 't', 3, 133, 0 ), /* 132 drif */ - S_ST( 'f', 3, 134, 0 ), /* 133 drift */ - S_ST( 'i', 3, 135, 0 ), /* 134 driftf */ - S_ST( 'l', 3, 288, 0 ), /* 135 driftfi */ - S_ST( 'o', 3, 289, 130 ), /* 136 dr */ - S_ST( 's', 3, 138, 129 ), /* 137 d */ - S_ST( 'c', 3, 290, 0 ), /* 138 ds */ - S_ST( 'u', 3, 140, 137 ), /* 139 d */ - S_ST( 'r', 3, 141, 0 ), /* 140 du */ - S_ST( 'a', 3, 142, 0 ), /* 141 dur */ - S_ST( 't', 3, 143, 0 ), /* 142 dura */ - S_ST( 'i', 3, 144, 0 ), /* 143 durat */ - S_ST( 'o', 3, 447, 0 ), /* 144 durati */ - S_ST( 'e', 3, 146, 105 ), /* 145 */ - S_ST( 'n', 3, 293, 0 ), /* 146 e */ - S_ST( 'a', 3, 148, 0 ), /* 147 en */ - S_ST( 'b', 3, 149, 0 ), /* 148 ena */ - S_ST( 'l', 3, 292, 0 ), /* 149 enab */ - S_ST( 'f', 3, 171, 145 ), /* 150 */ - S_ST( 'i', 3, 152, 0 ), /* 151 f */ - S_ST( 'l', 3, 295, 0 ), /* 152 fi */ - S_ST( 'g', 3, 154, 0 ), /* 153 file */ - S_ST( 'e', 3, 296, 0 ), /* 154 fileg */ - S_ST( 'n', 3, 156, 153 ), /* 155 file */ - S_ST( 'u', 3, 297, 0 ), /* 156 filen */ - S_ST( 'l', 3, 161, 151 ), /* 157 f */ - S_ST( 'a', 3, 160, 0 ), /* 158 fl */ - S_ST( 'g', 3, 301, 0 ), /* 159 fla */ - S_ST( 'k', 3, 302, 159 ), /* 160 fla */ - S_ST( 'o', 3, 162, 158 ), /* 161 fl */ - S_ST( 'o', 3, 303, 0 ), /* 162 flo */ - S_ST( 'r', 3, 164, 157 ), /* 163 f */ - S_ST( 'e', 3, 304, 0 ), /* 164 fr */ - S_ST( '_', 3, 166, 0 ), /* 165 freq */ - S_ST( 'o', 3, 167, 0 ), /* 166 freq_ */ - S_ST( 'f', 3, 168, 0 ), /* 167 freq_o */ - S_ST( 'f', 3, 169, 0 ), /* 168 freq_of */ - S_ST( 's', 3, 170, 0 ), /* 169 freq_off */ - S_ST( 'e', 3, 448, 0 ), /* 170 freq_offs */ - S_ST( 'u', 3, 172, 163 ), /* 171 f */ - S_ST( 'd', 3, 173, 0 ), /* 172 fu */ - S_ST( 'g', 3, 305, 0 ), /* 173 fud */ - S_ST( 'h', 3, 177, 150 ), /* 174 */ - S_ST( 'o', 3, 176, 0 ), /* 175 h */ - S_ST( 's', 3, 306, 0 ), /* 176 ho */ - S_ST( 'u', 3, 178, 175 ), /* 177 h */ - S_ST( 'f', 3, 179, 0 ), /* 178 hu */ - S_ST( 'f', 3, 180, 0 ), /* 179 huf */ - S_ST( 'p', 3, 181, 0 ), /* 180 huff */ - S_ST( 'u', 3, 182, 0 ), /* 181 huffp */ - S_ST( 'f', 3, 307, 0 ), /* 182 huffpu */ - S_ST( 'i', 3, 224, 174 ), /* 183 */ - S_ST( 'b', 3, 185, 0 ), /* 184 i */ - S_ST( 'u', 3, 186, 0 ), /* 185 ib */ - S_ST( 'r', 3, 187, 0 ), /* 186 ibu */ - S_ST( 's', 3, 308, 0 ), /* 187 ibur */ - S_ST( 'd', 3, 189, 184 ), /* 188 i */ - S_ST( 'e', 3, 190, 0 ), /* 189 id */ - S_ST( 'n', 3, 309, 0 ), /* 190 ide */ - S_ST( 'g', 3, 192, 188 ), /* 191 i */ - S_ST( 'n', 3, 193, 0 ), /* 192 ig */ - S_ST( 'o', 3, 194, 0 ), /* 193 ign */ - S_ST( 'r', 3, 310, 0 ), /* 194 igno */ - S_ST( 'n', 3, 218, 191 ), /* 195 i */ - S_ST( 'c', 3, 208, 0 ), /* 196 in */ - S_ST( 'a', 3, 198, 0 ), /* 197 inc */ - S_ST( 'l', 3, 199, 0 ), /* 198 inca */ - S_ST( 'l', 3, 200, 0 ), /* 199 incal */ - S_ST( 'o', 3, 311, 0 ), /* 200 incall */ - S_ST( 'l', 3, 202, 197 ), /* 201 inc */ - S_ST( 'u', 3, 203, 0 ), /* 202 incl */ - S_ST( 'd', 3, 204, 0 ), /* 203 inclu */ - S_ST( 'e', 3, 205, 0 ), /* 204 includ */ - S_ST( 'f', 3, 206, 0 ), /* 205 include */ - S_ST( 'i', 3, 207, 0 ), /* 206 includef */ - S_ST( 'l', 3, 315, 0 ), /* 207 includefi */ - S_ST( 'm', 3, 209, 201 ), /* 208 inc */ - S_ST( 'e', 3, 312, 0 ), /* 209 incm */ - S_ST( 'i', 3, 211, 196 ), /* 210 in */ - S_ST( 't', 3, 216, 0 ), /* 211 ini */ - S_ST( 'a', 3, 213, 0 ), /* 212 init */ - S_ST( 'l', 3, 214, 0 ), /* 213 inita */ - S_ST( 'l', 3, 215, 0 ), /* 214 inital */ - S_ST( 'o', 3, 313, 0 ), /* 215 initall */ - S_ST( 'm', 3, 217, 212 ), /* 216 init */ - S_ST( 'e', 3, 314, 0 ), /* 217 initm */ - S_ST( 't', 3, 219, 210 ), /* 218 in */ - S_ST( 'e', 3, 220, 0 ), /* 219 int */ - S_ST( 'r', 3, 221, 0 ), /* 220 inte */ - S_ST( 'f', 3, 222, 0 ), /* 221 inter */ - S_ST( 'a', 3, 223, 0 ), /* 222 interf */ - S_ST( 'c', 3, 317, 0 ), /* 223 interfa */ - S_ST( 'p', 3, 225, 319 ), /* 224 i */ - S_ST( 'v', 3, 322, 0 ), /* 225 ip */ - S_ST( 'j', 3, 227, 183 ), /* 226 */ - S_ST( 'i', 3, 228, 0 ), /* 227 j */ - S_ST( 't', 3, 229, 0 ), /* 228 ji */ - S_ST( 't', 3, 230, 0 ), /* 229 jit */ - S_ST( 'e', 3, 450, 0 ), /* 230 jitt */ - S_ST( 'k', 3, 238, 226 ), /* 231 */ - S_ST( 'e', 3, 325, 0 ), /* 232 k */ - S_ST( 'r', 3, 234, 0 ), /* 233 ke */ - S_ST( 'n', 3, 235, 0 ), /* 234 ker */ - S_ST( 'e', 3, 324, 0 ), /* 235 kern */ - S_ST( 'd', 3, 237, 0 ), /* 236 keys */ - S_ST( 'i', 3, 327, 0 ), /* 237 keysd */ - S_ST( 'o', 3, 328, 232 ), /* 238 k */ - S_ST( 'l', 3, 453, 231 ), /* 239 */ - S_ST( 'e', 3, 241, 0 ), /* 240 l */ - S_ST( 'a', 3, 242, 0 ), /* 241 le */ - S_ST( 'p', 3, 246, 0 ), /* 242 lea */ - S_ST( 'f', 3, 244, 0 ), /* 243 leap */ - S_ST( 'i', 3, 245, 0 ), /* 244 leapf */ - S_ST( 'l', 3, 330, 0 ), /* 245 leapfi */ - S_ST( 's', 3, 247, 243 ), /* 246 leap */ - S_ST( 'm', 3, 248, 0 ), /* 247 leaps */ - S_ST( 'e', 3, 249, 0 ), /* 248 leapsm */ - S_ST( 'a', 3, 250, 0 ), /* 249 leapsme */ - S_ST( 'r', 3, 251, 0 ), /* 250 leapsmea */ - S_ST( 'i', 3, 252, 0 ), /* 251 leapsmear */ - S_ST( 'n', 3, 253, 0 ), /* 252 leapsmeari */ - S_ST( 't', 3, 254, 0 ), /* 253 leapsmearin */ - S_ST( 'e', 3, 255, 0 ), /* 254 leapsmearint */ - S_ST( 'r', 3, 256, 0 ), /* 255 leapsmearinte */ - S_ST( 'v', 3, 257, 0 ), /* 256 leapsmearinter */ - S_ST( 'a', 3, 331, 0 ), /* 257 leapsmearinterv */ + S_ST( 'p', 3, 35, 30 ), /* 34 bc */ + S_ST( 'o', 3, 36, 0 ), /* 35 bcp */ + S_ST( 'l', 3, 37, 0 ), /* 36 bcpo */ + S_ST( 'l', 3, 38, 0 ), /* 37 bcpol */ + S_ST( 'b', 3, 39, 0 ), /* 38 bcpoll */ + S_ST( 's', 3, 40, 0 ), /* 39 bcpollb */ + S_ST( 't', 3, 41, 0 ), /* 40 bcpollbs */ + S_ST( 'e', 3, 268, 0 ), /* 41 bcpollbst */ + S_ST( 'e', 3, 46, 29 ), /* 42 b */ + S_ST( 'a', 3, 44, 0 ), /* 43 be */ + S_ST( 'c', 3, 45, 0 ), /* 44 bea */ + S_ST( 'o', 3, 269, 0 ), /* 45 beac */ + S_ST( 'e', 3, 47, 43 ), /* 46 be */ + S_ST( 'p', 3, 48, 0 ), /* 47 bee */ + S_ST( '_', 3, 49, 0 ), /* 48 beep */ + S_ST( 'd', 3, 50, 0 ), /* 49 beep_ */ + S_ST( 'e', 3, 51, 0 ), /* 50 beep_d */ + S_ST( 'l', 3, 52, 0 ), /* 51 beep_de */ + S_ST( 'a', 3, 445, 0 ), /* 52 beep_del */ + S_ST( 'r', 3, 54, 42 ), /* 53 b */ + S_ST( 'o', 3, 55, 0 ), /* 54 br */ + S_ST( 'a', 3, 56, 0 ), /* 55 bro */ + S_ST( 'd', 3, 57, 0 ), /* 56 broa */ + S_ST( 'c', 3, 58, 0 ), /* 57 broad */ + S_ST( 'a', 3, 59, 0 ), /* 58 broadc */ + S_ST( 's', 3, 270, 0 ), /* 59 broadca */ + S_ST( 'c', 3, 61, 0 ), /* 60 broadcast */ + S_ST( 'l', 3, 62, 0 ), /* 61 broadcastc */ + S_ST( 'i', 3, 63, 0 ), /* 62 broadcastcl */ + S_ST( 'e', 3, 64, 0 ), /* 63 broadcastcli */ + S_ST( 'n', 3, 271, 0 ), /* 64 broadcastclie */ + S_ST( 'd', 3, 66, 60 ), /* 65 broadcast */ + S_ST( 'e', 3, 67, 0 ), /* 66 broadcastd */ + S_ST( 'l', 3, 68, 0 ), /* 67 broadcastde */ + S_ST( 'a', 3, 272, 0 ), /* 68 broadcastdel */ + S_ST( 'u', 3, 70, 53 ), /* 69 b */ + S_ST( 'r', 3, 71, 0 ), /* 70 bu */ + S_ST( 's', 3, 273, 0 ), /* 71 bur */ + S_ST( 'c', 3, 112, 28 ), /* 72 */ + S_ST( 'a', 3, 74, 0 ), /* 73 c */ + S_ST( 'l', 3, 75, 0 ), /* 74 ca */ + S_ST( 'i', 3, 76, 0 ), /* 75 cal */ + S_ST( 'b', 3, 77, 0 ), /* 76 cali */ + S_ST( 'r', 3, 78, 0 ), /* 77 calib */ + S_ST( 'a', 3, 79, 0 ), /* 78 calibr */ + S_ST( 't', 3, 274, 0 ), /* 79 calibra */ + S_ST( 'e', 3, 81, 73 ), /* 80 c */ + S_ST( 'i', 3, 82, 0 ), /* 81 ce */ + S_ST( 'l', 3, 83, 0 ), /* 82 cei */ + S_ST( 'i', 3, 84, 0 ), /* 83 ceil */ + S_ST( 'n', 3, 275, 0 ), /* 84 ceili */ + S_ST( 'l', 3, 86, 80 ), /* 85 c */ + S_ST( 'o', 3, 87, 0 ), /* 86 cl */ + S_ST( 'c', 3, 88, 0 ), /* 87 clo */ + S_ST( 'k', 3, 89, 0 ), /* 88 cloc */ + S_ST( 's', 3, 90, 0 ), /* 89 clock */ + S_ST( 't', 3, 91, 0 ), /* 90 clocks */ + S_ST( 'a', 3, 92, 0 ), /* 91 clockst */ + S_ST( 't', 3, 276, 0 ), /* 92 clocksta */ + S_ST( 'o', 3, 97, 85 ), /* 93 c */ + S_ST( 'h', 3, 95, 0 ), /* 94 co */ + S_ST( 'o', 3, 96, 0 ), /* 95 coh */ + S_ST( 'r', 3, 277, 0 ), /* 96 coho */ + S_ST( 'n', 3, 98, 94 ), /* 97 co */ + S_ST( 't', 3, 99, 0 ), /* 98 con */ + S_ST( 'r', 3, 100, 0 ), /* 99 cont */ + S_ST( 'o', 3, 101, 0 ), /* 100 contr */ + S_ST( 'l', 3, 102, 0 ), /* 101 contro */ + S_ST( 'k', 3, 103, 0 ), /* 102 control */ + S_ST( 'e', 3, 278, 0 ), /* 103 controlk */ + S_ST( 'r', 3, 105, 93 ), /* 104 c */ + S_ST( 'y', 3, 106, 0 ), /* 105 cr */ + S_ST( 'p', 3, 107, 0 ), /* 106 cry */ + S_ST( 't', 3, 279, 0 ), /* 107 cryp */ + S_ST( 's', 3, 109, 0 ), /* 108 crypto */ + S_ST( 't', 3, 110, 0 ), /* 109 cryptos */ + S_ST( 'a', 3, 111, 0 ), /* 110 cryptost */ + S_ST( 't', 3, 280, 0 ), /* 111 cryptosta */ + S_ST( 't', 3, 281, 104 ), /* 112 c */ + S_ST( 'd', 3, 147, 72 ), /* 113 */ + S_ST( 'a', 3, 282, 0 ), /* 114 d */ + S_ST( 'e', 3, 116, 114 ), /* 115 d */ + S_ST( 'f', 3, 117, 0 ), /* 116 de */ + S_ST( 'a', 3, 118, 0 ), /* 117 def */ + S_ST( 'u', 3, 119, 0 ), /* 118 defa */ + S_ST( 'l', 3, 283, 0 ), /* 119 defau */ + S_ST( 'i', 3, 124, 115 ), /* 120 d */ + S_ST( 'g', 3, 122, 0 ), /* 121 di */ + S_ST( 'e', 3, 123, 0 ), /* 122 dig */ + S_ST( 's', 3, 284, 0 ), /* 123 dige */ + S_ST( 's', 3, 131, 121 ), /* 124 di */ + S_ST( 'a', 3, 126, 0 ), /* 125 dis */ + S_ST( 'b', 3, 127, 0 ), /* 126 disa */ + S_ST( 'l', 3, 285, 0 ), /* 127 disab */ + S_ST( 'c', 3, 129, 125 ), /* 128 dis */ + S_ST( 'a', 3, 130, 0 ), /* 129 disc */ + S_ST( 'r', 3, 286, 0 ), /* 130 disca */ + S_ST( 'p', 3, 132, 128 ), /* 131 dis */ + S_ST( 'e', 3, 133, 0 ), /* 132 disp */ + S_ST( 'r', 3, 134, 0 ), /* 133 dispe */ + S_ST( 's', 3, 135, 0 ), /* 134 disper */ + S_ST( 'i', 3, 136, 0 ), /* 135 dispers */ + S_ST( 'o', 3, 287, 0 ), /* 136 dispersi */ + S_ST( 'r', 3, 144, 120 ), /* 137 d */ + S_ST( 'i', 3, 139, 0 ), /* 138 dr */ + S_ST( 'f', 3, 140, 0 ), /* 139 dri */ + S_ST( 't', 3, 141, 0 ), /* 140 drif */ + S_ST( 'f', 3, 142, 0 ), /* 141 drift */ + S_ST( 'i', 3, 143, 0 ), /* 142 driftf */ + S_ST( 'l', 3, 289, 0 ), /* 143 driftfi */ + S_ST( 'o', 3, 290, 138 ), /* 144 dr */ + S_ST( 's', 3, 146, 137 ), /* 145 d */ + S_ST( 'c', 3, 291, 0 ), /* 146 ds */ + S_ST( 'u', 3, 148, 145 ), /* 147 d */ + S_ST( 'r', 3, 149, 0 ), /* 148 du */ + S_ST( 'a', 3, 150, 0 ), /* 149 dur */ + S_ST( 't', 3, 151, 0 ), /* 150 dura */ + S_ST( 'i', 3, 152, 0 ), /* 151 durat */ + S_ST( 'o', 3, 448, 0 ), /* 152 durati */ + S_ST( 'e', 3, 154, 113 ), /* 153 */ + S_ST( 'n', 3, 294, 0 ), /* 154 e */ + S_ST( 'a', 3, 156, 0 ), /* 155 en */ + S_ST( 'b', 3, 157, 0 ), /* 156 ena */ + S_ST( 'l', 3, 293, 0 ), /* 157 enab */ + S_ST( 'f', 3, 179, 153 ), /* 158 */ + S_ST( 'i', 3, 160, 0 ), /* 159 f */ + S_ST( 'l', 3, 296, 0 ), /* 160 fi */ + S_ST( 'g', 3, 162, 0 ), /* 161 file */ + S_ST( 'e', 3, 297, 0 ), /* 162 fileg */ + S_ST( 'n', 3, 164, 161 ), /* 163 file */ + S_ST( 'u', 3, 298, 0 ), /* 164 filen */ + S_ST( 'l', 3, 169, 159 ), /* 165 f */ + S_ST( 'a', 3, 168, 0 ), /* 166 fl */ + S_ST( 'g', 3, 302, 0 ), /* 167 fla */ + S_ST( 'k', 3, 303, 167 ), /* 168 fla */ + S_ST( 'o', 3, 170, 166 ), /* 169 fl */ + S_ST( 'o', 3, 304, 0 ), /* 170 flo */ + S_ST( 'r', 3, 172, 165 ), /* 171 f */ + S_ST( 'e', 3, 305, 0 ), /* 172 fr */ + S_ST( '_', 3, 174, 0 ), /* 173 freq */ + S_ST( 'o', 3, 175, 0 ), /* 174 freq_ */ + S_ST( 'f', 3, 176, 0 ), /* 175 freq_o */ + S_ST( 'f', 3, 177, 0 ), /* 176 freq_of */ + S_ST( 's', 3, 178, 0 ), /* 177 freq_off */ + S_ST( 'e', 3, 449, 0 ), /* 178 freq_offs */ + S_ST( 'u', 3, 180, 171 ), /* 179 f */ + S_ST( 'd', 3, 181, 0 ), /* 180 fu */ + S_ST( 'g', 3, 306, 0 ), /* 181 fud */ + S_ST( 'h', 3, 185, 158 ), /* 182 */ + S_ST( 'o', 3, 184, 0 ), /* 183 h */ + S_ST( 's', 3, 307, 0 ), /* 184 ho */ + S_ST( 'u', 3, 186, 183 ), /* 185 h */ + S_ST( 'f', 3, 187, 0 ), /* 186 hu */ + S_ST( 'f', 3, 188, 0 ), /* 187 huf */ + S_ST( 'p', 3, 189, 0 ), /* 188 huff */ + S_ST( 'u', 3, 190, 0 ), /* 189 huffp */ + S_ST( 'f', 3, 308, 0 ), /* 190 huffpu */ + S_ST( 'i', 3, 232, 182 ), /* 191 */ + S_ST( 'b', 3, 193, 0 ), /* 192 i */ + S_ST( 'u', 3, 194, 0 ), /* 193 ib */ + S_ST( 'r', 3, 195, 0 ), /* 194 ibu */ + S_ST( 's', 3, 309, 0 ), /* 195 ibur */ + S_ST( 'd', 3, 197, 192 ), /* 196 i */ + S_ST( 'e', 3, 198, 0 ), /* 197 id */ + S_ST( 'n', 3, 310, 0 ), /* 198 ide */ + S_ST( 'g', 3, 200, 196 ), /* 199 i */ + S_ST( 'n', 3, 201, 0 ), /* 200 ig */ + S_ST( 'o', 3, 202, 0 ), /* 201 ign */ + S_ST( 'r', 3, 311, 0 ), /* 202 igno */ + S_ST( 'n', 3, 226, 199 ), /* 203 i */ + S_ST( 'c', 3, 216, 0 ), /* 204 in */ + S_ST( 'a', 3, 206, 0 ), /* 205 inc */ + S_ST( 'l', 3, 207, 0 ), /* 206 inca */ + S_ST( 'l', 3, 208, 0 ), /* 207 incal */ + S_ST( 'o', 3, 312, 0 ), /* 208 incall */ + S_ST( 'l', 3, 210, 205 ), /* 209 inc */ + S_ST( 'u', 3, 211, 0 ), /* 210 incl */ + S_ST( 'd', 3, 212, 0 ), /* 211 inclu */ + S_ST( 'e', 3, 213, 0 ), /* 212 includ */ + S_ST( 'f', 3, 214, 0 ), /* 213 include */ + S_ST( 'i', 3, 215, 0 ), /* 214 includef */ + S_ST( 'l', 3, 316, 0 ), /* 215 includefi */ + S_ST( 'm', 3, 217, 209 ), /* 216 inc */ + S_ST( 'e', 3, 313, 0 ), /* 217 incm */ + S_ST( 'i', 3, 219, 204 ), /* 218 in */ + S_ST( 't', 3, 224, 0 ), /* 219 ini */ + S_ST( 'a', 3, 221, 0 ), /* 220 init */ + S_ST( 'l', 3, 222, 0 ), /* 221 inita */ + S_ST( 'l', 3, 223, 0 ), /* 222 inital */ + S_ST( 'o', 3, 314, 0 ), /* 223 initall */ + S_ST( 'm', 3, 225, 220 ), /* 224 init */ + S_ST( 'e', 3, 315, 0 ), /* 225 initm */ + S_ST( 't', 3, 227, 218 ), /* 226 in */ + S_ST( 'e', 3, 228, 0 ), /* 227 int */ + S_ST( 'r', 3, 229, 0 ), /* 228 inte */ + S_ST( 'f', 3, 230, 0 ), /* 229 inter */ + S_ST( 'a', 3, 231, 0 ), /* 230 interf */ + S_ST( 'c', 3, 318, 0 ), /* 231 interfa */ + S_ST( 'p', 3, 233, 320 ), /* 232 i */ + S_ST( 'v', 3, 323, 0 ), /* 233 ip */ + S_ST( 'j', 3, 235, 191 ), /* 234 */ + S_ST( 'i', 3, 236, 0 ), /* 235 j */ + S_ST( 't', 3, 237, 0 ), /* 236 ji */ + S_ST( 't', 3, 238, 0 ), /* 237 jit */ + S_ST( 'e', 3, 451, 0 ), /* 238 jitt */ + S_ST( 'k', 3, 246, 234 ), /* 239 */ + S_ST( 'e', 3, 326, 0 ), /* 240 k */ + S_ST( 'r', 3, 242, 0 ), /* 241 ke */ + S_ST( 'n', 3, 243, 0 ), /* 242 ker */ + S_ST( 'e', 3, 325, 0 ), /* 243 kern */ + S_ST( 'd', 3, 245, 0 ), /* 244 keys */ + S_ST( 'i', 3, 328, 0 ), /* 245 keysd */ + S_ST( 'o', 3, 329, 240 ), /* 246 k */ + S_ST( 'l', 3, 462, 239 ), /* 247 */ + S_ST( 'e', 3, 249, 0 ), /* 248 l */ + S_ST( 'a', 3, 250, 0 ), /* 249 le */ + S_ST( 'p', 3, 254, 0 ), /* 250 lea */ + S_ST( 'f', 3, 252, 0 ), /* 251 leap */ + S_ST( 'i', 3, 253, 0 ), /* 252 leapf */ + S_ST( 'l', 3, 331, 0 ), /* 253 leapfi */ + S_ST( 's', 3, 255, 251 ), /* 254 leap */ + S_ST( 'm', 3, 256, 0 ), /* 255 leaps */ + S_ST( 'e', 3, 257, 0 ), /* 256 leapsm */ + S_ST( 'a', 3, 288, 0 ), /* 257 leapsme */ S_ST( 'v', 1, 0, 0 ), /* 258 T_Abbrev */ S_ST( 'e', 0, 0, 0 ), /* 259 T_Age */ S_ST( 'l', 0, 12, 0 ), /* 260 T_All */ @@ -480,646 +481,655 @@ const scan_state sst[909] = { S_ST( 'x', 0, 0, 0 ), /* 265 T_Automax */ S_ST( 'e', 0, 0, 0 ), /* 266 T_Average */ S_ST( 't', 0, 0, 0 ), /* 267 T_Bclient */ - S_ST( 'n', 0, 0, 0 ), /* 268 T_Beacon */ - S_ST( 't', 1, 57, 0 ), /* 269 T_Broadcast */ - S_ST( 't', 0, 0, 0 ), /* 270 T_Broadcastclient */ - S_ST( 'y', 0, 0, 0 ), /* 271 T_Broadcastdelay */ - S_ST( 't', 0, 0, 0 ), /* 272 T_Burst */ - S_ST( 'e', 0, 0, 0 ), /* 273 T_Calibrate */ - S_ST( 'g', 0, 0, 0 ), /* 274 T_Ceiling */ - S_ST( 's', 0, 0, 0 ), /* 275 T_Clockstats */ - S_ST( 't', 0, 0, 0 ), /* 276 T_Cohort */ - S_ST( 'y', 0, 0, 0 ), /* 277 T_ControlKey */ - S_ST( 'o', 0, 100, 0 ), /* 278 T_Crypto */ - S_ST( 's', 0, 0, 0 ), /* 279 T_Cryptostats */ - S_ST( 'l', 0, 0, 0 ), /* 280 T_Ctl */ - S_ST( 'y', 0, 0, 0 ), /* 281 T_Day */ - S_ST( 't', 0, 0, 0 ), /* 282 T_Default */ - S_ST( 't', 1, 0, 0 ), /* 283 T_Digest */ - S_ST( 'e', 0, 0, 0 ), /* 284 T_Disable */ - S_ST( 'd', 0, 0, 0 ), /* 285 T_Discard */ - S_ST( 'n', 0, 0, 0 ), /* 286 T_Dispersion */ - S_ST( 'i', 3, 436, 240 ), /* 287 l */ - S_ST( 'e', 1, 0, 0 ), /* 288 T_Driftfile */ - S_ST( 'p', 0, 0, 0 ), /* 289 T_Drop */ - S_ST( 'p', 0, 0, 0 ), /* 290 T_Dscp */ - S_ST( '.', 0, 0, 0 ), /* 291 T_Ellipsis */ - S_ST( 'e', 0, 0, 0 ), /* 292 T_Enable */ - S_ST( 'd', 0, 0, 147 ), /* 293 T_End */ - S_ST( 'm', 3, 316, 0 ), /* 294 li */ - S_ST( 'e', 1, 155, 0 ), /* 295 T_File */ - S_ST( 'n', 0, 0, 0 ), /* 296 T_Filegen */ - S_ST( 'm', 0, 0, 0 ), /* 297 T_Filenum */ - S_ST( '1', 0, 0, 0 ), /* 298 T_Flag1 */ - S_ST( '2', 0, 0, 298 ), /* 299 T_Flag2 */ - S_ST( '3', 0, 0, 299 ), /* 300 T_Flag3 */ - S_ST( '4', 0, 0, 300 ), /* 301 T_Flag4 */ - S_ST( 'e', 0, 0, 0 ), /* 302 T_Flake */ - S_ST( 'r', 0, 0, 0 ), /* 303 T_Floor */ - S_ST( 'q', 0, 165, 0 ), /* 304 T_Freq */ - S_ST( 'e', 1, 0, 0 ), /* 305 T_Fudge */ - S_ST( 't', 1, 0, 0 ), /* 306 T_Host */ - S_ST( 'f', 0, 0, 0 ), /* 307 T_Huffpuff */ - S_ST( 't', 0, 0, 0 ), /* 308 T_Iburst */ - S_ST( 't', 1, 0, 0 ), /* 309 T_Ident */ - S_ST( 'e', 0, 0, 0 ), /* 310 T_Ignore */ - S_ST( 'c', 0, 0, 0 ), /* 311 T_Incalloc */ - S_ST( 'm', 0, 0, 0 ), /* 312 T_Incmem */ - S_ST( 'c', 0, 0, 0 ), /* 313 T_Initalloc */ - S_ST( 'm', 0, 0, 0 ), /* 314 T_Initmem */ - S_ST( 'e', 1, 0, 0 ), /* 315 T_Includefile */ - S_ST( 'i', 3, 318, 0 ), /* 316 lim */ - S_ST( 'e', 0, 0, 0 ), /* 317 T_Interface */ - S_ST( 't', 3, 414, 0 ), /* 318 limi */ - S_ST( 'o', 0, 0, 195 ), /* 319 T_Io */ - S_ST( '4', 0, 0, 0 ), /* 320 T_Ipv4 */ - S_ST( '4', 0, 0, 0 ), /* 321 T_Ipv4_flag */ - S_ST( '6', 0, 0, 320 ), /* 322 T_Ipv6 */ - S_ST( '6', 0, 0, 321 ), /* 323 T_Ipv6_flag */ - S_ST( 'l', 0, 0, 0 ), /* 324 T_Kernel */ - S_ST( 'y', 0, 326, 233 ), /* 325 T_Key */ - S_ST( 's', 1, 236, 0 ), /* 326 T_Keys */ - S_ST( 'r', 1, 0, 0 ), /* 327 T_Keysdir */ - S_ST( 'd', 0, 0, 0 ), /* 328 T_Kod */ - S_ST( 'p', 0, 0, 0 ), /* 329 T_Mssntp */ - S_ST( 'e', 1, 0, 0 ), /* 330 T_Leapfile */ - S_ST( 'l', 0, 0, 0 ), /* 331 T_Leapsmearinterval */ - S_ST( 'd', 0, 0, 0 ), /* 332 T_Limited */ - S_ST( 'k', 0, 0, 0 ), /* 333 T_Link */ - S_ST( 'n', 0, 0, 0 ), /* 334 T_Listen */ - S_ST( 'g', 2, 0, 0 ), /* 335 T_Logconfig */ - S_ST( 'e', 1, 0, 0 ), /* 336 T_Logfile */ - S_ST( 's', 0, 0, 0 ), /* 337 T_Loopstats */ - S_ST( 'p', 0, 0, 0 ), /* 338 T_Lowpriotrap */ - S_ST( 't', 1, 0, 0 ), /* 339 T_Manycastclient */ - S_ST( 'r', 2, 0, 0 ), /* 340 T_Manycastserver */ - S_ST( 'k', 0, 0, 0 ), /* 341 T_Mask */ - S_ST( 'e', 0, 0, 0 ), /* 342 T_Maxage */ - S_ST( 'k', 0, 0, 0 ), /* 343 T_Maxclock */ - S_ST( 'h', 0, 0, 0 ), /* 344 T_Maxdepth */ - S_ST( 't', 0, 0, 0 ), /* 345 T_Maxdist */ - S_ST( 'm', 0, 0, 0 ), /* 346 T_Maxmem */ - S_ST( 'l', 0, 0, 0 ), /* 347 T_Maxpoll */ - S_ST( 's', 0, 0, 0 ), /* 348 T_Mdnstries */ - S_ST( 'm', 0, 522, 0 ), /* 349 T_Mem */ - S_ST( 'k', 0, 0, 0 ), /* 350 T_Memlock */ - S_ST( 'k', 0, 0, 0 ), /* 351 T_Minclock */ - S_ST( 'h', 0, 0, 0 ), /* 352 T_Mindepth */ - S_ST( 't', 0, 0, 0 ), /* 353 T_Mindist */ - S_ST( 'm', 0, 0, 0 ), /* 354 T_Minimum */ - S_ST( 'l', 0, 0, 0 ), /* 355 T_Minpoll */ - S_ST( 'e', 0, 0, 0 ), /* 356 T_Minsane */ - S_ST( 'e', 0, 358, 0 ), /* 357 T_Mode */ - S_ST( '7', 0, 0, 0 ), /* 358 T_Mode7 */ - S_ST( 'r', 0, 0, 0 ), /* 359 T_Monitor */ - S_ST( 'h', 0, 0, 0 ), /* 360 T_Month */ - S_ST( 'u', 0, 0, 0 ), /* 361 T_Mru */ - S_ST( 't', 2, 0, 0 ), /* 362 T_Multicastclient */ - S_ST( 'c', 0, 0, 0 ), /* 363 T_Nic */ - S_ST( 'k', 0, 0, 0 ), /* 364 T_Nolink */ - S_ST( 'y', 0, 0, 0 ), /* 365 T_Nomodify */ - S_ST( 't', 0, 0, 0 ), /* 366 T_Nomrulist */ - S_ST( 'e', 0, 0, 0 ), /* 367 T_None */ - S_ST( 'e', 0, 0, 0 ), /* 368 T_Nonvolatile */ - S_ST( 'r', 0, 0, 0 ), /* 369 T_Nopeer */ - S_ST( 'y', 0, 0, 0 ), /* 370 T_Noquery */ - S_ST( 't', 0, 0, 0 ), /* 371 T_Noselect */ - S_ST( 'e', 0, 0, 0 ), /* 372 T_Noserve */ - S_ST( 'p', 0, 0, 0 ), /* 373 T_Notrap */ - S_ST( 't', 0, 0, 0 ), /* 374 T_Notrust */ - S_ST( 'p', 0, 618, 0 ), /* 375 T_Ntp */ - S_ST( 't', 0, 0, 0 ), /* 376 T_Ntpport */ - S_ST( 't', 1, 0, 0 ), /* 377 T_NtpSignDsocket */ - S_ST( 'n', 0, 633, 0 ), /* 378 T_Orphan */ - S_ST( 't', 0, 0, 0 ), /* 379 T_Orphanwait */ - S_ST( 'y', 0, 0, 0 ), /* 380 T_PCEdigest */ - S_ST( 'c', 0, 0, 0 ), /* 381 T_Panic */ - S_ST( 'r', 1, 660, 0 ), /* 382 T_Peer */ - S_ST( 's', 0, 0, 0 ), /* 383 T_Peerstats */ - S_ST( 'e', 2, 0, 0 ), /* 384 T_Phone */ - S_ST( 'd', 0, 668, 0 ), /* 385 T_Pid */ - S_ST( 'e', 1, 0, 0 ), /* 386 T_Pidfile */ - S_ST( 'l', 1, 0, 0 ), /* 387 T_Pool */ - S_ST( 't', 0, 0, 0 ), /* 388 T_Port */ - S_ST( 't', 0, 0, 0 ), /* 389 T_Preempt */ - S_ST( 'r', 0, 0, 0 ), /* 390 T_Prefer */ - S_ST( 's', 0, 0, 0 ), /* 391 T_Protostats */ - S_ST( 'w', 1, 0, 674 ), /* 392 T_Pw */ - S_ST( 'e', 1, 0, 0 ), /* 393 T_Randfile */ - S_ST( 's', 0, 0, 0 ), /* 394 T_Rawstats */ - S_ST( 'd', 1, 0, 0 ), /* 395 T_Refid */ - S_ST( 'y', 0, 0, 0 ), /* 396 T_Requestkey */ - S_ST( 't', 0, 0, 0 ), /* 397 T_Reset */ - S_ST( 't', 0, 0, 0 ), /* 398 T_Restrict */ - S_ST( 'e', 0, 0, 0 ), /* 399 T_Revoke */ - S_ST( 't', 0, 0, 0 ), /* 400 T_Rlimit */ - S_ST( 'r', 1, 0, 0 ), /* 401 T_Saveconfigdir */ - S_ST( 'r', 1, 751, 0 ), /* 402 T_Server */ - S_ST( 'r', 1, 0, 0 ), /* 403 T_Setvar */ - S_ST( 'e', 0, 0, 0 ), /* 404 T_Source */ - S_ST( 'e', 0, 0, 0 ), /* 405 T_Stacksize */ - S_ST( 's', 0, 0, 0 ), /* 406 T_Statistics */ - S_ST( 's', 0, 794, 789 ), /* 407 T_Stats */ - S_ST( 'r', 1, 0, 0 ), /* 408 T_Statsdir */ - S_ST( 'p', 0, 802, 0 ), /* 409 T_Step */ - S_ST( 'k', 0, 0, 0 ), /* 410 T_Stepback */ - S_ST( 'd', 0, 0, 0 ), /* 411 T_Stepfwd */ - S_ST( 't', 0, 0, 0 ), /* 412 T_Stepout */ - S_ST( 'm', 0, 0, 0 ), /* 413 T_Stratum */ - S_ST( 'e', 3, 332, 0 ), /* 414 limit */ - S_ST( 's', 0, 809, 0 ), /* 415 T_Sys */ - S_ST( 's', 0, 0, 0 ), /* 416 T_Sysstats */ - S_ST( 'k', 0, 0, 0 ), /* 417 T_Tick */ - S_ST( '1', 0, 0, 0 ), /* 418 T_Time1 */ - S_ST( '2', 0, 0, 418 ), /* 419 T_Time2 */ - S_ST( 'r', 0, 0, 419 ), /* 420 T_Timer */ - S_ST( 's', 0, 0, 0 ), /* 421 T_Timingstats */ - S_ST( 'r', 0, 0, 0 ), /* 422 T_Tinker */ - S_ST( 's', 0, 0, 0 ), /* 423 T_Tos */ - S_ST( 'p', 1, 0, 0 ), /* 424 T_Trap */ - S_ST( 'e', 0, 0, 0 ), /* 425 T_True */ - S_ST( 'y', 0, 0, 0 ), /* 426 T_Trustedkey */ - S_ST( 'l', 0, 0, 0 ), /* 427 T_Ttl */ - S_ST( 'e', 0, 0, 0 ), /* 428 T_Type */ - S_ST( 'n', 3, 333, 294 ), /* 429 li */ - S_ST( 'y', 0, 0, 0 ), /* 430 T_UEcrypto */ - S_ST( 'y', 0, 0, 0 ), /* 431 T_UEcryptonak */ - S_ST( 'y', 0, 0, 0 ), /* 432 T_UEdigest */ - S_ST( 'g', 1, 0, 0 ), /* 433 T_Unconfig */ - S_ST( 'r', 1, 851, 0 ), /* 434 T_Unpeer */ - S_ST( 'n', 0, 0, 0 ), /* 435 T_Version */ - S_ST( 's', 3, 441, 429 ), /* 436 li */ - S_ST( 'k', 0, 0, 0 ), /* 437 T_Week */ - S_ST( 'd', 0, 0, 0 ), /* 438 T_Wildcard */ - S_ST( 'e', 0, 0, 0 ), /* 439 T_Xleave */ - S_ST( 'r', 0, 0, 0 ), /* 440 T_Year */ - S_ST( 't', 3, 442, 0 ), /* 441 lis */ - S_ST( 'e', 3, 334, 0 ), /* 442 list */ - S_ST( 'e', 0, 0, 0 ), /* 443 T_Simulate */ - S_ST( 'y', 0, 0, 0 ), /* 444 T_Beep_Delay */ - S_ST( 'n', 0, 0, 0 ), /* 445 T_Sim_Duration */ - S_ST( 't', 0, 0, 0 ), /* 446 T_Server_Offset */ - S_ST( 'n', 0, 0, 0 ), /* 447 T_Duration */ - S_ST( 't', 0, 0, 0 ), /* 448 T_Freq_Offset */ - S_ST( 'r', 0, 0, 0 ), /* 449 T_Wander */ - S_ST( 'r', 0, 0, 0 ), /* 450 T_Jitter */ - S_ST( 'y', 0, 0, 0 ), /* 451 T_Prop_Delay */ - S_ST( 'y', 0, 0, 0 ), /* 452 T_Proc_Delay */ - S_ST( 'o', 3, 469, 287 ), /* 453 l */ - S_ST( 'g', 3, 460, 0 ), /* 454 lo */ - S_ST( 'c', 3, 456, 0 ), /* 455 log */ - S_ST( 'o', 3, 457, 0 ), /* 456 logc */ - S_ST( 'n', 3, 458, 0 ), /* 457 logco */ - S_ST( 'f', 3, 459, 0 ), /* 458 logcon */ - S_ST( 'i', 3, 335, 0 ), /* 459 logconf */ - S_ST( 'f', 3, 461, 455 ), /* 460 log */ - S_ST( 'i', 3, 462, 0 ), /* 461 logf */ - S_ST( 'l', 3, 336, 0 ), /* 462 logfi */ - S_ST( 'o', 3, 464, 454 ), /* 463 lo */ - S_ST( 'p', 3, 465, 0 ), /* 464 loo */ - S_ST( 's', 3, 466, 0 ), /* 465 loop */ - S_ST( 't', 3, 467, 0 ), /* 466 loops */ - S_ST( 'a', 3, 468, 0 ), /* 467 loopst */ - S_ST( 't', 3, 337, 0 ), /* 468 loopsta */ - S_ST( 'w', 3, 470, 463 ), /* 469 lo */ - S_ST( 'p', 3, 471, 0 ), /* 470 low */ - S_ST( 'r', 3, 472, 0 ), /* 471 lowp */ - S_ST( 'i', 3, 473, 0 ), /* 472 lowpr */ - S_ST( 'o', 3, 474, 0 ), /* 473 lowpri */ - S_ST( 't', 3, 475, 0 ), /* 474 lowprio */ - S_ST( 'r', 3, 476, 0 ), /* 475 lowpriot */ - S_ST( 'a', 3, 338, 0 ), /* 476 lowpriotr */ - S_ST( 'm', 3, 558, 239 ), /* 477 */ - S_ST( 'a', 3, 496, 0 ), /* 478 m */ - S_ST( 'n', 3, 480, 0 ), /* 479 ma */ - S_ST( 'y', 3, 481, 0 ), /* 480 man */ - S_ST( 'c', 3, 482, 0 ), /* 481 many */ - S_ST( 'a', 3, 483, 0 ), /* 482 manyc */ - S_ST( 's', 3, 484, 0 ), /* 483 manyca */ - S_ST( 't', 3, 490, 0 ), /* 484 manycas */ - S_ST( 'c', 3, 486, 0 ), /* 485 manycast */ - S_ST( 'l', 3, 487, 0 ), /* 486 manycastc */ - S_ST( 'i', 3, 488, 0 ), /* 487 manycastcl */ - S_ST( 'e', 3, 489, 0 ), /* 488 manycastcli */ - S_ST( 'n', 3, 339, 0 ), /* 489 manycastclie */ - S_ST( 's', 3, 491, 485 ), /* 490 manycast */ - S_ST( 'e', 3, 492, 0 ), /* 491 manycasts */ - S_ST( 'r', 3, 493, 0 ), /* 492 manycastse */ - S_ST( 'v', 3, 494, 0 ), /* 493 manycastser */ - S_ST( 'e', 3, 340, 0 ), /* 494 manycastserv */ - S_ST( 's', 3, 341, 479 ), /* 495 ma */ - S_ST( 'x', 3, 511, 495 ), /* 496 ma */ - S_ST( 'a', 3, 498, 0 ), /* 497 max */ - S_ST( 'g', 3, 342, 0 ), /* 498 maxa */ - S_ST( 'c', 3, 500, 497 ), /* 499 max */ - S_ST( 'l', 3, 501, 0 ), /* 500 maxc */ - S_ST( 'o', 3, 502, 0 ), /* 501 maxcl */ - S_ST( 'c', 3, 343, 0 ), /* 502 maxclo */ - S_ST( 'd', 3, 507, 499 ), /* 503 max */ - S_ST( 'e', 3, 505, 0 ), /* 504 maxd */ - S_ST( 'p', 3, 506, 0 ), /* 505 maxde */ - S_ST( 't', 3, 344, 0 ), /* 506 maxdep */ - S_ST( 'i', 3, 508, 504 ), /* 507 maxd */ - S_ST( 's', 3, 345, 0 ), /* 508 maxdi */ - S_ST( 'm', 3, 510, 503 ), /* 509 max */ - S_ST( 'e', 3, 346, 0 ), /* 510 maxm */ - S_ST( 'p', 3, 512, 509 ), /* 511 max */ - S_ST( 'o', 3, 513, 0 ), /* 512 maxp */ - S_ST( 'l', 3, 347, 0 ), /* 513 maxpo */ - S_ST( 'd', 3, 515, 478 ), /* 514 m */ - S_ST( 'n', 3, 516, 0 ), /* 515 md */ - S_ST( 's', 3, 517, 0 ), /* 516 mdn */ - S_ST( 't', 3, 518, 0 ), /* 517 mdns */ - S_ST( 'r', 3, 519, 0 ), /* 518 mdnst */ - S_ST( 'i', 3, 520, 0 ), /* 519 mdnstr */ - S_ST( 'e', 3, 348, 0 ), /* 520 mdnstri */ - S_ST( 'e', 3, 349, 514 ), /* 521 m */ - S_ST( 'l', 3, 523, 0 ), /* 522 mem */ - S_ST( 'o', 3, 524, 0 ), /* 523 meml */ - S_ST( 'c', 3, 350, 0 ), /* 524 memlo */ - S_ST( 'i', 3, 526, 521 ), /* 525 m */ - S_ST( 'n', 3, 543, 0 ), /* 526 mi */ - S_ST( 'c', 3, 528, 0 ), /* 527 min */ - S_ST( 'l', 3, 529, 0 ), /* 528 minc */ - S_ST( 'o', 3, 530, 0 ), /* 529 mincl */ - S_ST( 'c', 3, 351, 0 ), /* 530 minclo */ - S_ST( 'd', 3, 535, 527 ), /* 531 min */ - S_ST( 'e', 3, 533, 0 ), /* 532 mind */ - S_ST( 'p', 3, 534, 0 ), /* 533 minde */ - S_ST( 't', 3, 352, 0 ), /* 534 mindep */ - S_ST( 'i', 3, 536, 532 ), /* 535 mind */ - S_ST( 's', 3, 353, 0 ), /* 536 mindi */ - S_ST( 'i', 3, 538, 531 ), /* 537 min */ - S_ST( 'm', 3, 539, 0 ), /* 538 mini */ - S_ST( 'u', 3, 354, 0 ), /* 539 minim */ - S_ST( 'p', 3, 541, 537 ), /* 540 min */ - S_ST( 'o', 3, 542, 0 ), /* 541 minp */ - S_ST( 'l', 3, 355, 0 ), /* 542 minpo */ - S_ST( 's', 3, 544, 540 ), /* 543 min */ - S_ST( 'a', 3, 545, 0 ), /* 544 mins */ - S_ST( 'n', 3, 356, 0 ), /* 545 minsa */ - S_ST( 'o', 3, 548, 525 ), /* 546 m */ - S_ST( 'd', 3, 357, 0 ), /* 547 mo */ - S_ST( 'n', 3, 552, 547 ), /* 548 mo */ - S_ST( 'i', 3, 550, 0 ), /* 549 mon */ - S_ST( 't', 3, 551, 0 ), /* 550 moni */ - S_ST( 'o', 3, 359, 0 ), /* 551 monit */ - S_ST( 't', 3, 360, 549 ), /* 552 mon */ - S_ST( 'r', 3, 361, 546 ), /* 553 m */ - S_ST( 's', 3, 555, 553 ), /* 554 m */ - S_ST( 's', 3, 556, 0 ), /* 555 ms */ - S_ST( 'n', 3, 557, 0 ), /* 556 mss */ - S_ST( 't', 3, 329, 0 ), /* 557 mssn */ - S_ST( 'u', 3, 559, 554 ), /* 558 m */ - S_ST( 'l', 3, 560, 0 ), /* 559 mu */ - S_ST( 't', 3, 561, 0 ), /* 560 mul */ - S_ST( 'i', 3, 562, 0 ), /* 561 mult */ - S_ST( 'c', 3, 563, 0 ), /* 562 multi */ - S_ST( 'a', 3, 564, 0 ), /* 563 multic */ - S_ST( 's', 3, 565, 0 ), /* 564 multica */ - S_ST( 't', 3, 566, 0 ), /* 565 multicas */ - S_ST( 'c', 3, 567, 0 ), /* 566 multicast */ - S_ST( 'l', 3, 568, 0 ), /* 567 multicastc */ - S_ST( 'i', 3, 569, 0 ), /* 568 multicastcl */ - S_ST( 'e', 3, 570, 0 ), /* 569 multicastcli */ - S_ST( 'n', 3, 362, 0 ), /* 570 multicastclie */ - S_ST( 'n', 3, 614, 477 ), /* 571 */ - S_ST( 'i', 3, 363, 0 ), /* 572 n */ - S_ST( 'o', 3, 609, 572 ), /* 573 n */ - S_ST( 'l', 3, 575, 0 ), /* 574 no */ - S_ST( 'i', 3, 576, 0 ), /* 575 nol */ - S_ST( 'n', 3, 364, 0 ), /* 576 noli */ - S_ST( 'm', 3, 582, 574 ), /* 577 no */ - S_ST( 'o', 3, 579, 0 ), /* 578 nom */ - S_ST( 'd', 3, 580, 0 ), /* 579 nomo */ - S_ST( 'i', 3, 581, 0 ), /* 580 nomod */ - S_ST( 'f', 3, 365, 0 ), /* 581 nomodi */ - S_ST( 'r', 3, 583, 578 ), /* 582 nom */ - S_ST( 'u', 3, 584, 0 ), /* 583 nomr */ - S_ST( 'l', 3, 585, 0 ), /* 584 nomru */ - S_ST( 'i', 3, 586, 0 ), /* 585 nomrul */ - S_ST( 's', 3, 366, 0 ), /* 586 nomruli */ - S_ST( 'n', 3, 588, 577 ), /* 587 no */ - S_ST( 'v', 3, 589, 367 ), /* 588 non */ - S_ST( 'o', 3, 590, 0 ), /* 589 nonv */ - S_ST( 'l', 3, 591, 0 ), /* 590 nonvo */ - S_ST( 'a', 3, 592, 0 ), /* 591 nonvol */ - S_ST( 't', 3, 593, 0 ), /* 592 nonvola */ - S_ST( 'i', 3, 594, 0 ), /* 593 nonvolat */ - S_ST( 'l', 3, 368, 0 ), /* 594 nonvolati */ - S_ST( 'p', 3, 596, 587 ), /* 595 no */ - S_ST( 'e', 3, 597, 0 ), /* 596 nop */ - S_ST( 'e', 3, 369, 0 ), /* 597 nope */ - S_ST( 'q', 3, 599, 595 ), /* 598 no */ - S_ST( 'u', 3, 600, 0 ), /* 599 noq */ - S_ST( 'e', 3, 601, 0 ), /* 600 noqu */ - S_ST( 'r', 3, 370, 0 ), /* 601 noque */ - S_ST( 's', 3, 603, 598 ), /* 602 no */ - S_ST( 'e', 3, 607, 0 ), /* 603 nos */ - S_ST( 'l', 3, 605, 0 ), /* 604 nose */ - S_ST( 'e', 3, 606, 0 ), /* 605 nosel */ - S_ST( 'c', 3, 371, 0 ), /* 606 nosele */ - S_ST( 'r', 3, 608, 604 ), /* 607 nose */ - S_ST( 'v', 3, 372, 0 ), /* 608 noser */ - S_ST( 't', 3, 610, 602 ), /* 609 no */ - S_ST( 'r', 3, 612, 0 ), /* 610 not */ - S_ST( 'a', 3, 373, 0 ), /* 611 notr */ - S_ST( 'u', 3, 613, 611 ), /* 612 notr */ - S_ST( 's', 3, 374, 0 ), /* 613 notru */ - S_ST( 't', 3, 375, 573 ), /* 614 n */ - S_ST( 'p', 3, 616, 0 ), /* 615 ntp */ - S_ST( 'o', 3, 617, 0 ), /* 616 ntpp */ - S_ST( 'r', 3, 376, 0 ), /* 617 ntppo */ - S_ST( 's', 3, 619, 615 ), /* 618 ntp */ - S_ST( 'i', 3, 620, 0 ), /* 619 ntps */ - S_ST( 'g', 3, 621, 0 ), /* 620 ntpsi */ - S_ST( 'n', 3, 622, 0 ), /* 621 ntpsig */ - S_ST( 'd', 3, 623, 0 ), /* 622 ntpsign */ - S_ST( 's', 3, 624, 0 ), /* 623 ntpsignd */ - S_ST( 'o', 3, 625, 0 ), /* 624 ntpsignds */ - S_ST( 'c', 3, 626, 0 ), /* 625 ntpsigndso */ - S_ST( 'k', 3, 627, 0 ), /* 626 ntpsigndsoc */ - S_ST( 'e', 3, 377, 0 ), /* 627 ntpsigndsock */ - S_ST( 'o', 3, 629, 571 ), /* 628 */ - S_ST( 'r', 3, 630, 0 ), /* 629 o */ - S_ST( 'p', 3, 631, 0 ), /* 630 or */ - S_ST( 'h', 3, 632, 0 ), /* 631 orp */ - S_ST( 'a', 3, 378, 0 ), /* 632 orph */ - S_ST( 'w', 3, 634, 0 ), /* 633 orphan */ - S_ST( 'a', 3, 635, 0 ), /* 634 orphanw */ - S_ST( 'i', 3, 379, 0 ), /* 635 orphanwa */ - S_ST( 'p', 3, 392, 628 ), /* 636 */ - S_ST( 'a', 3, 638, 0 ), /* 637 p */ - S_ST( 'n', 3, 639, 0 ), /* 638 pa */ - S_ST( 'i', 3, 381, 0 ), /* 639 pan */ - S_ST( 'e', 3, 641, 637 ), /* 640 p */ - S_ST( 'e', 3, 382, 0 ), /* 641 pe */ - S_ST( '_', 3, 643, 0 ), /* 642 peer */ - S_ST( 'c', 3, 644, 0 ), /* 643 peer_ */ - S_ST( 'l', 3, 645, 0 ), /* 644 peer_c */ - S_ST( 'e', 3, 646, 0 ), /* 645 peer_cl */ - S_ST( 'a', 3, 647, 0 ), /* 646 peer_cle */ - S_ST( 'r', 3, 648, 0 ), /* 647 peer_clea */ - S_ST( '_', 3, 649, 0 ), /* 648 peer_clear */ - S_ST( 'd', 3, 650, 0 ), /* 649 peer_clear_ */ - S_ST( 'i', 3, 651, 0 ), /* 650 peer_clear_d */ - S_ST( 'g', 3, 652, 0 ), /* 651 peer_clear_di */ - S_ST( 'e', 3, 653, 0 ), /* 652 peer_clear_dig */ - S_ST( 's', 3, 654, 0 ), /* 653 peer_clear_dige */ - S_ST( 't', 3, 655, 0 ), /* 654 peer_clear_diges */ - S_ST( '_', 3, 656, 0 ), /* 655 peer_clear_digest */ - S_ST( 'e', 3, 657, 0 ), /* 656 peer_clear_digest_ */ - S_ST( 'a', 3, 658, 0 ), /* 657 peer_clear_digest_e */ - S_ST( 'r', 3, 659, 0 ), /* 658 peer_clear_digest_ea */ - S_ST( 'l', 3, 380, 0 ), /* 659 peer_clear_digest_ear */ - S_ST( 's', 3, 661, 642 ), /* 660 peer */ - S_ST( 't', 3, 662, 0 ), /* 661 peers */ - S_ST( 'a', 3, 663, 0 ), /* 662 peerst */ - S_ST( 't', 3, 383, 0 ), /* 663 peersta */ - S_ST( 'h', 3, 665, 640 ), /* 664 p */ - S_ST( 'o', 3, 666, 0 ), /* 665 ph */ - S_ST( 'n', 3, 384, 0 ), /* 666 pho */ - S_ST( 'i', 3, 385, 664 ), /* 667 p */ - S_ST( 'f', 3, 669, 0 ), /* 668 pid */ - S_ST( 'i', 3, 670, 0 ), /* 669 pidf */ - S_ST( 'l', 3, 386, 0 ), /* 670 pidfi */ - S_ST( 'o', 3, 673, 667 ), /* 671 p */ - S_ST( 'o', 3, 387, 0 ), /* 672 po */ - S_ST( 'r', 3, 388, 672 ), /* 673 po */ - S_ST( 'r', 3, 681, 671 ), /* 674 p */ - S_ST( 'e', 3, 679, 0 ), /* 675 pr */ - S_ST( 'e', 3, 677, 0 ), /* 676 pre */ - S_ST( 'm', 3, 678, 0 ), /* 677 pree */ - S_ST( 'p', 3, 389, 0 ), /* 678 preem */ - S_ST( 'f', 3, 680, 676 ), /* 679 pre */ - S_ST( 'e', 3, 390, 0 ), /* 680 pref */ - S_ST( 'o', 3, 694, 675 ), /* 681 pr */ - S_ST( 'c', 3, 683, 0 ), /* 682 pro */ - S_ST( '_', 3, 684, 0 ), /* 683 proc */ - S_ST( 'd', 3, 685, 0 ), /* 684 proc_ */ - S_ST( 'e', 3, 686, 0 ), /* 685 proc_d */ - S_ST( 'l', 3, 687, 0 ), /* 686 proc_de */ - S_ST( 'a', 3, 452, 0 ), /* 687 proc_del */ - S_ST( 'p', 3, 689, 682 ), /* 688 pro */ - S_ST( '_', 3, 690, 0 ), /* 689 prop */ - S_ST( 'd', 3, 691, 0 ), /* 690 prop_ */ - S_ST( 'e', 3, 692, 0 ), /* 691 prop_d */ - S_ST( 'l', 3, 693, 0 ), /* 692 prop_de */ - S_ST( 'a', 3, 451, 0 ), /* 693 prop_del */ - S_ST( 't', 3, 695, 688 ), /* 694 pro */ - S_ST( 'o', 3, 696, 0 ), /* 695 prot */ - S_ST( 's', 3, 697, 0 ), /* 696 proto */ - S_ST( 't', 3, 698, 0 ), /* 697 protos */ - S_ST( 'a', 3, 699, 0 ), /* 698 protost */ - S_ST( 't', 3, 391, 0 ), /* 699 protosta */ - S_ST( 'r', 3, 731, 636 ), /* 700 */ - S_ST( 'a', 3, 707, 0 ), /* 701 r */ - S_ST( 'n', 3, 703, 0 ), /* 702 ra */ - S_ST( 'd', 3, 704, 0 ), /* 703 ran */ - S_ST( 'f', 3, 705, 0 ), /* 704 rand */ - S_ST( 'i', 3, 706, 0 ), /* 705 randf */ - S_ST( 'l', 3, 393, 0 ), /* 706 randfi */ - S_ST( 'w', 3, 708, 702 ), /* 707 ra */ - S_ST( 's', 3, 709, 0 ), /* 708 raw */ - S_ST( 't', 3, 710, 0 ), /* 709 raws */ - S_ST( 'a', 3, 711, 0 ), /* 710 rawst */ - S_ST( 't', 3, 394, 0 ), /* 711 rawsta */ - S_ST( 'e', 3, 728, 701 ), /* 712 r */ - S_ST( 'f', 3, 714, 0 ), /* 713 re */ - S_ST( 'i', 3, 395, 0 ), /* 714 ref */ - S_ST( 'q', 3, 716, 713 ), /* 715 re */ - S_ST( 'u', 3, 717, 0 ), /* 716 req */ - S_ST( 'e', 3, 718, 0 ), /* 717 requ */ - S_ST( 's', 3, 719, 0 ), /* 718 reque */ - S_ST( 't', 3, 720, 0 ), /* 719 reques */ - S_ST( 'k', 3, 721, 0 ), /* 720 request */ - S_ST( 'e', 3, 396, 0 ), /* 721 requestk */ - S_ST( 's', 3, 724, 715 ), /* 722 re */ - S_ST( 'e', 3, 397, 0 ), /* 723 res */ - S_ST( 't', 3, 725, 723 ), /* 724 res */ - S_ST( 'r', 3, 726, 0 ), /* 725 rest */ - S_ST( 'i', 3, 727, 0 ), /* 726 restr */ - S_ST( 'c', 3, 398, 0 ), /* 727 restri */ - S_ST( 'v', 3, 729, 722 ), /* 728 re */ - S_ST( 'o', 3, 730, 0 ), /* 729 rev */ - S_ST( 'k', 3, 399, 0 ), /* 730 revo */ - S_ST( 'l', 3, 732, 712 ), /* 731 r */ - S_ST( 'i', 3, 733, 0 ), /* 732 rl */ - S_ST( 'm', 3, 734, 0 ), /* 733 rli */ - S_ST( 'i', 3, 400, 0 ), /* 734 rlim */ - S_ST( 's', 3, 808, 700 ), /* 735 */ - S_ST( 'a', 3, 737, 0 ), /* 736 s */ - S_ST( 'v', 3, 738, 0 ), /* 737 sa */ - S_ST( 'e', 3, 739, 0 ), /* 738 sav */ - S_ST( 'c', 3, 740, 0 ), /* 739 save */ - S_ST( 'o', 3, 741, 0 ), /* 740 savec */ - S_ST( 'n', 3, 742, 0 ), /* 741 saveco */ - S_ST( 'f', 3, 743, 0 ), /* 742 savecon */ - S_ST( 'i', 3, 744, 0 ), /* 743 saveconf */ - S_ST( 'g', 3, 745, 0 ), /* 744 saveconfi */ - S_ST( 'd', 3, 746, 0 ), /* 745 saveconfig */ - S_ST( 'i', 3, 401, 0 ), /* 746 saveconfigd */ - S_ST( 'e', 3, 757, 736 ), /* 747 s */ - S_ST( 'r', 3, 749, 0 ), /* 748 se */ - S_ST( 'v', 3, 750, 0 ), /* 749 ser */ - S_ST( 'e', 3, 402, 0 ), /* 750 serv */ - S_ST( '_', 3, 752, 0 ), /* 751 server */ - S_ST( 'o', 3, 753, 0 ), /* 752 server_ */ - S_ST( 'f', 3, 754, 0 ), /* 753 server_o */ - S_ST( 'f', 3, 755, 0 ), /* 754 server_of */ - S_ST( 's', 3, 756, 0 ), /* 755 server_off */ - S_ST( 'e', 3, 446, 0 ), /* 756 server_offs */ - S_ST( 't', 3, 758, 748 ), /* 757 se */ - S_ST( 'v', 3, 759, 0 ), /* 758 set */ - S_ST( 'a', 3, 403, 0 ), /* 759 setv */ - S_ST( 'i', 3, 761, 747 ), /* 760 s */ - S_ST( 'm', 3, 762, 0 ), /* 761 si */ - S_ST( 'u', 3, 763, 0 ), /* 762 sim */ - S_ST( 'l', 3, 764, 0 ), /* 763 simu */ - S_ST( 'a', 3, 765, 0 ), /* 764 simul */ - S_ST( 't', 3, 766, 0 ), /* 765 simula */ - S_ST( 'i', 3, 767, 443 ), /* 766 simulat */ - S_ST( 'o', 3, 768, 0 ), /* 767 simulati */ - S_ST( 'n', 3, 769, 0 ), /* 768 simulatio */ - S_ST( '_', 3, 770, 0 ), /* 769 simulation */ - S_ST( 'd', 3, 771, 0 ), /* 770 simulation_ */ - S_ST( 'u', 3, 772, 0 ), /* 771 simulation_d */ - S_ST( 'r', 3, 773, 0 ), /* 772 simulation_du */ - S_ST( 'a', 3, 774, 0 ), /* 773 simulation_dur */ - S_ST( 't', 3, 775, 0 ), /* 774 simulation_dura */ - S_ST( 'i', 3, 776, 0 ), /* 775 simulation_durat */ - S_ST( 'o', 3, 445, 0 ), /* 776 simulation_durati */ - S_ST( 'o', 3, 778, 760 ), /* 777 s */ - S_ST( 'u', 3, 779, 0 ), /* 778 so */ - S_ST( 'r', 3, 780, 0 ), /* 779 sou */ - S_ST( 'c', 3, 404, 0 ), /* 780 sour */ - S_ST( 't', 3, 804, 777 ), /* 781 s */ - S_ST( 'a', 3, 788, 0 ), /* 782 st */ - S_ST( 'c', 3, 784, 0 ), /* 783 sta */ - S_ST( 'k', 3, 785, 0 ), /* 784 stac */ - S_ST( 's', 3, 786, 0 ), /* 785 stack */ - S_ST( 'i', 3, 787, 0 ), /* 786 stacks */ - S_ST( 'z', 3, 405, 0 ), /* 787 stacksi */ - S_ST( 't', 3, 407, 783 ), /* 788 sta */ - S_ST( 'i', 3, 790, 0 ), /* 789 stat */ - S_ST( 's', 3, 791, 0 ), /* 790 stati */ - S_ST( 't', 3, 792, 0 ), /* 791 statis */ - S_ST( 'i', 3, 793, 0 ), /* 792 statist */ - S_ST( 'c', 3, 406, 0 ), /* 793 statisti */ - S_ST( 'd', 3, 795, 0 ), /* 794 stats */ - S_ST( 'i', 3, 408, 0 ), /* 795 statsd */ - S_ST( 'e', 3, 409, 782 ), /* 796 st */ - S_ST( 'b', 3, 798, 0 ), /* 797 step */ - S_ST( 'a', 3, 799, 0 ), /* 798 stepb */ - S_ST( 'c', 3, 410, 0 ), /* 799 stepba */ - S_ST( 'f', 3, 801, 797 ), /* 800 step */ - S_ST( 'w', 3, 411, 0 ), /* 801 stepf */ - S_ST( 'o', 3, 803, 800 ), /* 802 step */ - S_ST( 'u', 3, 412, 0 ), /* 803 stepo */ - S_ST( 'r', 3, 805, 796 ), /* 804 st */ - S_ST( 'a', 3, 806, 0 ), /* 805 str */ - S_ST( 't', 3, 807, 0 ), /* 806 stra */ - S_ST( 'u', 3, 413, 0 ), /* 807 strat */ - S_ST( 'y', 3, 415, 781 ), /* 808 s */ - S_ST( 's', 3, 810, 0 ), /* 809 sys */ - S_ST( 't', 3, 811, 0 ), /* 810 syss */ - S_ST( 'a', 3, 812, 0 ), /* 811 sysst */ - S_ST( 't', 3, 416, 0 ), /* 812 syssta */ - S_ST( 't', 3, 839, 735 ), /* 813 */ - S_ST( 'i', 3, 825, 0 ), /* 814 t */ - S_ST( 'c', 3, 417, 0 ), /* 815 ti */ - S_ST( 'm', 3, 818, 815 ), /* 816 ti */ - S_ST( 'e', 3, 420, 0 ), /* 817 tim */ - S_ST( 'i', 3, 819, 817 ), /* 818 tim */ - S_ST( 'n', 3, 820, 0 ), /* 819 timi */ - S_ST( 'g', 3, 821, 0 ), /* 820 timin */ - S_ST( 's', 3, 822, 0 ), /* 821 timing */ - S_ST( 't', 3, 823, 0 ), /* 822 timings */ - S_ST( 'a', 3, 824, 0 ), /* 823 timingst */ - S_ST( 't', 3, 421, 0 ), /* 824 timingsta */ - S_ST( 'n', 3, 826, 816 ), /* 825 ti */ - S_ST( 'k', 3, 827, 0 ), /* 826 tin */ - S_ST( 'e', 3, 422, 0 ), /* 827 tink */ - S_ST( 'o', 3, 423, 814 ), /* 828 t */ - S_ST( 'r', 3, 831, 828 ), /* 829 t */ - S_ST( 'a', 3, 424, 0 ), /* 830 tr */ - S_ST( 'u', 3, 832, 830 ), /* 831 tr */ - S_ST( 's', 3, 833, 425 ), /* 832 tru */ - S_ST( 't', 3, 834, 0 ), /* 833 trus */ - S_ST( 'e', 3, 835, 0 ), /* 834 trust */ - S_ST( 'd', 3, 836, 0 ), /* 835 truste */ - S_ST( 'k', 3, 837, 0 ), /* 836 trusted */ - S_ST( 'e', 3, 426, 0 ), /* 837 trustedk */ - S_ST( 't', 3, 427, 829 ), /* 838 t */ - S_ST( 'y', 3, 840, 838 ), /* 839 t */ - S_ST( 'p', 3, 428, 0 ), /* 840 ty */ - S_ST( 'u', 3, 842, 813 ), /* 841 */ - S_ST( 'n', 3, 848, 0 ), /* 842 u */ - S_ST( 'c', 3, 844, 0 ), /* 843 un */ - S_ST( 'o', 3, 845, 0 ), /* 844 unc */ - S_ST( 'n', 3, 846, 0 ), /* 845 unco */ - S_ST( 'f', 3, 847, 0 ), /* 846 uncon */ - S_ST( 'i', 3, 433, 0 ), /* 847 unconf */ - S_ST( 'p', 3, 849, 843 ), /* 848 un */ - S_ST( 'e', 3, 850, 0 ), /* 849 unp */ - S_ST( 'e', 3, 434, 0 ), /* 850 unpe */ - S_ST( '_', 3, 871, 0 ), /* 851 unpeer */ - S_ST( 'c', 3, 853, 0 ), /* 852 unpeer_ */ - S_ST( 'r', 3, 854, 0 ), /* 853 unpeer_c */ - S_ST( 'y', 3, 855, 0 ), /* 854 unpeer_cr */ - S_ST( 'p', 3, 856, 0 ), /* 855 unpeer_cry */ - S_ST( 't', 3, 857, 0 ), /* 856 unpeer_cryp */ - S_ST( 'o', 3, 858, 0 ), /* 857 unpeer_crypt */ - S_ST( '_', 3, 863, 0 ), /* 858 unpeer_crypto */ - S_ST( 'e', 3, 860, 0 ), /* 859 unpeer_crypto_ */ - S_ST( 'a', 3, 861, 0 ), /* 860 unpeer_crypto_e */ - S_ST( 'r', 3, 862, 0 ), /* 861 unpeer_crypto_ea */ - S_ST( 'l', 3, 430, 0 ), /* 862 unpeer_crypto_ear */ - S_ST( 'n', 3, 864, 859 ), /* 863 unpeer_crypto_ */ - S_ST( 'a', 3, 865, 0 ), /* 864 unpeer_crypto_n */ - S_ST( 'k', 3, 866, 0 ), /* 865 unpeer_crypto_na */ - S_ST( '_', 3, 867, 0 ), /* 866 unpeer_crypto_nak */ - S_ST( 'e', 3, 868, 0 ), /* 867 unpeer_crypto_nak_ */ - S_ST( 'a', 3, 869, 0 ), /* 868 unpeer_crypto_nak_e */ - S_ST( 'r', 3, 870, 0 ), /* 869 unpeer_crypto_nak_ea */ - S_ST( 'l', 3, 431, 0 ), /* 870 unpeer_crypto_nak_ear */ - S_ST( 'd', 3, 872, 852 ), /* 871 unpeer_ */ - S_ST( 'i', 3, 873, 0 ), /* 872 unpeer_d */ - S_ST( 'g', 3, 874, 0 ), /* 873 unpeer_di */ - S_ST( 'e', 3, 875, 0 ), /* 874 unpeer_dig */ - S_ST( 's', 3, 876, 0 ), /* 875 unpeer_dige */ - S_ST( 't', 3, 877, 0 ), /* 876 unpeer_diges */ - S_ST( '_', 3, 878, 0 ), /* 877 unpeer_digest */ - S_ST( 'e', 3, 879, 0 ), /* 878 unpeer_digest_ */ - S_ST( 'a', 3, 880, 0 ), /* 879 unpeer_digest_e */ - S_ST( 'r', 3, 881, 0 ), /* 880 unpeer_digest_ea */ - S_ST( 'l', 3, 432, 0 ), /* 881 unpeer_digest_ear */ - S_ST( 'v', 3, 883, 841 ), /* 882 */ - S_ST( 'e', 3, 884, 0 ), /* 883 v */ - S_ST( 'r', 3, 885, 0 ), /* 884 ve */ - S_ST( 's', 3, 886, 0 ), /* 885 ver */ - S_ST( 'i', 3, 887, 0 ), /* 886 vers */ - S_ST( 'o', 3, 435, 0 ), /* 887 versi */ - S_ST( 'w', 3, 895, 882 ), /* 888 */ - S_ST( 'a', 3, 890, 0 ), /* 889 w */ - S_ST( 'n', 3, 891, 0 ), /* 890 wa */ - S_ST( 'd', 3, 892, 0 ), /* 891 wan */ - S_ST( 'e', 3, 449, 0 ), /* 892 wand */ - S_ST( 'e', 3, 894, 889 ), /* 893 w */ - S_ST( 'e', 3, 437, 0 ), /* 894 we */ - S_ST( 'i', 3, 896, 893 ), /* 895 w */ - S_ST( 'l', 3, 897, 0 ), /* 896 wi */ - S_ST( 'd', 3, 898, 0 ), /* 897 wil */ - S_ST( 'c', 3, 899, 0 ), /* 898 wild */ - S_ST( 'a', 3, 900, 0 ), /* 899 wildc */ - S_ST( 'r', 3, 438, 0 ), /* 900 wildca */ - S_ST( 'x', 3, 902, 888 ), /* 901 */ - S_ST( 'l', 3, 903, 0 ), /* 902 x */ - S_ST( 'e', 3, 904, 0 ), /* 903 xl */ - S_ST( 'a', 3, 905, 0 ), /* 904 xle */ - S_ST( 'v', 3, 439, 0 ), /* 905 xlea */ - S_ST( 'y', 3, 907, 901 ), /* 906 [initial state] */ - S_ST( 'e', 3, 908, 0 ), /* 907 y */ - S_ST( 'a', 3, 440, 0 ) /* 908 ye */ + S_ST( 'p', 0, 0, 0 ), /* 268 T_Bcpollbstep */ + S_ST( 'n', 0, 0, 0 ), /* 269 T_Beacon */ + S_ST( 't', 1, 65, 0 ), /* 270 T_Broadcast */ + S_ST( 't', 0, 0, 0 ), /* 271 T_Broadcastclient */ + S_ST( 'y', 0, 0, 0 ), /* 272 T_Broadcastdelay */ + S_ST( 't', 0, 0, 0 ), /* 273 T_Burst */ + S_ST( 'e', 0, 0, 0 ), /* 274 T_Calibrate */ + S_ST( 'g', 0, 0, 0 ), /* 275 T_Ceiling */ + S_ST( 's', 0, 0, 0 ), /* 276 T_Clockstats */ + S_ST( 't', 0, 0, 0 ), /* 277 T_Cohort */ + S_ST( 'y', 0, 0, 0 ), /* 278 T_ControlKey */ + S_ST( 'o', 0, 108, 0 ), /* 279 T_Crypto */ + S_ST( 's', 0, 0, 0 ), /* 280 T_Cryptostats */ + S_ST( 'l', 0, 0, 0 ), /* 281 T_Ctl */ + S_ST( 'y', 0, 0, 0 ), /* 282 T_Day */ + S_ST( 't', 0, 0, 0 ), /* 283 T_Default */ + S_ST( 't', 1, 0, 0 ), /* 284 T_Digest */ + S_ST( 'e', 0, 0, 0 ), /* 285 T_Disable */ + S_ST( 'd', 0, 0, 0 ), /* 286 T_Discard */ + S_ST( 'n', 0, 0, 0 ), /* 287 T_Dispersion */ + S_ST( 'r', 3, 295, 0 ), /* 288 leapsmea */ + S_ST( 'e', 1, 0, 0 ), /* 289 T_Driftfile */ + S_ST( 'p', 0, 0, 0 ), /* 290 T_Drop */ + S_ST( 'p', 0, 0, 0 ), /* 291 T_Dscp */ + S_ST( '.', 0, 0, 0 ), /* 292 T_Ellipsis */ + S_ST( 'e', 0, 0, 0 ), /* 293 T_Enable */ + S_ST( 'd', 0, 0, 155 ), /* 294 T_End */ + S_ST( 'i', 3, 317, 0 ), /* 295 leapsmear */ + S_ST( 'e', 1, 163, 0 ), /* 296 T_File */ + S_ST( 'n', 0, 0, 0 ), /* 297 T_Filegen */ + S_ST( 'm', 0, 0, 0 ), /* 298 T_Filenum */ + S_ST( '1', 0, 0, 0 ), /* 299 T_Flag1 */ + S_ST( '2', 0, 0, 299 ), /* 300 T_Flag2 */ + S_ST( '3', 0, 0, 300 ), /* 301 T_Flag3 */ + S_ST( '4', 0, 0, 301 ), /* 302 T_Flag4 */ + S_ST( 'e', 0, 0, 0 ), /* 303 T_Flake */ + S_ST( 'r', 0, 0, 0 ), /* 304 T_Floor */ + S_ST( 'q', 0, 173, 0 ), /* 305 T_Freq */ + S_ST( 'e', 1, 0, 0 ), /* 306 T_Fudge */ + S_ST( 't', 1, 0, 0 ), /* 307 T_Host */ + S_ST( 'f', 0, 0, 0 ), /* 308 T_Huffpuff */ + S_ST( 't', 0, 0, 0 ), /* 309 T_Iburst */ + S_ST( 't', 1, 0, 0 ), /* 310 T_Ident */ + S_ST( 'e', 0, 0, 0 ), /* 311 T_Ignore */ + S_ST( 'c', 0, 0, 0 ), /* 312 T_Incalloc */ + S_ST( 'm', 0, 0, 0 ), /* 313 T_Incmem */ + S_ST( 'c', 0, 0, 0 ), /* 314 T_Initalloc */ + S_ST( 'm', 0, 0, 0 ), /* 315 T_Initmem */ + S_ST( 'e', 1, 0, 0 ), /* 316 T_Includefile */ + S_ST( 'n', 3, 319, 0 ), /* 317 leapsmeari */ + S_ST( 'e', 0, 0, 0 ), /* 318 T_Interface */ + S_ST( 't', 3, 415, 0 ), /* 319 leapsmearin */ + S_ST( 'o', 0, 0, 203 ), /* 320 T_Io */ + S_ST( '4', 0, 0, 0 ), /* 321 T_Ipv4 */ + S_ST( '4', 0, 0, 0 ), /* 322 T_Ipv4_flag */ + S_ST( '6', 0, 0, 321 ), /* 323 T_Ipv6 */ + S_ST( '6', 0, 0, 322 ), /* 324 T_Ipv6_flag */ + S_ST( 'l', 0, 0, 0 ), /* 325 T_Kernel */ + S_ST( 'y', 0, 327, 241 ), /* 326 T_Key */ + S_ST( 's', 1, 244, 0 ), /* 327 T_Keys */ + S_ST( 'r', 1, 0, 0 ), /* 328 T_Keysdir */ + S_ST( 'd', 0, 0, 0 ), /* 329 T_Kod */ + S_ST( 'p', 0, 0, 0 ), /* 330 T_Mssntp */ + S_ST( 'e', 1, 0, 0 ), /* 331 T_Leapfile */ + S_ST( 'l', 0, 0, 0 ), /* 332 T_Leapsmearinterval */ + S_ST( 'd', 0, 0, 0 ), /* 333 T_Limited */ + S_ST( 'k', 0, 0, 0 ), /* 334 T_Link */ + S_ST( 'n', 0, 0, 0 ), /* 335 T_Listen */ + S_ST( 'g', 2, 0, 0 ), /* 336 T_Logconfig */ + S_ST( 'e', 1, 0, 0 ), /* 337 T_Logfile */ + S_ST( 's', 0, 0, 0 ), /* 338 T_Loopstats */ + S_ST( 'p', 0, 0, 0 ), /* 339 T_Lowpriotrap */ + S_ST( 't', 1, 0, 0 ), /* 340 T_Manycastclient */ + S_ST( 'r', 2, 0, 0 ), /* 341 T_Manycastserver */ + S_ST( 'k', 0, 0, 0 ), /* 342 T_Mask */ + S_ST( 'e', 0, 0, 0 ), /* 343 T_Maxage */ + S_ST( 'k', 0, 0, 0 ), /* 344 T_Maxclock */ + S_ST( 'h', 0, 0, 0 ), /* 345 T_Maxdepth */ + S_ST( 't', 0, 0, 0 ), /* 346 T_Maxdist */ + S_ST( 'm', 0, 0, 0 ), /* 347 T_Maxmem */ + S_ST( 'l', 0, 0, 0 ), /* 348 T_Maxpoll */ + S_ST( 's', 0, 0, 0 ), /* 349 T_Mdnstries */ + S_ST( 'm', 0, 531, 0 ), /* 350 T_Mem */ + S_ST( 'k', 0, 0, 0 ), /* 351 T_Memlock */ + S_ST( 'k', 0, 0, 0 ), /* 352 T_Minclock */ + S_ST( 'h', 0, 0, 0 ), /* 353 T_Mindepth */ + S_ST( 't', 0, 0, 0 ), /* 354 T_Mindist */ + S_ST( 'm', 0, 0, 0 ), /* 355 T_Minimum */ + S_ST( 'l', 0, 0, 0 ), /* 356 T_Minpoll */ + S_ST( 'e', 0, 0, 0 ), /* 357 T_Minsane */ + S_ST( 'e', 0, 359, 0 ), /* 358 T_Mode */ + S_ST( '7', 0, 0, 0 ), /* 359 T_Mode7 */ + S_ST( 'r', 0, 0, 0 ), /* 360 T_Monitor */ + S_ST( 'h', 0, 0, 0 ), /* 361 T_Month */ + S_ST( 'u', 0, 0, 0 ), /* 362 T_Mru */ + S_ST( 't', 2, 0, 0 ), /* 363 T_Multicastclient */ + S_ST( 'c', 0, 0, 0 ), /* 364 T_Nic */ + S_ST( 'k', 0, 0, 0 ), /* 365 T_Nolink */ + S_ST( 'y', 0, 0, 0 ), /* 366 T_Nomodify */ + S_ST( 't', 0, 0, 0 ), /* 367 T_Nomrulist */ + S_ST( 'e', 0, 0, 0 ), /* 368 T_None */ + S_ST( 'e', 0, 0, 0 ), /* 369 T_Nonvolatile */ + S_ST( 'r', 0, 0, 0 ), /* 370 T_Nopeer */ + S_ST( 'y', 0, 0, 0 ), /* 371 T_Noquery */ + S_ST( 't', 0, 0, 0 ), /* 372 T_Noselect */ + S_ST( 'e', 0, 0, 0 ), /* 373 T_Noserve */ + S_ST( 'p', 0, 0, 0 ), /* 374 T_Notrap */ + S_ST( 't', 0, 0, 0 ), /* 375 T_Notrust */ + S_ST( 'p', 0, 627, 0 ), /* 376 T_Ntp */ + S_ST( 't', 0, 0, 0 ), /* 377 T_Ntpport */ + S_ST( 't', 1, 0, 0 ), /* 378 T_NtpSignDsocket */ + S_ST( 'n', 0, 642, 0 ), /* 379 T_Orphan */ + S_ST( 't', 0, 0, 0 ), /* 380 T_Orphanwait */ + S_ST( 'y', 0, 0, 0 ), /* 381 T_PCEdigest */ + S_ST( 'c', 0, 0, 0 ), /* 382 T_Panic */ + S_ST( 'r', 1, 669, 0 ), /* 383 T_Peer */ + S_ST( 's', 0, 0, 0 ), /* 384 T_Peerstats */ + S_ST( 'e', 2, 0, 0 ), /* 385 T_Phone */ + S_ST( 'd', 0, 677, 0 ), /* 386 T_Pid */ + S_ST( 'e', 1, 0, 0 ), /* 387 T_Pidfile */ + S_ST( 'l', 1, 0, 0 ), /* 388 T_Pool */ + S_ST( 't', 0, 0, 0 ), /* 389 T_Port */ + S_ST( 't', 0, 0, 0 ), /* 390 T_Preempt */ + S_ST( 'r', 0, 0, 0 ), /* 391 T_Prefer */ + S_ST( 's', 0, 0, 0 ), /* 392 T_Protostats */ + S_ST( 'w', 1, 0, 683 ), /* 393 T_Pw */ + S_ST( 'e', 1, 0, 0 ), /* 394 T_Randfile */ + S_ST( 's', 0, 0, 0 ), /* 395 T_Rawstats */ + S_ST( 'd', 1, 0, 0 ), /* 396 T_Refid */ + S_ST( 'y', 0, 0, 0 ), /* 397 T_Requestkey */ + S_ST( 't', 0, 0, 0 ), /* 398 T_Reset */ + S_ST( 't', 0, 0, 0 ), /* 399 T_Restrict */ + S_ST( 'e', 0, 0, 0 ), /* 400 T_Revoke */ + S_ST( 't', 0, 0, 0 ), /* 401 T_Rlimit */ + S_ST( 'r', 1, 0, 0 ), /* 402 T_Saveconfigdir */ + S_ST( 'r', 1, 760, 0 ), /* 403 T_Server */ + S_ST( 'r', 1, 0, 0 ), /* 404 T_Setvar */ + S_ST( 'e', 0, 0, 0 ), /* 405 T_Source */ + S_ST( 'e', 0, 0, 0 ), /* 406 T_Stacksize */ + S_ST( 's', 0, 0, 0 ), /* 407 T_Statistics */ + S_ST( 's', 0, 803, 798 ), /* 408 T_Stats */ + S_ST( 'r', 1, 0, 0 ), /* 409 T_Statsdir */ + S_ST( 'p', 0, 811, 0 ), /* 410 T_Step */ + S_ST( 'k', 0, 0, 0 ), /* 411 T_Stepback */ + S_ST( 'd', 0, 0, 0 ), /* 412 T_Stepfwd */ + S_ST( 't', 0, 0, 0 ), /* 413 T_Stepout */ + S_ST( 'm', 0, 0, 0 ), /* 414 T_Stratum */ + S_ST( 'e', 3, 430, 0 ), /* 415 leapsmearint */ + S_ST( 's', 0, 818, 0 ), /* 416 T_Sys */ + S_ST( 's', 0, 0, 0 ), /* 417 T_Sysstats */ + S_ST( 'k', 0, 0, 0 ), /* 418 T_Tick */ + S_ST( '1', 0, 0, 0 ), /* 419 T_Time1 */ + S_ST( '2', 0, 0, 419 ), /* 420 T_Time2 */ + S_ST( 'r', 0, 0, 420 ), /* 421 T_Timer */ + S_ST( 's', 0, 0, 0 ), /* 422 T_Timingstats */ + S_ST( 'r', 0, 0, 0 ), /* 423 T_Tinker */ + S_ST( 's', 0, 0, 0 ), /* 424 T_Tos */ + S_ST( 'p', 1, 0, 0 ), /* 425 T_Trap */ + S_ST( 'e', 0, 0, 0 ), /* 426 T_True */ + S_ST( 'y', 0, 0, 0 ), /* 427 T_Trustedkey */ + S_ST( 'l', 0, 0, 0 ), /* 428 T_Ttl */ + S_ST( 'e', 0, 0, 0 ), /* 429 T_Type */ + S_ST( 'r', 3, 437, 0 ), /* 430 leapsmearinte */ + S_ST( 'y', 0, 0, 0 ), /* 431 T_UEcrypto */ + S_ST( 'y', 0, 0, 0 ), /* 432 T_UEcryptonak */ + S_ST( 'y', 0, 0, 0 ), /* 433 T_UEdigest */ + S_ST( 'g', 1, 0, 0 ), /* 434 T_Unconfig */ + S_ST( 'r', 1, 860, 0 ), /* 435 T_Unpeer */ + S_ST( 'n', 0, 0, 0 ), /* 436 T_Version */ + S_ST( 'v', 3, 442, 0 ), /* 437 leapsmearinter */ + S_ST( 'k', 0, 0, 0 ), /* 438 T_Week */ + S_ST( 'd', 0, 0, 0 ), /* 439 T_Wildcard */ + S_ST( 'e', 0, 0, 0 ), /* 440 T_Xleave */ + S_ST( 'r', 0, 0, 0 ), /* 441 T_Year */ + S_ST( 'a', 3, 332, 0 ), /* 442 leapsmearinterv */ + S_ST( 'i', 3, 459, 248 ), /* 443 l */ + S_ST( 'e', 0, 0, 0 ), /* 444 T_Simulate */ + S_ST( 'y', 0, 0, 0 ), /* 445 T_Beep_Delay */ + S_ST( 'n', 0, 0, 0 ), /* 446 T_Sim_Duration */ + S_ST( 't', 0, 0, 0 ), /* 447 T_Server_Offset */ + S_ST( 'n', 0, 0, 0 ), /* 448 T_Duration */ + S_ST( 't', 0, 0, 0 ), /* 449 T_Freq_Offset */ + S_ST( 'r', 0, 0, 0 ), /* 450 T_Wander */ + S_ST( 'r', 0, 0, 0 ), /* 451 T_Jitter */ + S_ST( 'y', 0, 0, 0 ), /* 452 T_Prop_Delay */ + S_ST( 'y', 0, 0, 0 ), /* 453 T_Proc_Delay */ + S_ST( 'm', 3, 455, 0 ), /* 454 li */ + S_ST( 'i', 3, 456, 0 ), /* 455 lim */ + S_ST( 't', 3, 457, 0 ), /* 456 limi */ + S_ST( 'e', 3, 333, 0 ), /* 457 limit */ + S_ST( 'n', 3, 334, 454 ), /* 458 li */ + S_ST( 's', 3, 460, 458 ), /* 459 li */ + S_ST( 't', 3, 461, 0 ), /* 460 lis */ + S_ST( 'e', 3, 335, 0 ), /* 461 list */ + S_ST( 'o', 3, 478, 443 ), /* 462 l */ + S_ST( 'g', 3, 469, 0 ), /* 463 lo */ + S_ST( 'c', 3, 465, 0 ), /* 464 log */ + S_ST( 'o', 3, 466, 0 ), /* 465 logc */ + S_ST( 'n', 3, 467, 0 ), /* 466 logco */ + S_ST( 'f', 3, 468, 0 ), /* 467 logcon */ + S_ST( 'i', 3, 336, 0 ), /* 468 logconf */ + S_ST( 'f', 3, 470, 464 ), /* 469 log */ + S_ST( 'i', 3, 471, 0 ), /* 470 logf */ + S_ST( 'l', 3, 337, 0 ), /* 471 logfi */ + S_ST( 'o', 3, 473, 463 ), /* 472 lo */ + S_ST( 'p', 3, 474, 0 ), /* 473 loo */ + S_ST( 's', 3, 475, 0 ), /* 474 loop */ + S_ST( 't', 3, 476, 0 ), /* 475 loops */ + S_ST( 'a', 3, 477, 0 ), /* 476 loopst */ + S_ST( 't', 3, 338, 0 ), /* 477 loopsta */ + S_ST( 'w', 3, 479, 472 ), /* 478 lo */ + S_ST( 'p', 3, 480, 0 ), /* 479 low */ + S_ST( 'r', 3, 481, 0 ), /* 480 lowp */ + S_ST( 'i', 3, 482, 0 ), /* 481 lowpr */ + S_ST( 'o', 3, 483, 0 ), /* 482 lowpri */ + S_ST( 't', 3, 484, 0 ), /* 483 lowprio */ + S_ST( 'r', 3, 485, 0 ), /* 484 lowpriot */ + S_ST( 'a', 3, 339, 0 ), /* 485 lowpriotr */ + S_ST( 'm', 3, 567, 247 ), /* 486 */ + S_ST( 'a', 3, 505, 0 ), /* 487 m */ + S_ST( 'n', 3, 489, 0 ), /* 488 ma */ + S_ST( 'y', 3, 490, 0 ), /* 489 man */ + S_ST( 'c', 3, 491, 0 ), /* 490 many */ + S_ST( 'a', 3, 492, 0 ), /* 491 manyc */ + S_ST( 's', 3, 493, 0 ), /* 492 manyca */ + S_ST( 't', 3, 499, 0 ), /* 493 manycas */ + S_ST( 'c', 3, 495, 0 ), /* 494 manycast */ + S_ST( 'l', 3, 496, 0 ), /* 495 manycastc */ + S_ST( 'i', 3, 497, 0 ), /* 496 manycastcl */ + S_ST( 'e', 3, 498, 0 ), /* 497 manycastcli */ + S_ST( 'n', 3, 340, 0 ), /* 498 manycastclie */ + S_ST( 's', 3, 500, 494 ), /* 499 manycast */ + S_ST( 'e', 3, 501, 0 ), /* 500 manycasts */ + S_ST( 'r', 3, 502, 0 ), /* 501 manycastse */ + S_ST( 'v', 3, 503, 0 ), /* 502 manycastser */ + S_ST( 'e', 3, 341, 0 ), /* 503 manycastserv */ + S_ST( 's', 3, 342, 488 ), /* 504 ma */ + S_ST( 'x', 3, 520, 504 ), /* 505 ma */ + S_ST( 'a', 3, 507, 0 ), /* 506 max */ + S_ST( 'g', 3, 343, 0 ), /* 507 maxa */ + S_ST( 'c', 3, 509, 506 ), /* 508 max */ + S_ST( 'l', 3, 510, 0 ), /* 509 maxc */ + S_ST( 'o', 3, 511, 0 ), /* 510 maxcl */ + S_ST( 'c', 3, 344, 0 ), /* 511 maxclo */ + S_ST( 'd', 3, 516, 508 ), /* 512 max */ + S_ST( 'e', 3, 514, 0 ), /* 513 maxd */ + S_ST( 'p', 3, 515, 0 ), /* 514 maxde */ + S_ST( 't', 3, 345, 0 ), /* 515 maxdep */ + S_ST( 'i', 3, 517, 513 ), /* 516 maxd */ + S_ST( 's', 3, 346, 0 ), /* 517 maxdi */ + S_ST( 'm', 3, 519, 512 ), /* 518 max */ + S_ST( 'e', 3, 347, 0 ), /* 519 maxm */ + S_ST( 'p', 3, 521, 518 ), /* 520 max */ + S_ST( 'o', 3, 522, 0 ), /* 521 maxp */ + S_ST( 'l', 3, 348, 0 ), /* 522 maxpo */ + S_ST( 'd', 3, 524, 487 ), /* 523 m */ + S_ST( 'n', 3, 525, 0 ), /* 524 md */ + S_ST( 's', 3, 526, 0 ), /* 525 mdn */ + S_ST( 't', 3, 527, 0 ), /* 526 mdns */ + S_ST( 'r', 3, 528, 0 ), /* 527 mdnst */ + S_ST( 'i', 3, 529, 0 ), /* 528 mdnstr */ + S_ST( 'e', 3, 349, 0 ), /* 529 mdnstri */ + S_ST( 'e', 3, 350, 523 ), /* 530 m */ + S_ST( 'l', 3, 532, 0 ), /* 531 mem */ + S_ST( 'o', 3, 533, 0 ), /* 532 meml */ + S_ST( 'c', 3, 351, 0 ), /* 533 memlo */ + S_ST( 'i', 3, 535, 530 ), /* 534 m */ + S_ST( 'n', 3, 552, 0 ), /* 535 mi */ + S_ST( 'c', 3, 537, 0 ), /* 536 min */ + S_ST( 'l', 3, 538, 0 ), /* 537 minc */ + S_ST( 'o', 3, 539, 0 ), /* 538 mincl */ + S_ST( 'c', 3, 352, 0 ), /* 539 minclo */ + S_ST( 'd', 3, 544, 536 ), /* 540 min */ + S_ST( 'e', 3, 542, 0 ), /* 541 mind */ + S_ST( 'p', 3, 543, 0 ), /* 542 minde */ + S_ST( 't', 3, 353, 0 ), /* 543 mindep */ + S_ST( 'i', 3, 545, 541 ), /* 544 mind */ + S_ST( 's', 3, 354, 0 ), /* 545 mindi */ + S_ST( 'i', 3, 547, 540 ), /* 546 min */ + S_ST( 'm', 3, 548, 0 ), /* 547 mini */ + S_ST( 'u', 3, 355, 0 ), /* 548 minim */ + S_ST( 'p', 3, 550, 546 ), /* 549 min */ + S_ST( 'o', 3, 551, 0 ), /* 550 minp */ + S_ST( 'l', 3, 356, 0 ), /* 551 minpo */ + S_ST( 's', 3, 553, 549 ), /* 552 min */ + S_ST( 'a', 3, 554, 0 ), /* 553 mins */ + S_ST( 'n', 3, 357, 0 ), /* 554 minsa */ + S_ST( 'o', 3, 557, 534 ), /* 555 m */ + S_ST( 'd', 3, 358, 0 ), /* 556 mo */ + S_ST( 'n', 3, 561, 556 ), /* 557 mo */ + S_ST( 'i', 3, 559, 0 ), /* 558 mon */ + S_ST( 't', 3, 560, 0 ), /* 559 moni */ + S_ST( 'o', 3, 360, 0 ), /* 560 monit */ + S_ST( 't', 3, 361, 558 ), /* 561 mon */ + S_ST( 'r', 3, 362, 555 ), /* 562 m */ + S_ST( 's', 3, 564, 562 ), /* 563 m */ + S_ST( 's', 3, 565, 0 ), /* 564 ms */ + S_ST( 'n', 3, 566, 0 ), /* 565 mss */ + S_ST( 't', 3, 330, 0 ), /* 566 mssn */ + S_ST( 'u', 3, 568, 563 ), /* 567 m */ + S_ST( 'l', 3, 569, 0 ), /* 568 mu */ + S_ST( 't', 3, 570, 0 ), /* 569 mul */ + S_ST( 'i', 3, 571, 0 ), /* 570 mult */ + S_ST( 'c', 3, 572, 0 ), /* 571 multi */ + S_ST( 'a', 3, 573, 0 ), /* 572 multic */ + S_ST( 's', 3, 574, 0 ), /* 573 multica */ + S_ST( 't', 3, 575, 0 ), /* 574 multicas */ + S_ST( 'c', 3, 576, 0 ), /* 575 multicast */ + S_ST( 'l', 3, 577, 0 ), /* 576 multicastc */ + S_ST( 'i', 3, 578, 0 ), /* 577 multicastcl */ + S_ST( 'e', 3, 579, 0 ), /* 578 multicastcli */ + S_ST( 'n', 3, 363, 0 ), /* 579 multicastclie */ + S_ST( 'n', 3, 623, 486 ), /* 580 */ + S_ST( 'i', 3, 364, 0 ), /* 581 n */ + S_ST( 'o', 3, 618, 581 ), /* 582 n */ + S_ST( 'l', 3, 584, 0 ), /* 583 no */ + S_ST( 'i', 3, 585, 0 ), /* 584 nol */ + S_ST( 'n', 3, 365, 0 ), /* 585 noli */ + S_ST( 'm', 3, 591, 583 ), /* 586 no */ + S_ST( 'o', 3, 588, 0 ), /* 587 nom */ + S_ST( 'd', 3, 589, 0 ), /* 588 nomo */ + S_ST( 'i', 3, 590, 0 ), /* 589 nomod */ + S_ST( 'f', 3, 366, 0 ), /* 590 nomodi */ + S_ST( 'r', 3, 592, 587 ), /* 591 nom */ + S_ST( 'u', 3, 593, 0 ), /* 592 nomr */ + S_ST( 'l', 3, 594, 0 ), /* 593 nomru */ + S_ST( 'i', 3, 595, 0 ), /* 594 nomrul */ + S_ST( 's', 3, 367, 0 ), /* 595 nomruli */ + S_ST( 'n', 3, 597, 586 ), /* 596 no */ + S_ST( 'v', 3, 598, 368 ), /* 597 non */ + S_ST( 'o', 3, 599, 0 ), /* 598 nonv */ + S_ST( 'l', 3, 600, 0 ), /* 599 nonvo */ + S_ST( 'a', 3, 601, 0 ), /* 600 nonvol */ + S_ST( 't', 3, 602, 0 ), /* 601 nonvola */ + S_ST( 'i', 3, 603, 0 ), /* 602 nonvolat */ + S_ST( 'l', 3, 369, 0 ), /* 603 nonvolati */ + S_ST( 'p', 3, 605, 596 ), /* 604 no */ + S_ST( 'e', 3, 606, 0 ), /* 605 nop */ + S_ST( 'e', 3, 370, 0 ), /* 606 nope */ + S_ST( 'q', 3, 608, 604 ), /* 607 no */ + S_ST( 'u', 3, 609, 0 ), /* 608 noq */ + S_ST( 'e', 3, 610, 0 ), /* 609 noqu */ + S_ST( 'r', 3, 371, 0 ), /* 610 noque */ + S_ST( 's', 3, 612, 607 ), /* 611 no */ + S_ST( 'e', 3, 616, 0 ), /* 612 nos */ + S_ST( 'l', 3, 614, 0 ), /* 613 nose */ + S_ST( 'e', 3, 615, 0 ), /* 614 nosel */ + S_ST( 'c', 3, 372, 0 ), /* 615 nosele */ + S_ST( 'r', 3, 617, 613 ), /* 616 nose */ + S_ST( 'v', 3, 373, 0 ), /* 617 noser */ + S_ST( 't', 3, 619, 611 ), /* 618 no */ + S_ST( 'r', 3, 621, 0 ), /* 619 not */ + S_ST( 'a', 3, 374, 0 ), /* 620 notr */ + S_ST( 'u', 3, 622, 620 ), /* 621 notr */ + S_ST( 's', 3, 375, 0 ), /* 622 notru */ + S_ST( 't', 3, 376, 582 ), /* 623 n */ + S_ST( 'p', 3, 625, 0 ), /* 624 ntp */ + S_ST( 'o', 3, 626, 0 ), /* 625 ntpp */ + S_ST( 'r', 3, 377, 0 ), /* 626 ntppo */ + S_ST( 's', 3, 628, 624 ), /* 627 ntp */ + S_ST( 'i', 3, 629, 0 ), /* 628 ntps */ + S_ST( 'g', 3, 630, 0 ), /* 629 ntpsi */ + S_ST( 'n', 3, 631, 0 ), /* 630 ntpsig */ + S_ST( 'd', 3, 632, 0 ), /* 631 ntpsign */ + S_ST( 's', 3, 633, 0 ), /* 632 ntpsignd */ + S_ST( 'o', 3, 634, 0 ), /* 633 ntpsignds */ + S_ST( 'c', 3, 635, 0 ), /* 634 ntpsigndso */ + S_ST( 'k', 3, 636, 0 ), /* 635 ntpsigndsoc */ + S_ST( 'e', 3, 378, 0 ), /* 636 ntpsigndsock */ + S_ST( 'o', 3, 638, 580 ), /* 637 */ + S_ST( 'r', 3, 639, 0 ), /* 638 o */ + S_ST( 'p', 3, 640, 0 ), /* 639 or */ + S_ST( 'h', 3, 641, 0 ), /* 640 orp */ + S_ST( 'a', 3, 379, 0 ), /* 641 orph */ + S_ST( 'w', 3, 643, 0 ), /* 642 orphan */ + S_ST( 'a', 3, 644, 0 ), /* 643 orphanw */ + S_ST( 'i', 3, 380, 0 ), /* 644 orphanwa */ + S_ST( 'p', 3, 393, 637 ), /* 645 */ + S_ST( 'a', 3, 647, 0 ), /* 646 p */ + S_ST( 'n', 3, 648, 0 ), /* 647 pa */ + S_ST( 'i', 3, 382, 0 ), /* 648 pan */ + S_ST( 'e', 3, 650, 646 ), /* 649 p */ + S_ST( 'e', 3, 383, 0 ), /* 650 pe */ + S_ST( '_', 3, 652, 0 ), /* 651 peer */ + S_ST( 'c', 3, 653, 0 ), /* 652 peer_ */ + S_ST( 'l', 3, 654, 0 ), /* 653 peer_c */ + S_ST( 'e', 3, 655, 0 ), /* 654 peer_cl */ + S_ST( 'a', 3, 656, 0 ), /* 655 peer_cle */ + S_ST( 'r', 3, 657, 0 ), /* 656 peer_clea */ + S_ST( '_', 3, 658, 0 ), /* 657 peer_clear */ + S_ST( 'd', 3, 659, 0 ), /* 658 peer_clear_ */ + S_ST( 'i', 3, 660, 0 ), /* 659 peer_clear_d */ + S_ST( 'g', 3, 661, 0 ), /* 660 peer_clear_di */ + S_ST( 'e', 3, 662, 0 ), /* 661 peer_clear_dig */ + S_ST( 's', 3, 663, 0 ), /* 662 peer_clear_dige */ + S_ST( 't', 3, 664, 0 ), /* 663 peer_clear_diges */ + S_ST( '_', 3, 665, 0 ), /* 664 peer_clear_digest */ + S_ST( 'e', 3, 666, 0 ), /* 665 peer_clear_digest_ */ + S_ST( 'a', 3, 667, 0 ), /* 666 peer_clear_digest_e */ + S_ST( 'r', 3, 668, 0 ), /* 667 peer_clear_digest_ea */ + S_ST( 'l', 3, 381, 0 ), /* 668 peer_clear_digest_ear */ + S_ST( 's', 3, 670, 651 ), /* 669 peer */ + S_ST( 't', 3, 671, 0 ), /* 670 peers */ + S_ST( 'a', 3, 672, 0 ), /* 671 peerst */ + S_ST( 't', 3, 384, 0 ), /* 672 peersta */ + S_ST( 'h', 3, 674, 649 ), /* 673 p */ + S_ST( 'o', 3, 675, 0 ), /* 674 ph */ + S_ST( 'n', 3, 385, 0 ), /* 675 pho */ + S_ST( 'i', 3, 386, 673 ), /* 676 p */ + S_ST( 'f', 3, 678, 0 ), /* 677 pid */ + S_ST( 'i', 3, 679, 0 ), /* 678 pidf */ + S_ST( 'l', 3, 387, 0 ), /* 679 pidfi */ + S_ST( 'o', 3, 682, 676 ), /* 680 p */ + S_ST( 'o', 3, 388, 0 ), /* 681 po */ + S_ST( 'r', 3, 389, 681 ), /* 682 po */ + S_ST( 'r', 3, 690, 680 ), /* 683 p */ + S_ST( 'e', 3, 688, 0 ), /* 684 pr */ + S_ST( 'e', 3, 686, 0 ), /* 685 pre */ + S_ST( 'm', 3, 687, 0 ), /* 686 pree */ + S_ST( 'p', 3, 390, 0 ), /* 687 preem */ + S_ST( 'f', 3, 689, 685 ), /* 688 pre */ + S_ST( 'e', 3, 391, 0 ), /* 689 pref */ + S_ST( 'o', 3, 703, 684 ), /* 690 pr */ + S_ST( 'c', 3, 692, 0 ), /* 691 pro */ + S_ST( '_', 3, 693, 0 ), /* 692 proc */ + S_ST( 'd', 3, 694, 0 ), /* 693 proc_ */ + S_ST( 'e', 3, 695, 0 ), /* 694 proc_d */ + S_ST( 'l', 3, 696, 0 ), /* 695 proc_de */ + S_ST( 'a', 3, 453, 0 ), /* 696 proc_del */ + S_ST( 'p', 3, 698, 691 ), /* 697 pro */ + S_ST( '_', 3, 699, 0 ), /* 698 prop */ + S_ST( 'd', 3, 700, 0 ), /* 699 prop_ */ + S_ST( 'e', 3, 701, 0 ), /* 700 prop_d */ + S_ST( 'l', 3, 702, 0 ), /* 701 prop_de */ + S_ST( 'a', 3, 452, 0 ), /* 702 prop_del */ + S_ST( 't', 3, 704, 697 ), /* 703 pro */ + S_ST( 'o', 3, 705, 0 ), /* 704 prot */ + S_ST( 's', 3, 706, 0 ), /* 705 proto */ + S_ST( 't', 3, 707, 0 ), /* 706 protos */ + S_ST( 'a', 3, 708, 0 ), /* 707 protost */ + S_ST( 't', 3, 392, 0 ), /* 708 protosta */ + S_ST( 'r', 3, 740, 645 ), /* 709 */ + S_ST( 'a', 3, 716, 0 ), /* 710 r */ + S_ST( 'n', 3, 712, 0 ), /* 711 ra */ + S_ST( 'd', 3, 713, 0 ), /* 712 ran */ + S_ST( 'f', 3, 714, 0 ), /* 713 rand */ + S_ST( 'i', 3, 715, 0 ), /* 714 randf */ + S_ST( 'l', 3, 394, 0 ), /* 715 randfi */ + S_ST( 'w', 3, 717, 711 ), /* 716 ra */ + S_ST( 's', 3, 718, 0 ), /* 717 raw */ + S_ST( 't', 3, 719, 0 ), /* 718 raws */ + S_ST( 'a', 3, 720, 0 ), /* 719 rawst */ + S_ST( 't', 3, 395, 0 ), /* 720 rawsta */ + S_ST( 'e', 3, 737, 710 ), /* 721 r */ + S_ST( 'f', 3, 723, 0 ), /* 722 re */ + S_ST( 'i', 3, 396, 0 ), /* 723 ref */ + S_ST( 'q', 3, 725, 722 ), /* 724 re */ + S_ST( 'u', 3, 726, 0 ), /* 725 req */ + S_ST( 'e', 3, 727, 0 ), /* 726 requ */ + S_ST( 's', 3, 728, 0 ), /* 727 reque */ + S_ST( 't', 3, 729, 0 ), /* 728 reques */ + S_ST( 'k', 3, 730, 0 ), /* 729 request */ + S_ST( 'e', 3, 397, 0 ), /* 730 requestk */ + S_ST( 's', 3, 733, 724 ), /* 731 re */ + S_ST( 'e', 3, 398, 0 ), /* 732 res */ + S_ST( 't', 3, 734, 732 ), /* 733 res */ + S_ST( 'r', 3, 735, 0 ), /* 734 rest */ + S_ST( 'i', 3, 736, 0 ), /* 735 restr */ + S_ST( 'c', 3, 399, 0 ), /* 736 restri */ + S_ST( 'v', 3, 738, 731 ), /* 737 re */ + S_ST( 'o', 3, 739, 0 ), /* 738 rev */ + S_ST( 'k', 3, 400, 0 ), /* 739 revo */ + S_ST( 'l', 3, 741, 721 ), /* 740 r */ + S_ST( 'i', 3, 742, 0 ), /* 741 rl */ + S_ST( 'm', 3, 743, 0 ), /* 742 rli */ + S_ST( 'i', 3, 401, 0 ), /* 743 rlim */ + S_ST( 's', 3, 817, 709 ), /* 744 */ + S_ST( 'a', 3, 746, 0 ), /* 745 s */ + S_ST( 'v', 3, 747, 0 ), /* 746 sa */ + S_ST( 'e', 3, 748, 0 ), /* 747 sav */ + S_ST( 'c', 3, 749, 0 ), /* 748 save */ + S_ST( 'o', 3, 750, 0 ), /* 749 savec */ + S_ST( 'n', 3, 751, 0 ), /* 750 saveco */ + S_ST( 'f', 3, 752, 0 ), /* 751 savecon */ + S_ST( 'i', 3, 753, 0 ), /* 752 saveconf */ + S_ST( 'g', 3, 754, 0 ), /* 753 saveconfi */ + S_ST( 'd', 3, 755, 0 ), /* 754 saveconfig */ + S_ST( 'i', 3, 402, 0 ), /* 755 saveconfigd */ + S_ST( 'e', 3, 766, 745 ), /* 756 s */ + S_ST( 'r', 3, 758, 0 ), /* 757 se */ + S_ST( 'v', 3, 759, 0 ), /* 758 ser */ + S_ST( 'e', 3, 403, 0 ), /* 759 serv */ + S_ST( '_', 3, 761, 0 ), /* 760 server */ + S_ST( 'o', 3, 762, 0 ), /* 761 server_ */ + S_ST( 'f', 3, 763, 0 ), /* 762 server_o */ + S_ST( 'f', 3, 764, 0 ), /* 763 server_of */ + S_ST( 's', 3, 765, 0 ), /* 764 server_off */ + S_ST( 'e', 3, 447, 0 ), /* 765 server_offs */ + S_ST( 't', 3, 767, 757 ), /* 766 se */ + S_ST( 'v', 3, 768, 0 ), /* 767 set */ + S_ST( 'a', 3, 404, 0 ), /* 768 setv */ + S_ST( 'i', 3, 770, 756 ), /* 769 s */ + S_ST( 'm', 3, 771, 0 ), /* 770 si */ + S_ST( 'u', 3, 772, 0 ), /* 771 sim */ + S_ST( 'l', 3, 773, 0 ), /* 772 simu */ + S_ST( 'a', 3, 774, 0 ), /* 773 simul */ + S_ST( 't', 3, 775, 0 ), /* 774 simula */ + S_ST( 'i', 3, 776, 444 ), /* 775 simulat */ + S_ST( 'o', 3, 777, 0 ), /* 776 simulati */ + S_ST( 'n', 3, 778, 0 ), /* 777 simulatio */ + S_ST( '_', 3, 779, 0 ), /* 778 simulation */ + S_ST( 'd', 3, 780, 0 ), /* 779 simulation_ */ + S_ST( 'u', 3, 781, 0 ), /* 780 simulation_d */ + S_ST( 'r', 3, 782, 0 ), /* 781 simulation_du */ + S_ST( 'a', 3, 783, 0 ), /* 782 simulation_dur */ + S_ST( 't', 3, 784, 0 ), /* 783 simulation_dura */ + S_ST( 'i', 3, 785, 0 ), /* 784 simulation_durat */ + S_ST( 'o', 3, 446, 0 ), /* 785 simulation_durati */ + S_ST( 'o', 3, 787, 769 ), /* 786 s */ + S_ST( 'u', 3, 788, 0 ), /* 787 so */ + S_ST( 'r', 3, 789, 0 ), /* 788 sou */ + S_ST( 'c', 3, 405, 0 ), /* 789 sour */ + S_ST( 't', 3, 813, 786 ), /* 790 s */ + S_ST( 'a', 3, 797, 0 ), /* 791 st */ + S_ST( 'c', 3, 793, 0 ), /* 792 sta */ + S_ST( 'k', 3, 794, 0 ), /* 793 stac */ + S_ST( 's', 3, 795, 0 ), /* 794 stack */ + S_ST( 'i', 3, 796, 0 ), /* 795 stacks */ + S_ST( 'z', 3, 406, 0 ), /* 796 stacksi */ + S_ST( 't', 3, 408, 792 ), /* 797 sta */ + S_ST( 'i', 3, 799, 0 ), /* 798 stat */ + S_ST( 's', 3, 800, 0 ), /* 799 stati */ + S_ST( 't', 3, 801, 0 ), /* 800 statis */ + S_ST( 'i', 3, 802, 0 ), /* 801 statist */ + S_ST( 'c', 3, 407, 0 ), /* 802 statisti */ + S_ST( 'd', 3, 804, 0 ), /* 803 stats */ + S_ST( 'i', 3, 409, 0 ), /* 804 statsd */ + S_ST( 'e', 3, 410, 791 ), /* 805 st */ + S_ST( 'b', 3, 807, 0 ), /* 806 step */ + S_ST( 'a', 3, 808, 0 ), /* 807 stepb */ + S_ST( 'c', 3, 411, 0 ), /* 808 stepba */ + S_ST( 'f', 3, 810, 806 ), /* 809 step */ + S_ST( 'w', 3, 412, 0 ), /* 810 stepf */ + S_ST( 'o', 3, 812, 809 ), /* 811 step */ + S_ST( 'u', 3, 413, 0 ), /* 812 stepo */ + S_ST( 'r', 3, 814, 805 ), /* 813 st */ + S_ST( 'a', 3, 815, 0 ), /* 814 str */ + S_ST( 't', 3, 816, 0 ), /* 815 stra */ + S_ST( 'u', 3, 414, 0 ), /* 816 strat */ + S_ST( 'y', 3, 416, 790 ), /* 817 s */ + S_ST( 's', 3, 819, 0 ), /* 818 sys */ + S_ST( 't', 3, 820, 0 ), /* 819 syss */ + S_ST( 'a', 3, 821, 0 ), /* 820 sysst */ + S_ST( 't', 3, 417, 0 ), /* 821 syssta */ + S_ST( 't', 3, 848, 744 ), /* 822 */ + S_ST( 'i', 3, 834, 0 ), /* 823 t */ + S_ST( 'c', 3, 418, 0 ), /* 824 ti */ + S_ST( 'm', 3, 827, 824 ), /* 825 ti */ + S_ST( 'e', 3, 421, 0 ), /* 826 tim */ + S_ST( 'i', 3, 828, 826 ), /* 827 tim */ + S_ST( 'n', 3, 829, 0 ), /* 828 timi */ + S_ST( 'g', 3, 830, 0 ), /* 829 timin */ + S_ST( 's', 3, 831, 0 ), /* 830 timing */ + S_ST( 't', 3, 832, 0 ), /* 831 timings */ + S_ST( 'a', 3, 833, 0 ), /* 832 timingst */ + S_ST( 't', 3, 422, 0 ), /* 833 timingsta */ + S_ST( 'n', 3, 835, 825 ), /* 834 ti */ + S_ST( 'k', 3, 836, 0 ), /* 835 tin */ + S_ST( 'e', 3, 423, 0 ), /* 836 tink */ + S_ST( 'o', 3, 424, 823 ), /* 837 t */ + S_ST( 'r', 3, 840, 837 ), /* 838 t */ + S_ST( 'a', 3, 425, 0 ), /* 839 tr */ + S_ST( 'u', 3, 841, 839 ), /* 840 tr */ + S_ST( 's', 3, 842, 426 ), /* 841 tru */ + S_ST( 't', 3, 843, 0 ), /* 842 trus */ + S_ST( 'e', 3, 844, 0 ), /* 843 trust */ + S_ST( 'd', 3, 845, 0 ), /* 844 truste */ + S_ST( 'k', 3, 846, 0 ), /* 845 trusted */ + S_ST( 'e', 3, 427, 0 ), /* 846 trustedk */ + S_ST( 't', 3, 428, 838 ), /* 847 t */ + S_ST( 'y', 3, 849, 847 ), /* 848 t */ + S_ST( 'p', 3, 429, 0 ), /* 849 ty */ + S_ST( 'u', 3, 851, 822 ), /* 850 */ + S_ST( 'n', 3, 857, 0 ), /* 851 u */ + S_ST( 'c', 3, 853, 0 ), /* 852 un */ + S_ST( 'o', 3, 854, 0 ), /* 853 unc */ + S_ST( 'n', 3, 855, 0 ), /* 854 unco */ + S_ST( 'f', 3, 856, 0 ), /* 855 uncon */ + S_ST( 'i', 3, 434, 0 ), /* 856 unconf */ + S_ST( 'p', 3, 858, 852 ), /* 857 un */ + S_ST( 'e', 3, 859, 0 ), /* 858 unp */ + S_ST( 'e', 3, 435, 0 ), /* 859 unpe */ + S_ST( '_', 3, 880, 0 ), /* 860 unpeer */ + S_ST( 'c', 3, 862, 0 ), /* 861 unpeer_ */ + S_ST( 'r', 3, 863, 0 ), /* 862 unpeer_c */ + S_ST( 'y', 3, 864, 0 ), /* 863 unpeer_cr */ + S_ST( 'p', 3, 865, 0 ), /* 864 unpeer_cry */ + S_ST( 't', 3, 866, 0 ), /* 865 unpeer_cryp */ + S_ST( 'o', 3, 867, 0 ), /* 866 unpeer_crypt */ + S_ST( '_', 3, 872, 0 ), /* 867 unpeer_crypto */ + S_ST( 'e', 3, 869, 0 ), /* 868 unpeer_crypto_ */ + S_ST( 'a', 3, 870, 0 ), /* 869 unpeer_crypto_e */ + S_ST( 'r', 3, 871, 0 ), /* 870 unpeer_crypto_ea */ + S_ST( 'l', 3, 431, 0 ), /* 871 unpeer_crypto_ear */ + S_ST( 'n', 3, 873, 868 ), /* 872 unpeer_crypto_ */ + S_ST( 'a', 3, 874, 0 ), /* 873 unpeer_crypto_n */ + S_ST( 'k', 3, 875, 0 ), /* 874 unpeer_crypto_na */ + S_ST( '_', 3, 876, 0 ), /* 875 unpeer_crypto_nak */ + S_ST( 'e', 3, 877, 0 ), /* 876 unpeer_crypto_nak_ */ + S_ST( 'a', 3, 878, 0 ), /* 877 unpeer_crypto_nak_e */ + S_ST( 'r', 3, 879, 0 ), /* 878 unpeer_crypto_nak_ea */ + S_ST( 'l', 3, 432, 0 ), /* 879 unpeer_crypto_nak_ear */ + S_ST( 'd', 3, 881, 861 ), /* 880 unpeer_ */ + S_ST( 'i', 3, 882, 0 ), /* 881 unpeer_d */ + S_ST( 'g', 3, 883, 0 ), /* 882 unpeer_di */ + S_ST( 'e', 3, 884, 0 ), /* 883 unpeer_dig */ + S_ST( 's', 3, 885, 0 ), /* 884 unpeer_dige */ + S_ST( 't', 3, 886, 0 ), /* 885 unpeer_diges */ + S_ST( '_', 3, 887, 0 ), /* 886 unpeer_digest */ + S_ST( 'e', 3, 888, 0 ), /* 887 unpeer_digest_ */ + S_ST( 'a', 3, 889, 0 ), /* 888 unpeer_digest_e */ + S_ST( 'r', 3, 890, 0 ), /* 889 unpeer_digest_ea */ + S_ST( 'l', 3, 433, 0 ), /* 890 unpeer_digest_ear */ + S_ST( 'v', 3, 892, 850 ), /* 891 */ + S_ST( 'e', 3, 893, 0 ), /* 892 v */ + S_ST( 'r', 3, 894, 0 ), /* 893 ve */ + S_ST( 's', 3, 895, 0 ), /* 894 ver */ + S_ST( 'i', 3, 896, 0 ), /* 895 vers */ + S_ST( 'o', 3, 436, 0 ), /* 896 versi */ + S_ST( 'w', 3, 904, 891 ), /* 897 */ + S_ST( 'a', 3, 899, 0 ), /* 898 w */ + S_ST( 'n', 3, 900, 0 ), /* 899 wa */ + S_ST( 'd', 3, 901, 0 ), /* 900 wan */ + S_ST( 'e', 3, 450, 0 ), /* 901 wand */ + S_ST( 'e', 3, 903, 898 ), /* 902 w */ + S_ST( 'e', 3, 438, 0 ), /* 903 we */ + S_ST( 'i', 3, 905, 902 ), /* 904 w */ + S_ST( 'l', 3, 906, 0 ), /* 905 wi */ + S_ST( 'd', 3, 907, 0 ), /* 906 wil */ + S_ST( 'c', 3, 908, 0 ), /* 907 wild */ + S_ST( 'a', 3, 909, 0 ), /* 908 wildc */ + S_ST( 'r', 3, 439, 0 ), /* 909 wildca */ + S_ST( 'x', 3, 911, 897 ), /* 910 */ + S_ST( 'l', 3, 912, 0 ), /* 911 x */ + S_ST( 'e', 3, 913, 0 ), /* 912 xl */ + S_ST( 'a', 3, 914, 0 ), /* 913 xle */ + S_ST( 'v', 3, 440, 0 ), /* 914 xlea */ + S_ST( 'y', 3, 916, 910 ), /* 915 [initial state] */ + S_ST( 'e', 3, 917, 0 ), /* 916 y */ + S_ST( 'a', 3, 441, 0 ) /* 917 ye */ }; diff --git a/contrib/ntp/ntpd/ntp_loopfilter.c b/contrib/ntp/ntpd/ntp_loopfilter.c index 4b38aa8..c8320c4 100644 --- a/contrib/ntp/ntpd/ntp_loopfilter.c +++ b/contrib/ntp/ntpd/ntp_loopfilter.c @@ -701,9 +701,10 @@ local_clock( * where the FLL becomes effective. */ if (sys_poll >= allan_xpt) - clock_frequency += (fp_offset - - clock_offset) / max(ULOGTOD(sys_poll), - mu) * CLOCK_FLL; + clock_frequency += + (fp_offset - clock_offset) + / ( max(ULOGTOD(sys_poll), mu) + * CLOCK_FLL); /* * The PLL frequency gain (numerator) depends on @@ -713,8 +714,8 @@ local_clock( */ etemp = min(ULOGTOD(allan_xpt), mu); dtemp = 4 * CLOCK_PLL * ULOGTOD(sys_poll); - clock_frequency += fp_offset * etemp / (dtemp * - dtemp); + clock_frequency += + fp_offset * etemp / (dtemp * dtemp); } rstclock(EVNT_SYNC, fp_offset); if (fabs(fp_offset) < CLOCK_FLOOR) diff --git a/contrib/ntp/ntpd/ntp_parser.c b/contrib/ntp/ntpd/ntp_parser.c index c432694..acf0ad7 100644 --- a/contrib/ntp/ntpd/ntp_parser.c +++ b/contrib/ntp/ntpd/ntp_parser.c @@ -96,7 +96,7 @@ # define ONLY_SIM(a) NULL #endif -#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339 */ +#line 100 "ntp_parser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -141,191 +141,192 @@ extern int yydebug; T_Automax = 265, T_Average = 266, T_Bclient = 267, - T_Beacon = 268, - T_Broadcast = 269, - T_Broadcastclient = 270, - T_Broadcastdelay = 271, - T_Burst = 272, - T_Calibrate = 273, - T_Ceiling = 274, - T_Clockstats = 275, - T_Cohort = 276, - T_ControlKey = 277, - T_Crypto = 278, - T_Cryptostats = 279, - T_Ctl = 280, - T_Day = 281, - T_Default = 282, - T_Digest = 283, - T_Disable = 284, - T_Discard = 285, - T_Dispersion = 286, - T_Double = 287, - T_Driftfile = 288, - T_Drop = 289, - T_Dscp = 290, - T_Ellipsis = 291, - T_Enable = 292, - T_End = 293, - T_False = 294, - T_File = 295, - T_Filegen = 296, - T_Filenum = 297, - T_Flag1 = 298, - T_Flag2 = 299, - T_Flag3 = 300, - T_Flag4 = 301, - T_Flake = 302, - T_Floor = 303, - T_Freq = 304, - T_Fudge = 305, - T_Host = 306, - T_Huffpuff = 307, - T_Iburst = 308, - T_Ident = 309, - T_Ignore = 310, - T_Incalloc = 311, - T_Incmem = 312, - T_Initalloc = 313, - T_Initmem = 314, - T_Includefile = 315, - T_Integer = 316, - T_Interface = 317, - T_Intrange = 318, - T_Io = 319, - T_Ipv4 = 320, - T_Ipv4_flag = 321, - T_Ipv6 = 322, - T_Ipv6_flag = 323, - T_Kernel = 324, - T_Key = 325, - T_Keys = 326, - T_Keysdir = 327, - T_Kod = 328, - T_Mssntp = 329, - T_Leapfile = 330, - T_Leapsmearinterval = 331, - T_Limited = 332, - T_Link = 333, - T_Listen = 334, - T_Logconfig = 335, - T_Logfile = 336, - T_Loopstats = 337, - T_Lowpriotrap = 338, - T_Manycastclient = 339, - T_Manycastserver = 340, - T_Mask = 341, - T_Maxage = 342, - T_Maxclock = 343, - T_Maxdepth = 344, - T_Maxdist = 345, - T_Maxmem = 346, - T_Maxpoll = 347, - T_Mdnstries = 348, - T_Mem = 349, - T_Memlock = 350, - T_Minclock = 351, - T_Mindepth = 352, - T_Mindist = 353, - T_Minimum = 354, - T_Minpoll = 355, - T_Minsane = 356, - T_Mode = 357, - T_Mode7 = 358, - T_Monitor = 359, - T_Month = 360, - T_Mru = 361, - T_Multicastclient = 362, - T_Nic = 363, - T_Nolink = 364, - T_Nomodify = 365, - T_Nomrulist = 366, - T_None = 367, - T_Nonvolatile = 368, - T_Nopeer = 369, - T_Noquery = 370, - T_Noselect = 371, - T_Noserve = 372, - T_Notrap = 373, - T_Notrust = 374, - T_Ntp = 375, - T_Ntpport = 376, - T_NtpSignDsocket = 377, - T_Orphan = 378, - T_Orphanwait = 379, - T_PCEdigest = 380, - T_Panic = 381, - T_Peer = 382, - T_Peerstats = 383, - T_Phone = 384, - T_Pid = 385, - T_Pidfile = 386, - T_Pool = 387, - T_Port = 388, - T_Preempt = 389, - T_Prefer = 390, - T_Protostats = 391, - T_Pw = 392, - T_Randfile = 393, - T_Rawstats = 394, - T_Refid = 395, - T_Requestkey = 396, - T_Reset = 397, - T_Restrict = 398, - T_Revoke = 399, - T_Rlimit = 400, - T_Saveconfigdir = 401, - T_Server = 402, - T_Setvar = 403, - T_Source = 404, - T_Stacksize = 405, - T_Statistics = 406, - T_Stats = 407, - T_Statsdir = 408, - T_Step = 409, - T_Stepback = 410, - T_Stepfwd = 411, - T_Stepout = 412, - T_Stratum = 413, - T_String = 414, - T_Sys = 415, - T_Sysstats = 416, - T_Tick = 417, - T_Time1 = 418, - T_Time2 = 419, - T_Timer = 420, - T_Timingstats = 421, - T_Tinker = 422, - T_Tos = 423, - T_Trap = 424, - T_True = 425, - T_Trustedkey = 426, - T_Ttl = 427, - T_Type = 428, - T_U_int = 429, - T_UEcrypto = 430, - T_UEcryptonak = 431, - T_UEdigest = 432, - T_Unconfig = 433, - T_Unpeer = 434, - T_Version = 435, - T_WanderThreshold = 436, - T_Week = 437, - T_Wildcard = 438, - T_Xleave = 439, - T_Year = 440, - T_Flag = 441, - T_EOC = 442, - T_Simulate = 443, - T_Beep_Delay = 444, - T_Sim_Duration = 445, - T_Server_Offset = 446, - T_Duration = 447, - T_Freq_Offset = 448, - T_Wander = 449, - T_Jitter = 450, - T_Prop_Delay = 451, - T_Proc_Delay = 452 + T_Bcpollbstep = 268, + T_Beacon = 269, + T_Broadcast = 270, + T_Broadcastclient = 271, + T_Broadcastdelay = 272, + T_Burst = 273, + T_Calibrate = 274, + T_Ceiling = 275, + T_Clockstats = 276, + T_Cohort = 277, + T_ControlKey = 278, + T_Crypto = 279, + T_Cryptostats = 280, + T_Ctl = 281, + T_Day = 282, + T_Default = 283, + T_Digest = 284, + T_Disable = 285, + T_Discard = 286, + T_Dispersion = 287, + T_Double = 288, + T_Driftfile = 289, + T_Drop = 290, + T_Dscp = 291, + T_Ellipsis = 292, + T_Enable = 293, + T_End = 294, + T_False = 295, + T_File = 296, + T_Filegen = 297, + T_Filenum = 298, + T_Flag1 = 299, + T_Flag2 = 300, + T_Flag3 = 301, + T_Flag4 = 302, + T_Flake = 303, + T_Floor = 304, + T_Freq = 305, + T_Fudge = 306, + T_Host = 307, + T_Huffpuff = 308, + T_Iburst = 309, + T_Ident = 310, + T_Ignore = 311, + T_Incalloc = 312, + T_Incmem = 313, + T_Initalloc = 314, + T_Initmem = 315, + T_Includefile = 316, + T_Integer = 317, + T_Interface = 318, + T_Intrange = 319, + T_Io = 320, + T_Ipv4 = 321, + T_Ipv4_flag = 322, + T_Ipv6 = 323, + T_Ipv6_flag = 324, + T_Kernel = 325, + T_Key = 326, + T_Keys = 327, + T_Keysdir = 328, + T_Kod = 329, + T_Mssntp = 330, + T_Leapfile = 331, + T_Leapsmearinterval = 332, + T_Limited = 333, + T_Link = 334, + T_Listen = 335, + T_Logconfig = 336, + T_Logfile = 337, + T_Loopstats = 338, + T_Lowpriotrap = 339, + T_Manycastclient = 340, + T_Manycastserver = 341, + T_Mask = 342, + T_Maxage = 343, + T_Maxclock = 344, + T_Maxdepth = 345, + T_Maxdist = 346, + T_Maxmem = 347, + T_Maxpoll = 348, + T_Mdnstries = 349, + T_Mem = 350, + T_Memlock = 351, + T_Minclock = 352, + T_Mindepth = 353, + T_Mindist = 354, + T_Minimum = 355, + T_Minpoll = 356, + T_Minsane = 357, + T_Mode = 358, + T_Mode7 = 359, + T_Monitor = 360, + T_Month = 361, + T_Mru = 362, + T_Multicastclient = 363, + T_Nic = 364, + T_Nolink = 365, + T_Nomodify = 366, + T_Nomrulist = 367, + T_None = 368, + T_Nonvolatile = 369, + T_Nopeer = 370, + T_Noquery = 371, + T_Noselect = 372, + T_Noserve = 373, + T_Notrap = 374, + T_Notrust = 375, + T_Ntp = 376, + T_Ntpport = 377, + T_NtpSignDsocket = 378, + T_Orphan = 379, + T_Orphanwait = 380, + T_PCEdigest = 381, + T_Panic = 382, + T_Peer = 383, + T_Peerstats = 384, + T_Phone = 385, + T_Pid = 386, + T_Pidfile = 387, + T_Pool = 388, + T_Port = 389, + T_Preempt = 390, + T_Prefer = 391, + T_Protostats = 392, + T_Pw = 393, + T_Randfile = 394, + T_Rawstats = 395, + T_Refid = 396, + T_Requestkey = 397, + T_Reset = 398, + T_Restrict = 399, + T_Revoke = 400, + T_Rlimit = 401, + T_Saveconfigdir = 402, + T_Server = 403, + T_Setvar = 404, + T_Source = 405, + T_Stacksize = 406, + T_Statistics = 407, + T_Stats = 408, + T_Statsdir = 409, + T_Step = 410, + T_Stepback = 411, + T_Stepfwd = 412, + T_Stepout = 413, + T_Stratum = 414, + T_String = 415, + T_Sys = 416, + T_Sysstats = 417, + T_Tick = 418, + T_Time1 = 419, + T_Time2 = 420, + T_Timer = 421, + T_Timingstats = 422, + T_Tinker = 423, + T_Tos = 424, + T_Trap = 425, + T_True = 426, + T_Trustedkey = 427, + T_Ttl = 428, + T_Type = 429, + T_U_int = 430, + T_UEcrypto = 431, + T_UEcryptonak = 432, + T_UEdigest = 433, + T_Unconfig = 434, + T_Unpeer = 435, + T_Version = 436, + T_WanderThreshold = 437, + T_Week = 438, + T_Wildcard = 439, + T_Xleave = 440, + T_Year = 441, + T_Flag = 442, + T_EOC = 443, + T_Simulate = 444, + T_Beep_Delay = 445, + T_Sim_Duration = 446, + T_Server_Offset = 447, + T_Duration = 448, + T_Freq_Offset = 449, + T_Wander = 450, + T_Jitter = 451, + T_Prop_Delay = 452, + T_Proc_Delay = 453 }; #endif /* Tokens. */ @@ -339,191 +340,192 @@ extern int yydebug; #define T_Automax 265 #define T_Average 266 #define T_Bclient 267 -#define T_Beacon 268 -#define T_Broadcast 269 -#define T_Broadcastclient 270 -#define T_Broadcastdelay 271 -#define T_Burst 272 -#define T_Calibrate 273 -#define T_Ceiling 274 -#define T_Clockstats 275 -#define T_Cohort 276 -#define T_ControlKey 277 -#define T_Crypto 278 -#define T_Cryptostats 279 -#define T_Ctl 280 -#define T_Day 281 -#define T_Default 282 -#define T_Digest 283 -#define T_Disable 284 -#define T_Discard 285 -#define T_Dispersion 286 -#define T_Double 287 -#define T_Driftfile 288 -#define T_Drop 289 -#define T_Dscp 290 -#define T_Ellipsis 291 -#define T_Enable 292 -#define T_End 293 -#define T_False 294 -#define T_File 295 -#define T_Filegen 296 -#define T_Filenum 297 -#define T_Flag1 298 -#define T_Flag2 299 -#define T_Flag3 300 -#define T_Flag4 301 -#define T_Flake 302 -#define T_Floor 303 -#define T_Freq 304 -#define T_Fudge 305 -#define T_Host 306 -#define T_Huffpuff 307 -#define T_Iburst 308 -#define T_Ident 309 -#define T_Ignore 310 -#define T_Incalloc 311 -#define T_Incmem 312 -#define T_Initalloc 313 -#define T_Initmem 314 -#define T_Includefile 315 -#define T_Integer 316 -#define T_Interface 317 -#define T_Intrange 318 -#define T_Io 319 -#define T_Ipv4 320 -#define T_Ipv4_flag 321 -#define T_Ipv6 322 -#define T_Ipv6_flag 323 -#define T_Kernel 324 -#define T_Key 325 -#define T_Keys 326 -#define T_Keysdir 327 -#define T_Kod 328 -#define T_Mssntp 329 -#define T_Leapfile 330 -#define T_Leapsmearinterval 331 -#define T_Limited 332 -#define T_Link 333 -#define T_Listen 334 -#define T_Logconfig 335 -#define T_Logfile 336 -#define T_Loopstats 337 -#define T_Lowpriotrap 338 -#define T_Manycastclient 339 -#define T_Manycastserver 340 -#define T_Mask 341 -#define T_Maxage 342 -#define T_Maxclock 343 -#define T_Maxdepth 344 -#define T_Maxdist 345 -#define T_Maxmem 346 -#define T_Maxpoll 347 -#define T_Mdnstries 348 -#define T_Mem 349 -#define T_Memlock 350 -#define T_Minclock 351 -#define T_Mindepth 352 -#define T_Mindist 353 -#define T_Minimum 354 -#define T_Minpoll 355 -#define T_Minsane 356 -#define T_Mode 357 -#define T_Mode7 358 -#define T_Monitor 359 -#define T_Month 360 -#define T_Mru 361 -#define T_Multicastclient 362 -#define T_Nic 363 -#define T_Nolink 364 -#define T_Nomodify 365 -#define T_Nomrulist 366 -#define T_None 367 -#define T_Nonvolatile 368 -#define T_Nopeer 369 -#define T_Noquery 370 -#define T_Noselect 371 -#define T_Noserve 372 -#define T_Notrap 373 -#define T_Notrust 374 -#define T_Ntp 375 -#define T_Ntpport 376 -#define T_NtpSignDsocket 377 -#define T_Orphan 378 -#define T_Orphanwait 379 -#define T_PCEdigest 380 -#define T_Panic 381 -#define T_Peer 382 -#define T_Peerstats 383 -#define T_Phone 384 -#define T_Pid 385 -#define T_Pidfile 386 -#define T_Pool 387 -#define T_Port 388 -#define T_Preempt 389 -#define T_Prefer 390 -#define T_Protostats 391 -#define T_Pw 392 -#define T_Randfile 393 -#define T_Rawstats 394 -#define T_Refid 395 -#define T_Requestkey 396 -#define T_Reset 397 -#define T_Restrict 398 -#define T_Revoke 399 -#define T_Rlimit 400 -#define T_Saveconfigdir 401 -#define T_Server 402 -#define T_Setvar 403 -#define T_Source 404 -#define T_Stacksize 405 -#define T_Statistics 406 -#define T_Stats 407 -#define T_Statsdir 408 -#define T_Step 409 -#define T_Stepback 410 -#define T_Stepfwd 411 -#define T_Stepout 412 -#define T_Stratum 413 -#define T_String 414 -#define T_Sys 415 -#define T_Sysstats 416 -#define T_Tick 417 -#define T_Time1 418 -#define T_Time2 419 -#define T_Timer 420 -#define T_Timingstats 421 -#define T_Tinker 422 -#define T_Tos 423 -#define T_Trap 424 -#define T_True 425 -#define T_Trustedkey 426 -#define T_Ttl 427 -#define T_Type 428 -#define T_U_int 429 -#define T_UEcrypto 430 -#define T_UEcryptonak 431 -#define T_UEdigest 432 -#define T_Unconfig 433 -#define T_Unpeer 434 -#define T_Version 435 -#define T_WanderThreshold 436 -#define T_Week 437 -#define T_Wildcard 438 -#define T_Xleave 439 -#define T_Year 440 -#define T_Flag 441 -#define T_EOC 442 -#define T_Simulate 443 -#define T_Beep_Delay 444 -#define T_Sim_Duration 445 -#define T_Server_Offset 446 -#define T_Duration 447 -#define T_Freq_Offset 448 -#define T_Wander 449 -#define T_Jitter 450 -#define T_Prop_Delay 451 -#define T_Proc_Delay 452 +#define T_Bcpollbstep 268 +#define T_Beacon 269 +#define T_Broadcast 270 +#define T_Broadcastclient 271 +#define T_Broadcastdelay 272 +#define T_Burst 273 +#define T_Calibrate 274 +#define T_Ceiling 275 +#define T_Clockstats 276 +#define T_Cohort 277 +#define T_ControlKey 278 +#define T_Crypto 279 +#define T_Cryptostats 280 +#define T_Ctl 281 +#define T_Day 282 +#define T_Default 283 +#define T_Digest 284 +#define T_Disable 285 +#define T_Discard 286 +#define T_Dispersion 287 +#define T_Double 288 +#define T_Driftfile 289 +#define T_Drop 290 +#define T_Dscp 291 +#define T_Ellipsis 292 +#define T_Enable 293 +#define T_End 294 +#define T_False 295 +#define T_File 296 +#define T_Filegen 297 +#define T_Filenum 298 +#define T_Flag1 299 +#define T_Flag2 300 +#define T_Flag3 301 +#define T_Flag4 302 +#define T_Flake 303 +#define T_Floor 304 +#define T_Freq 305 +#define T_Fudge 306 +#define T_Host 307 +#define T_Huffpuff 308 +#define T_Iburst 309 +#define T_Ident 310 +#define T_Ignore 311 +#define T_Incalloc 312 +#define T_Incmem 313 +#define T_Initalloc 314 +#define T_Initmem 315 +#define T_Includefile 316 +#define T_Integer 317 +#define T_Interface 318 +#define T_Intrange 319 +#define T_Io 320 +#define T_Ipv4 321 +#define T_Ipv4_flag 322 +#define T_Ipv6 323 +#define T_Ipv6_flag 324 +#define T_Kernel 325 +#define T_Key 326 +#define T_Keys 327 +#define T_Keysdir 328 +#define T_Kod 329 +#define T_Mssntp 330 +#define T_Leapfile 331 +#define T_Leapsmearinterval 332 +#define T_Limited 333 +#define T_Link 334 +#define T_Listen 335 +#define T_Logconfig 336 +#define T_Logfile 337 +#define T_Loopstats 338 +#define T_Lowpriotrap 339 +#define T_Manycastclient 340 +#define T_Manycastserver 341 +#define T_Mask 342 +#define T_Maxage 343 +#define T_Maxclock 344 +#define T_Maxdepth 345 +#define T_Maxdist 346 +#define T_Maxmem 347 +#define T_Maxpoll 348 +#define T_Mdnstries 349 +#define T_Mem 350 +#define T_Memlock 351 +#define T_Minclock 352 +#define T_Mindepth 353 +#define T_Mindist 354 +#define T_Minimum 355 +#define T_Minpoll 356 +#define T_Minsane 357 +#define T_Mode 358 +#define T_Mode7 359 +#define T_Monitor 360 +#define T_Month 361 +#define T_Mru 362 +#define T_Multicastclient 363 +#define T_Nic 364 +#define T_Nolink 365 +#define T_Nomodify 366 +#define T_Nomrulist 367 +#define T_None 368 +#define T_Nonvolatile 369 +#define T_Nopeer 370 +#define T_Noquery 371 +#define T_Noselect 372 +#define T_Noserve 373 +#define T_Notrap 374 +#define T_Notrust 375 +#define T_Ntp 376 +#define T_Ntpport 377 +#define T_NtpSignDsocket 378 +#define T_Orphan 379 +#define T_Orphanwait 380 +#define T_PCEdigest 381 +#define T_Panic 382 +#define T_Peer 383 +#define T_Peerstats 384 +#define T_Phone 385 +#define T_Pid 386 +#define T_Pidfile 387 +#define T_Pool 388 +#define T_Port 389 +#define T_Preempt 390 +#define T_Prefer 391 +#define T_Protostats 392 +#define T_Pw 393 +#define T_Randfile 394 +#define T_Rawstats 395 +#define T_Refid 396 +#define T_Requestkey 397 +#define T_Reset 398 +#define T_Restrict 399 +#define T_Revoke 400 +#define T_Rlimit 401 +#define T_Saveconfigdir 402 +#define T_Server 403 +#define T_Setvar 404 +#define T_Source 405 +#define T_Stacksize 406 +#define T_Statistics 407 +#define T_Stats 408 +#define T_Statsdir 409 +#define T_Step 410 +#define T_Stepback 411 +#define T_Stepfwd 412 +#define T_Stepout 413 +#define T_Stratum 414 +#define T_String 415 +#define T_Sys 416 +#define T_Sysstats 417 +#define T_Tick 418 +#define T_Time1 419 +#define T_Time2 420 +#define T_Timer 421 +#define T_Timingstats 422 +#define T_Tinker 423 +#define T_Tos 424 +#define T_Trap 425 +#define T_True 426 +#define T_Trustedkey 427 +#define T_Ttl 428 +#define T_Type 429 +#define T_U_int 430 +#define T_UEcrypto 431 +#define T_UEcryptonak 432 +#define T_UEdigest 433 +#define T_Unconfig 434 +#define T_Unpeer 435 +#define T_Version 436 +#define T_WanderThreshold 437 +#define T_Week 438 +#define T_Wildcard 439 +#define T_Xleave 440 +#define T_Year 441 +#define T_Flag 442 +#define T_EOC 443 +#define T_Simulate 444 +#define T_Beep_Delay 445 +#define T_Sim_Duration 446 +#define T_Server_Offset 447 +#define T_Duration 448 +#define T_Freq_Offset 449 +#define T_Wander 450 +#define T_Jitter 451 +#define T_Prop_Delay 452 +#define T_Proc_Delay 453 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -549,7 +551,7 @@ union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; -#line 553 "../../ntpd/ntp_parser.c" /* yacc.c:355 */ +#line 555 "ntp_parser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -566,7 +568,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 570 "../../ntpd/ntp_parser.c" /* yacc.c:358 */ +#line 572 "ntp_parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -806,23 +808,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 214 +#define YYFINAL 215 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 655 +#define YYLAST 654 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 203 +#define YYNTOKENS 204 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 105 /* YYNRULES -- Number of rules. */ -#define YYNRULES 317 +#define YYNRULES 318 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 423 +#define YYNSTATES 424 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 452 +#define YYMAXUTOK 453 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -835,15 +837,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 199, 200, 2, 2, 2, 2, 2, 2, 2, 2, + 200, 201, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 198, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 199, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 201, 2, 202, 2, 2, 2, 2, + 2, 2, 2, 202, 2, 203, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -876,45 +878,45 @@ static const yytype_uint8 yytranslate[] = 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197 + 195, 196, 197, 198 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 370, 370, 374, 375, 376, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 412, 422, 423, 424, 425, 426, 430, 431, 436, 441, - 443, 449, 450, 458, 459, 460, 464, 469, 470, 471, - 472, 473, 474, 475, 476, 480, 482, 487, 488, 489, - 490, 491, 492, 496, 501, 510, 520, 521, 531, 533, - 535, 537, 548, 555, 557, 562, 564, 566, 568, 570, - 579, 585, 586, 594, 596, 608, 609, 610, 611, 612, - 621, 626, 631, 639, 641, 643, 648, 649, 650, 651, - 652, 653, 657, 658, 659, 660, 669, 671, 680, 690, - 695, 703, 704, 705, 706, 707, 708, 709, 710, 715, - 716, 724, 734, 743, 758, 763, 764, 768, 769, 773, - 774, 775, 776, 777, 778, 779, 788, 792, 796, 804, - 812, 820, 835, 850, 863, 864, 872, 873, 874, 875, - 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 890, 895, 903, 908, 909, 910, 914, 919, 927, - 932, 933, 934, 935, 936, 937, 938, 939, 947, 957, - 962, 970, 972, 974, 983, 985, 990, 991, 995, 996, - 997, 998, 1006, 1011, 1016, 1024, 1029, 1030, 1031, 1040, - 1042, 1047, 1052, 1060, 1062, 1079, 1080, 1081, 1082, 1083, - 1084, 1088, 1089, 1090, 1091, 1092, 1093, 1101, 1106, 1111, - 1119, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, - 1133, 1142, 1143, 1144, 1151, 1158, 1165, 1181, 1200, 1202, - 1204, 1206, 1208, 1210, 1217, 1222, 1223, 1224, 1228, 1232, - 1241, 1242, 1246, 1247, 1248, 1252, 1263, 1277, 1289, 1294, - 1296, 1301, 1302, 1310, 1312, 1320, 1325, 1333, 1358, 1365, - 1375, 1376, 1380, 1381, 1382, 1383, 1387, 1388, 1389, 1393, - 1398, 1403, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1427, - 1432, 1440, 1445, 1453, 1455, 1459, 1464, 1469, 1477, 1482, - 1490, 1499, 1500, 1504, 1505, 1514, 1532, 1536, 1541, 1549, - 1554, 1555, 1559, 1564, 1572, 1577, 1582, 1587, 1592, 1600, - 1605, 1610, 1618, 1623, 1624, 1625, 1626, 1627 + 0, 371, 371, 375, 376, 377, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 413, 423, 424, 425, 426, 427, 431, 432, 437, 442, + 444, 450, 451, 459, 460, 461, 465, 470, 471, 472, + 473, 474, 475, 476, 477, 481, 483, 488, 489, 490, + 491, 492, 493, 497, 502, 511, 521, 522, 532, 534, + 536, 538, 549, 556, 558, 563, 565, 567, 569, 571, + 580, 586, 587, 595, 597, 609, 610, 611, 612, 613, + 622, 627, 632, 640, 642, 644, 649, 650, 651, 652, + 653, 654, 655, 659, 660, 661, 662, 671, 673, 682, + 692, 697, 705, 706, 707, 708, 709, 710, 711, 712, + 717, 718, 726, 736, 745, 760, 765, 766, 770, 771, + 775, 776, 777, 778, 779, 780, 781, 790, 794, 798, + 806, 814, 822, 837, 852, 865, 866, 874, 875, 876, + 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, + 887, 888, 892, 897, 905, 910, 911, 912, 916, 921, + 929, 934, 935, 936, 937, 938, 939, 940, 941, 949, + 959, 964, 972, 974, 976, 985, 987, 992, 993, 997, + 998, 999, 1000, 1008, 1013, 1018, 1026, 1031, 1032, 1033, + 1042, 1044, 1049, 1054, 1062, 1064, 1081, 1082, 1083, 1084, + 1085, 1086, 1090, 1091, 1092, 1093, 1094, 1095, 1103, 1108, + 1113, 1121, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 1144, 1145, 1146, 1153, 1160, 1167, 1183, 1202, + 1204, 1206, 1208, 1210, 1212, 1219, 1224, 1225, 1226, 1230, + 1234, 1243, 1244, 1248, 1249, 1250, 1254, 1265, 1279, 1291, + 1296, 1298, 1303, 1304, 1312, 1314, 1322, 1327, 1335, 1360, + 1367, 1377, 1378, 1382, 1383, 1384, 1385, 1389, 1390, 1391, + 1395, 1400, 1405, 1413, 1414, 1415, 1416, 1417, 1418, 1419, + 1429, 1434, 1442, 1447, 1455, 1457, 1461, 1466, 1471, 1479, + 1484, 1492, 1501, 1502, 1506, 1507, 1516, 1534, 1538, 1543, + 1551, 1556, 1557, 1561, 1566, 1574, 1579, 1584, 1589, 1594, + 1602, 1607, 1612, 1620, 1625, 1626, 1627, 1628, 1629 }; #endif @@ -925,59 +927,60 @@ static const char *const yytname[] = { "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan", "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average", - "T_Bclient", "T_Beacon", "T_Broadcast", "T_Broadcastclient", - "T_Broadcastdelay", "T_Burst", "T_Calibrate", "T_Ceiling", - "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto", "T_Cryptostats", - "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable", "T_Discard", - "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", "T_Dscp", - "T_Ellipsis", "T_Enable", "T_End", "T_False", "T_File", "T_Filegen", - "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4", "T_Flake", - "T_Floor", "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff", "T_Iburst", - "T_Ident", "T_Ignore", "T_Incalloc", "T_Incmem", "T_Initalloc", - "T_Initmem", "T_Includefile", "T_Integer", "T_Interface", "T_Intrange", - "T_Io", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag", "T_Kernel", - "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp", "T_Leapfile", - "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen", "T_Logconfig", - "T_Logfile", "T_Loopstats", "T_Lowpriotrap", "T_Manycastclient", - "T_Manycastserver", "T_Mask", "T_Maxage", "T_Maxclock", "T_Maxdepth", - "T_Maxdist", "T_Maxmem", "T_Maxpoll", "T_Mdnstries", "T_Mem", - "T_Memlock", "T_Minclock", "T_Mindepth", "T_Mindist", "T_Minimum", - "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7", "T_Monitor", "T_Month", - "T_Mru", "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", - "T_Nomrulist", "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", - "T_Noselect", "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport", - "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_PCEdigest", "T_Panic", - "T_Peer", "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", - "T_Port", "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", - "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", - "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", - "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", - "T_Step", "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum", - "T_String", "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", - "T_Timer", "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True", - "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_UEcrypto", - "T_UEcryptonak", "T_UEdigest", "T_Unconfig", "T_Unpeer", "T_Version", - "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", "T_Year", - "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", "T_Sim_Duration", - "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter", - "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'", - "$accept", "configuration", "command_list", "command", "server_command", - "client_type", "address", "ip_address", "address_fam", "option_list", - "option", "option_flag", "option_flag_keyword", "option_int", - "option_int_keyword", "option_str", "option_str_keyword", - "unpeer_command", "unpeer_keyword", "other_mode_command", - "authentication_command", "crypto_command_list", "crypto_command", - "crypto_str_keyword", "orphan_mode_command", "tos_option_list", - "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword", - "monitoring_command", "stats_list", "stat", "filegen_option_list", - "filegen_option", "link_nolink", "enable_disable", "filegen_type", - "access_control_command", "ac_flag_list", "access_control_flag", - "discard_option_list", "discard_option", "discard_option_keyword", - "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command", - "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword", - "fudge_factor_bool_keyword", "rlimit_command", "rlimit_option_list", - "rlimit_option", "rlimit_option_keyword", "system_option_command", - "system_option_list", "system_option", "system_option_flag_keyword", + "T_Bclient", "T_Bcpollbstep", "T_Beacon", "T_Broadcast", + "T_Broadcastclient", "T_Broadcastdelay", "T_Burst", "T_Calibrate", + "T_Ceiling", "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto", + "T_Cryptostats", "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable", + "T_Discard", "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", + "T_Dscp", "T_Ellipsis", "T_Enable", "T_End", "T_False", "T_File", + "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4", + "T_Flake", "T_Floor", "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff", + "T_Iburst", "T_Ident", "T_Ignore", "T_Incalloc", "T_Incmem", + "T_Initalloc", "T_Initmem", "T_Includefile", "T_Integer", "T_Interface", + "T_Intrange", "T_Io", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag", + "T_Kernel", "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp", + "T_Leapfile", "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen", + "T_Logconfig", "T_Logfile", "T_Loopstats", "T_Lowpriotrap", + "T_Manycastclient", "T_Manycastserver", "T_Mask", "T_Maxage", + "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem", "T_Maxpoll", + "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock", "T_Mindepth", + "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7", + "T_Monitor", "T_Month", "T_Mru", "T_Multicastclient", "T_Nic", + "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None", "T_Nonvolatile", + "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve", "T_Notrap", + "T_Notrust", "T_Ntp", "T_Ntpport", "T_NtpSignDsocket", "T_Orphan", + "T_Orphanwait", "T_PCEdigest", "T_Panic", "T_Peer", "T_Peerstats", + "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", "T_Preempt", + "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", "T_Rawstats", + "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke", + "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source", + "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", "T_Step", + "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum", "T_String", "T_Sys", + "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats", + "T_Tinker", "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl", + "T_Type", "T_U_int", "T_UEcrypto", "T_UEcryptonak", "T_UEdigest", + "T_Unconfig", "T_Unpeer", "T_Version", "T_WanderThreshold", "T_Week", + "T_Wildcard", "T_Xleave", "T_Year", "T_Flag", "T_EOC", "T_Simulate", + "T_Beep_Delay", "T_Sim_Duration", "T_Server_Offset", "T_Duration", + "T_Freq_Offset", "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay", + "'='", "'('", "')'", "'{'", "'}'", "$accept", "configuration", + "command_list", "command", "server_command", "client_type", "address", + "ip_address", "address_fam", "option_list", "option", "option_flag", + "option_flag_keyword", "option_int", "option_int_keyword", "option_str", + "option_str_keyword", "unpeer_command", "unpeer_keyword", + "other_mode_command", "authentication_command", "crypto_command_list", + "crypto_command", "crypto_str_keyword", "orphan_mode_command", + "tos_option_list", "tos_option", "tos_option_int_keyword", + "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat", + "filegen_option_list", "filegen_option", "link_nolink", "enable_disable", + "filegen_type", "access_control_command", "ac_flag_list", + "access_control_flag", "discard_option_list", "discard_option", + "discard_option_keyword", "mru_option_list", "mru_option", + "mru_option_keyword", "fudge_command", "fudge_factor_list", + "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword", + "rlimit_command", "rlimit_option_list", "rlimit_option", + "rlimit_option_keyword", "system_option_command", "system_option_list", + "system_option", "system_option_flag_keyword", "system_option_local_flag_keyword", "tinker_command", "tinker_option_list", "tinker_option", "tinker_option_keyword", "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_int_keyword", @@ -1020,8 +1023,8 @@ static const yytype_uint16 yytoknum[] = 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 61, 40, - 41, 123, 125 + 445, 446, 447, 448, 449, 450, 451, 452, 453, 61, + 40, 41, 123, 125 }; # endif @@ -1039,49 +1042,49 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 20, -174, -32, -189, -189, -189, -29, -189, 315, 3, - -133, -189, 315, -189, 119, -48, -189, -126, -189, -118, - -115, -189, -189, -113, -189, -189, -48, -5, 374, -48, - -189, -189, -105, -189, -100, -189, -189, 1, 81, 46, - 2, -31, -189, -189, -90, 119, -88, -189, 148, 380, - -81, -53, 23, -189, -189, -189, 87, 207, -106, -189, - -48, -189, -48, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -9, 29, -62, -61, -189, -7, -189, - -189, -102, -189, -189, -189, 32, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, -189, -189, 315, -189, - -189, -189, -189, -189, -189, 3, -189, 42, 78, -189, - 315, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 112, -189, -39, 367, -189, -189, -189, - -113, -189, -189, -48, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 374, -189, 60, -48, -189, -189, -34, - -189, -189, -189, -189, -189, -189, -189, -189, 81, -189, - -189, 97, 102, -189, -189, 44, -189, -189, -189, -189, - -31, -189, 71, -63, -189, 119, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, -189, -189, 148, -189, - -9, -189, -189, -36, -189, -189, -189, -189, -189, -189, - -189, -189, 380, -189, 75, -9, -189, -189, 76, -53, - -189, -189, -189, 77, -189, -43, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, -189, -189, 0, -150, - -189, -189, -189, -189, -189, 89, -189, -6, -189, -189, - -189, -189, 39, 13, -189, -189, -189, -189, 15, 99, - -189, -189, 112, -189, -9, -36, -189, -189, -189, -189, - -189, -189, -189, -189, 475, -189, -189, 475, 475, -81, - -189, -189, 18, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -58, 144, -189, -189, -189, 353, -189, - -189, -189, -189, -189, -189, -189, -189, -96, -3, -13, - -189, -189, -189, -189, 27, -189, -189, 11, -189, -189, + 18, -177, -45, -189, -189, -189, -40, -189, 32, 5, + -129, -189, 32, -189, 204, -44, -189, -117, -189, -110, + -101, -189, -189, -97, -189, -189, -44, -4, 495, -44, + -189, -189, -96, -189, -94, -189, -189, 8, 54, 258, + 10, -28, -189, -189, -89, 204, -86, -189, 270, 529, + -85, -56, 14, -189, -189, -189, 83, 207, -95, -189, + -44, -189, -44, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -7, 24, -73, -68, -189, -3, -189, + -189, -106, -189, -189, -189, 313, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 32, -189, + -189, -189, -189, -189, -189, 5, -189, 35, 65, -189, + 32, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, 110, -189, -59, 368, -189, -189, -189, + -97, -189, -189, -44, -189, -189, -189, -189, -189, -189, + -189, -189, -189, 495, -189, 44, -44, -189, -189, -51, + -189, -189, -189, -189, -189, -189, -189, -189, 54, -189, + -189, 86, 89, -189, -189, 33, -189, -189, -189, -189, + -28, -189, 49, -75, -189, 204, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 270, -189, + -7, -189, -189, -189, -33, -189, -189, -189, -189, -189, + -189, -189, -189, 529, -189, 66, -7, -189, -189, 67, + -56, -189, -189, -189, 68, -189, -53, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, 16, + -153, -189, -189, -189, -189, -189, 77, -189, -18, -189, + -189, -189, -189, 226, -13, -189, -189, -189, -189, -8, + 97, -189, -189, 110, -189, -7, -33, -189, -189, -189, + -189, -189, -189, -189, -189, 449, -189, -189, 449, 449, + -85, -189, -189, 11, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -49, 108, -189, -189, -189, 125, + -189, -189, -189, -189, -189, -189, -189, -189, -102, -20, + -30, -189, -189, -189, -189, 13, -189, -189, 9, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 475, 475, -189, 163, -81, 133, -189, - 141, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, 449, 449, -189, 146, -85, 113, + -189, 116, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -52, -189, 45, 5, 19, -125, -189, 8, -189, -9, - -189, -189, -189, -189, -189, -189, -189, -189, -189, 475, - -189, -189, -189, -189, 14, -189, -189, -189, -48, -189, - -189, -189, 22, -189, -189, -189, 21, 24, -9, 36, - -164, -189, 33, -9, -189, -189, -189, 10, 69, -189, - -189, -189, -189, -189, 31, 48, 40, -189, 52, -189, - -9, -189, -189 + -189, -54, -189, 23, -10, 6, -138, -189, -9, -189, + -7, -189, -189, -189, -189, -189, -189, -189, -189, -189, + 449, -189, -189, -189, -189, -17, -189, -189, -189, -44, + -189, -189, -189, 20, -189, -189, -189, 0, 21, -7, + 22, -173, -189, 25, -7, -189, -189, -189, 17, 7, + -189, -189, -189, -189, -189, 217, 39, 36, -189, 46, + -189, -7, -189, -189 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1089,81 +1092,81 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 0, 24, 58, 235, 0, 71, 0, 0, - 247, 238, 0, 228, 0, 0, 240, 0, 260, 0, - 0, 241, 239, 0, 242, 25, 0, 0, 0, 0, - 261, 236, 0, 23, 0, 243, 22, 0, 0, 0, - 0, 0, 244, 21, 0, 0, 0, 237, 0, 0, - 0, 0, 0, 56, 57, 296, 0, 2, 0, 7, + 0, 0, 0, 24, 58, 236, 0, 71, 0, 0, + 248, 239, 0, 229, 0, 0, 241, 0, 261, 0, + 0, 242, 240, 0, 243, 25, 0, 0, 0, 0, + 262, 237, 0, 23, 0, 244, 22, 0, 0, 0, + 0, 0, 245, 21, 0, 0, 0, 238, 0, 0, + 0, 0, 0, 56, 57, 297, 0, 2, 0, 7, 0, 8, 0, 9, 10, 13, 11, 12, 14, 15, - 16, 17, 18, 0, 0, 0, 0, 221, 0, 222, - 19, 0, 5, 62, 63, 64, 195, 196, 197, 198, - 201, 199, 200, 202, 203, 204, 205, 206, 190, 192, - 193, 194, 154, 155, 156, 126, 152, 0, 245, 229, - 189, 101, 102, 103, 104, 108, 105, 106, 107, 109, - 29, 30, 28, 0, 26, 0, 6, 65, 66, 257, - 230, 256, 289, 59, 61, 160, 161, 162, 163, 164, - 165, 166, 167, 127, 158, 0, 60, 70, 287, 231, - 67, 272, 273, 274, 275, 276, 277, 278, 269, 271, - 134, 29, 30, 134, 134, 26, 68, 188, 186, 187, - 182, 184, 0, 0, 232, 96, 100, 97, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 207, 209, - 0, 91, 86, 0, 87, 95, 93, 94, 92, 90, - 88, 89, 80, 82, 0, 0, 251, 283, 0, 69, - 282, 284, 280, 234, 1, 0, 4, 31, 55, 294, - 293, 223, 224, 225, 226, 268, 267, 266, 0, 0, - 79, 75, 76, 77, 78, 0, 72, 0, 191, 151, - 153, 246, 98, 0, 178, 179, 180, 181, 0, 0, - 176, 177, 168, 170, 0, 0, 27, 227, 255, 288, - 157, 159, 286, 270, 130, 134, 134, 133, 128, 0, - 183, 185, 0, 99, 208, 210, 292, 290, 291, 85, - 81, 83, 84, 233, 0, 281, 279, 3, 20, 262, - 263, 264, 259, 265, 258, 300, 301, 0, 0, 0, - 74, 73, 118, 117, 0, 115, 116, 0, 110, 113, - 114, 174, 175, 173, 169, 171, 172, 136, 137, 138, + 16, 17, 18, 0, 0, 0, 0, 222, 0, 223, + 19, 0, 5, 62, 63, 64, 196, 197, 198, 199, + 202, 200, 201, 203, 204, 205, 206, 207, 191, 193, + 194, 195, 155, 156, 157, 127, 153, 0, 246, 230, + 190, 102, 103, 104, 105, 109, 106, 107, 108, 110, + 29, 30, 28, 0, 26, 0, 6, 65, 66, 258, + 231, 257, 290, 59, 61, 161, 162, 163, 164, 165, + 166, 167, 168, 128, 159, 0, 60, 70, 288, 232, + 67, 273, 274, 275, 276, 277, 278, 279, 270, 272, + 135, 29, 30, 135, 135, 26, 68, 189, 187, 188, + 183, 185, 0, 0, 233, 97, 101, 98, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 208, 210, + 0, 86, 92, 87, 0, 88, 96, 94, 95, 93, + 91, 89, 90, 80, 82, 0, 0, 252, 284, 0, + 69, 283, 285, 281, 235, 1, 0, 4, 31, 55, + 295, 294, 224, 225, 226, 227, 269, 268, 267, 0, + 0, 79, 75, 76, 77, 78, 0, 72, 0, 192, + 152, 154, 247, 99, 0, 179, 180, 181, 182, 0, + 0, 177, 178, 169, 171, 0, 0, 27, 228, 256, + 289, 158, 160, 287, 271, 131, 135, 135, 134, 129, + 0, 184, 186, 0, 100, 209, 211, 293, 291, 292, + 85, 81, 83, 84, 234, 0, 282, 280, 3, 20, + 263, 264, 265, 260, 266, 259, 301, 302, 0, 0, + 0, 74, 73, 119, 118, 0, 116, 117, 0, 111, + 114, 115, 175, 176, 174, 170, 172, 173, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 135, 131, 132, 134, 250, 0, 0, 252, - 0, 37, 38, 39, 54, 47, 49, 48, 51, 40, - 41, 42, 43, 50, 52, 44, 32, 33, 36, 34, - 0, 35, 0, 0, 0, 0, 303, 0, 298, 0, - 111, 125, 121, 123, 119, 120, 122, 124, 112, 129, - 249, 248, 254, 253, 0, 45, 46, 53, 0, 297, - 295, 302, 0, 299, 285, 306, 0, 0, 0, 0, - 0, 308, 0, 0, 304, 307, 305, 0, 0, 313, - 314, 315, 316, 317, 0, 0, 0, 309, 0, 311, - 0, 310, 312 + 149, 150, 151, 136, 132, 133, 135, 251, 0, 0, + 253, 0, 37, 38, 39, 54, 47, 49, 48, 51, + 40, 41, 42, 43, 50, 52, 44, 32, 33, 36, + 34, 0, 35, 0, 0, 0, 0, 304, 0, 299, + 0, 112, 126, 122, 124, 120, 121, 123, 125, 113, + 130, 250, 249, 255, 254, 0, 45, 46, 53, 0, + 298, 296, 303, 0, 300, 286, 307, 0, 0, 0, + 0, 0, 309, 0, 0, 305, 308, 306, 0, 0, + 314, 315, 316, 317, 318, 0, 0, 0, 310, 0, + 312, 0, 311, 313 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -189, -189, -189, -41, -189, -189, -15, -38, -189, -189, + -189, -189, -189, -48, -189, -189, -15, -38, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, 16, -189, -189, -189, - -189, -35, -189, -189, -189, -189, -189, -189, -157, -189, - -189, 138, -189, -189, 106, -189, -189, -189, -2, -189, - -189, -189, -189, 83, -189, -189, 239, -79, -189, -189, - -189, -189, 66, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -189, -189, 126, -189, -189, -189, -189, - -189, -189, 101, -189, -189, 51, -189, -189, 242, 17, - -188, -189, -189, -189, -24, -189, -189, -97, -189, -189, - -189, -123, -189, -130, -189 + -189, -189, -189, -189, -189, -189, 37, -189, -189, -189, + -189, -42, -189, -189, -189, -189, -189, -189, -159, -189, + -189, 131, -189, -189, 96, -189, -189, -189, -6, -189, + -189, -189, -189, 74, -189, -189, 236, -71, -189, -189, + -189, -189, 62, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, 122, -189, -189, -189, -189, + -189, -189, 95, -189, -189, 45, -189, -189, 225, 1, + -188, -189, -189, -189, -39, -189, -189, -103, -189, -189, + -189, -136, -189, -149, -189 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 56, 57, 58, 59, 60, 132, 124, 125, 288, - 356, 357, 358, 359, 360, 361, 362, 61, 62, 63, - 64, 85, 236, 237, 65, 202, 203, 204, 205, 66, - 175, 119, 242, 308, 309, 310, 378, 67, 264, 332, - 105, 106, 107, 143, 144, 145, 68, 252, 253, 254, - 255, 69, 170, 171, 172, 70, 98, 99, 100, 101, + -1, 56, 57, 58, 59, 60, 132, 124, 125, 289, + 357, 358, 359, 360, 361, 362, 363, 61, 62, 63, + 64, 85, 237, 238, 65, 203, 204, 205, 206, 66, + 175, 119, 243, 309, 310, 311, 379, 67, 265, 333, + 105, 106, 107, 143, 144, 145, 68, 253, 254, 255, + 256, 69, 170, 171, 172, 70, 98, 99, 100, 101, 71, 188, 189, 190, 72, 73, 74, 75, 76, 109, - 174, 381, 283, 339, 130, 131, 77, 78, 294, 228, - 79, 158, 159, 213, 209, 210, 211, 149, 133, 279, - 221, 80, 81, 297, 298, 299, 365, 366, 397, 367, - 400, 401, 414, 415, 416 + 174, 382, 284, 340, 130, 131, 77, 78, 295, 229, + 79, 158, 159, 214, 210, 211, 212, 149, 133, 280, + 222, 80, 81, 298, 299, 300, 366, 367, 398, 368, + 401, 402, 415, 416, 417 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1171,228 +1174,228 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 123, 165, 275, 276, 337, 289, 267, 268, 207, 385, - 176, 167, 206, 82, 102, 371, 215, 282, 120, 238, - 121, 1, 363, 219, 164, 277, 108, 225, 399, 83, - 2, 238, 84, 126, 3, 4, 5, 372, 404, 295, - 296, 127, 6, 7, 128, 217, 129, 218, 226, 8, - 9, 363, 220, 10, 147, 11, 134, 12, 13, 148, - 230, 14, 150, 166, 168, 290, 315, 291, 302, 173, - 15, 177, 227, 160, 16, 338, 303, 390, 122, 304, - 17, 216, 18, 231, 212, 257, 232, 214, 151, 152, - 222, 19, 20, 295, 296, 21, 22, 223, 224, 229, - 23, 24, 103, 240, 25, 26, 153, 104, 333, 334, - 241, 122, 161, 27, 162, 243, 373, 305, 259, 169, - 256, 261, 386, 374, 265, 262, 28, 29, 30, 266, - 269, 259, 271, 31, 278, 272, 281, 284, 286, 111, - 273, 375, 32, 112, 287, 154, 208, 33, 306, 34, - 300, 35, 36, 301, 178, 244, 245, 246, 247, 292, - 313, 37, 38, 39, 40, 41, 42, 43, 44, 233, - 234, 45, 311, 46, 312, 155, 235, 336, 379, 179, - 340, 393, 47, 293, 368, 369, 370, 48, 49, 50, - 380, 51, 52, 376, 383, 163, 377, 180, 53, 54, - 181, 113, 384, 388, 387, 122, 389, -6, 55, 392, - 402, 408, 307, 396, 394, 407, 399, 2, 280, 398, - 406, 3, 4, 5, 409, 410, 411, 412, 413, 6, - 7, 335, 422, 417, 403, 419, 8, 9, 420, 421, - 10, 156, 11, 239, 12, 13, 157, 114, 14, 260, - 314, 110, 248, 270, 274, 115, 258, 15, 116, 263, - 285, 16, 409, 410, 411, 412, 413, 17, 391, 18, - 249, 146, 316, 364, 182, 250, 251, 405, 19, 20, - 117, 0, 21, 22, 418, 118, 0, 23, 24, 0, - 0, 25, 26, 0, 0, 0, 0, 0, 0, 382, - 27, 0, 183, 184, 185, 186, 0, 0, 0, 0, - 187, 0, 0, 28, 29, 30, 0, 0, 0, 0, - 31, 0, 0, 86, 0, 0, 0, 87, 0, 32, - 0, 0, 0, 88, 33, 0, 34, 0, 35, 36, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, - 39, 40, 41, 42, 43, 44, 0, 0, 45, 0, - 46, 0, 341, 0, 0, 0, 0, 0, 0, 47, - 342, 0, 0, 395, 48, 49, 50, 2, 51, 52, - 0, 3, 4, 5, 89, 53, 54, 0, 0, 6, - 7, 0, 0, 191, -6, 55, 8, 9, 0, 192, - 10, 193, 11, 0, 12, 13, 343, 344, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 90, 91, - 0, 16, 0, 345, 0, 0, 0, 17, 194, 18, - 135, 136, 137, 138, 0, 92, 0, 0, 19, 20, - 93, 0, 21, 22, 0, 346, 0, 23, 24, 0, - 0, 25, 26, 347, 0, 348, 0, 0, 0, 0, - 27, 139, 0, 140, 0, 141, 0, 94, 195, 349, - 196, 142, 0, 28, 29, 30, 197, 0, 198, 0, - 31, 199, 0, 0, 0, 0, 0, 350, 351, 32, - 95, 96, 97, 0, 33, 0, 34, 0, 35, 36, - 0, 0, 0, 200, 201, 0, 0, 0, 37, 38, - 39, 40, 41, 42, 43, 44, 0, 0, 45, 0, - 46, 0, 317, 352, 0, 353, 0, 0, 0, 47, - 318, 0, 0, 354, 48, 49, 50, 355, 51, 52, - 0, 0, 0, 0, 0, 53, 54, 0, 319, 320, - 0, 0, 321, 0, 0, 55, 0, 0, 322, 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, 323, 324, 0, 0, 325, - 326, 0, 327, 328, 329, 0, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 123, 165, 276, 176, 268, 269, 208, 277, 386, 216, + 364, 82, 207, 372, 338, 167, 102, 83, 283, 1, + 400, 290, 84, 120, 164, 121, 220, 239, 2, 278, + 405, 108, 226, 3, 4, 5, 373, 296, 297, 239, + 86, 6, 7, 126, 87, 218, 364, 219, 8, 9, + 127, 88, 10, 227, 11, 221, 12, 13, 134, 128, + 14, 151, 152, 129, 147, 391, 148, 316, 168, 15, + 150, 173, 166, 16, 177, 122, 213, 228, 258, 17, + 153, 18, 291, 215, 292, 339, 223, 224, 296, 297, + 19, 20, 225, 217, 21, 22, 230, 241, 242, 23, + 24, 257, 89, 25, 26, 103, 262, 334, 335, 263, + 104, 272, 27, 244, 266, 374, 122, 267, 260, 154, + 270, 387, 375, 169, 273, 28, 29, 30, 282, 285, + 287, 260, 31, 274, 342, 288, 90, 91, 279, 301, + 376, 32, 302, 343, 209, 341, 33, 312, 34, 155, + 35, 36, 313, 92, 245, 246, 247, 248, 93, 314, + 37, 38, 39, 40, 41, 42, 43, 44, 369, 370, + 45, 337, 46, 371, 381, 384, 293, 380, 385, 344, + 345, 47, 394, 388, 395, 94, 48, 49, 50, 389, + 51, 52, 377, 393, 390, 378, 346, 53, 54, 399, + 294, 410, 411, 412, 413, 414, -6, 55, 95, 96, + 97, 403, 397, 407, 400, 156, 408, 2, 347, 409, + 157, 404, 3, 4, 5, 111, 348, 420, 349, 112, + 6, 7, 336, 423, 422, 421, 240, 8, 9, 261, + 281, 10, 350, 11, 271, 12, 13, 315, 110, 14, + 275, 249, 259, 264, 146, 286, 303, 317, 15, 365, + 351, 352, 16, 392, 304, 406, 419, 305, 17, 250, + 18, 0, 0, 0, 251, 252, 178, 0, 0, 19, + 20, 0, 0, 21, 22, 0, 160, 113, 23, 24, + 0, 0, 25, 26, 0, 0, 353, 0, 354, 0, + 383, 27, 179, 0, 0, 306, 355, 0, 0, 0, + 356, 0, 0, 0, 28, 29, 30, 0, 0, 0, + 180, 31, 0, 181, 0, 161, 0, 162, 0, 0, + 32, 0, 0, 114, 0, 33, 307, 34, 0, 35, + 36, 115, 231, 0, 116, 0, 0, 0, 0, 37, + 38, 39, 40, 41, 42, 43, 44, 0, 0, 45, + 0, 46, 0, 0, 0, 232, 117, 0, 233, 0, + 47, 118, 0, 0, 396, 48, 49, 50, 2, 51, + 52, 0, 0, 3, 4, 5, 53, 54, 0, 0, + 0, 6, 7, 0, 0, -6, 55, 182, 8, 9, + 308, 0, 10, 0, 11, 0, 12, 13, 163, 0, + 14, 410, 411, 412, 413, 414, 0, 0, 122, 15, + 418, 0, 0, 16, 0, 183, 184, 185, 186, 17, + 0, 18, 0, 187, 0, 0, 0, 0, 0, 0, + 19, 20, 0, 0, 21, 22, 0, 0, 0, 23, + 24, 234, 235, 25, 26, 0, 0, 0, 236, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 29, 30, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 33, 318, 34, 0, + 35, 36, 0, 0, 0, 319, 0, 0, 0, 0, + 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, + 45, 0, 46, 320, 321, 0, 0, 322, 0, 0, + 0, 47, 0, 323, 0, 0, 48, 49, 50, 0, + 51, 52, 191, 192, 0, 0, 0, 53, 54, 193, + 0, 194, 135, 136, 137, 138, 0, 55, 0, 0, + 324, 325, 0, 0, 326, 327, 0, 328, 329, 330, + 0, 331, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 139, 0, 140, 0, 141, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, + 197, 0, 0, 0, 0, 0, 198, 0, 199, 0, + 332, 200, 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, 0, 0, 0, 331 + 0, 0, 0, 201, 202 }; static const yytype_int16 yycheck[] = { - 15, 39, 190, 39, 62, 5, 163, 164, 61, 61, - 45, 42, 50, 187, 11, 4, 57, 205, 66, 98, - 68, 1, 147, 32, 39, 61, 159, 34, 192, 61, - 10, 110, 61, 159, 14, 15, 16, 26, 202, 189, - 190, 159, 22, 23, 159, 60, 159, 62, 55, 29, - 30, 147, 61, 33, 159, 35, 61, 37, 38, 159, - 28, 41, 61, 61, 95, 65, 254, 67, 29, 159, - 50, 159, 79, 27, 54, 133, 37, 202, 159, 40, - 60, 187, 62, 51, 61, 126, 54, 0, 7, 8, - 61, 71, 72, 189, 190, 75, 76, 159, 159, 201, - 80, 81, 99, 61, 84, 85, 25, 104, 265, 266, - 32, 159, 66, 93, 68, 3, 105, 78, 133, 150, - 159, 61, 174, 112, 27, 159, 106, 107, 108, 27, - 86, 146, 61, 113, 170, 198, 61, 61, 61, 20, - 175, 130, 122, 24, 187, 64, 199, 127, 109, 129, - 61, 131, 132, 159, 6, 43, 44, 45, 46, 159, - 61, 141, 142, 143, 144, 145, 146, 147, 148, 137, - 138, 151, 159, 153, 159, 94, 144, 159, 335, 31, - 36, 369, 162, 183, 187, 198, 159, 167, 168, 169, - 27, 171, 172, 182, 61, 149, 185, 49, 178, 179, - 52, 82, 61, 198, 159, 159, 187, 187, 188, 201, - 398, 201, 173, 191, 200, 403, 192, 10, 202, 198, - 187, 14, 15, 16, 193, 194, 195, 196, 197, 22, - 23, 269, 420, 202, 198, 187, 29, 30, 198, 187, - 33, 160, 35, 105, 37, 38, 165, 128, 41, 143, - 252, 12, 140, 170, 188, 136, 130, 50, 139, 158, - 209, 54, 193, 194, 195, 196, 197, 60, 365, 62, - 158, 29, 255, 297, 126, 163, 164, 400, 71, 72, - 161, -1, 75, 76, 414, 166, -1, 80, 81, -1, - -1, 84, 85, -1, -1, -1, -1, -1, -1, 337, - 93, -1, 154, 155, 156, 157, -1, -1, -1, -1, - 162, -1, -1, 106, 107, 108, -1, -1, -1, -1, - 113, -1, -1, 8, -1, -1, -1, 12, -1, 122, - -1, -1, -1, 18, 127, -1, 129, -1, 131, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, - 143, 144, 145, 146, 147, 148, -1, -1, 151, -1, - 153, -1, 9, -1, -1, -1, -1, -1, -1, 162, - 17, -1, -1, 388, 167, 168, 169, 10, 171, 172, - -1, 14, 15, 16, 69, 178, 179, -1, -1, 22, - 23, -1, -1, 13, 187, 188, 29, 30, -1, 19, - 33, 21, 35, -1, 37, 38, 53, 54, 41, -1, - -1, -1, -1, -1, -1, -1, -1, 50, 103, 104, - -1, 54, -1, 70, -1, -1, -1, 60, 48, 62, - 56, 57, 58, 59, -1, 120, -1, -1, 71, 72, - 125, -1, 75, 76, -1, 92, -1, 80, 81, -1, - -1, 84, 85, 100, -1, 102, -1, -1, -1, -1, - 93, 87, -1, 89, -1, 91, -1, 152, 88, 116, - 90, 97, -1, 106, 107, 108, 96, -1, 98, -1, - 113, 101, -1, -1, -1, -1, -1, 134, 135, 122, - 175, 176, 177, -1, 127, -1, 129, -1, 131, 132, - -1, -1, -1, 123, 124, -1, -1, -1, 141, 142, - 143, 144, 145, 146, 147, 148, -1, -1, 151, -1, - 153, -1, 47, 170, -1, 172, -1, -1, -1, 162, - 55, -1, -1, 180, 167, 168, 169, 184, 171, 172, - -1, -1, -1, -1, -1, 178, 179, -1, 73, 74, - -1, -1, 77, -1, -1, 188, -1, -1, 83, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, 39, 190, 45, 163, 164, 62, 40, 62, 57, + 148, 188, 50, 4, 63, 43, 11, 62, 206, 1, + 193, 5, 62, 67, 39, 69, 33, 98, 10, 62, + 203, 160, 35, 15, 16, 17, 27, 190, 191, 110, + 8, 23, 24, 160, 12, 60, 148, 62, 30, 31, + 160, 19, 34, 56, 36, 62, 38, 39, 62, 160, + 42, 7, 8, 160, 160, 203, 160, 255, 96, 51, + 62, 160, 62, 55, 160, 160, 62, 80, 126, 61, + 26, 63, 66, 0, 68, 134, 62, 160, 190, 191, + 72, 73, 160, 188, 76, 77, 202, 62, 33, 81, + 82, 160, 70, 85, 86, 100, 62, 266, 267, 160, + 105, 62, 94, 3, 28, 106, 160, 28, 133, 65, + 87, 175, 113, 151, 199, 107, 108, 109, 62, 62, + 62, 146, 114, 175, 9, 188, 104, 105, 171, 62, + 131, 123, 160, 18, 200, 37, 128, 160, 130, 95, + 132, 133, 160, 121, 44, 45, 46, 47, 126, 62, + 142, 143, 144, 145, 146, 147, 148, 149, 188, 199, + 152, 160, 154, 160, 28, 62, 160, 336, 62, 54, + 55, 163, 370, 160, 201, 153, 168, 169, 170, 199, + 172, 173, 183, 202, 188, 186, 71, 179, 180, 199, + 184, 194, 195, 196, 197, 198, 188, 189, 176, 177, + 178, 399, 192, 188, 193, 161, 404, 10, 93, 202, + 166, 199, 15, 16, 17, 21, 101, 188, 103, 25, + 23, 24, 270, 421, 188, 199, 105, 30, 31, 143, + 203, 34, 117, 36, 170, 38, 39, 253, 12, 42, + 188, 141, 130, 158, 29, 210, 30, 256, 51, 298, + 135, 136, 55, 366, 38, 401, 415, 41, 61, 159, + 63, -1, -1, -1, 164, 165, 6, -1, -1, 72, + 73, -1, -1, 76, 77, -1, 28, 83, 81, 82, + -1, -1, 85, 86, -1, -1, 171, -1, 173, -1, + 338, 94, 32, -1, -1, 79, 181, -1, -1, -1, + 185, -1, -1, -1, 107, 108, 109, -1, -1, -1, + 50, 114, -1, 53, -1, 67, -1, 69, -1, -1, + 123, -1, -1, 129, -1, 128, 110, 130, -1, 132, + 133, 137, 29, -1, 140, -1, -1, -1, -1, 142, + 143, 144, 145, 146, 147, 148, 149, -1, -1, 152, + -1, 154, -1, -1, -1, 52, 162, -1, 55, -1, + 163, 167, -1, -1, 389, 168, 169, 170, 10, 172, + 173, -1, -1, 15, 16, 17, 179, 180, -1, -1, + -1, 23, 24, -1, -1, 188, 189, 127, 30, 31, + 174, -1, 34, -1, 36, -1, 38, 39, 150, -1, + 42, 194, 195, 196, 197, 198, -1, -1, 160, 51, + 203, -1, -1, 55, -1, 155, 156, 157, 158, 61, + -1, 63, -1, 163, -1, -1, -1, -1, -1, -1, + 72, 73, -1, -1, 76, 77, -1, -1, -1, 81, + 82, 138, 139, 85, 86, -1, -1, -1, 145, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, -1, -1, + -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, + -1, 123, -1, -1, -1, -1, 128, 48, 130, -1, + 132, 133, -1, -1, -1, 56, -1, -1, -1, -1, + 142, 143, 144, 145, 146, 147, 148, 149, -1, -1, + 152, -1, 154, 74, 75, -1, -1, 78, -1, -1, + -1, 163, -1, 84, -1, -1, 168, 169, 170, -1, + 172, 173, 13, 14, -1, -1, -1, 179, 180, 20, + -1, 22, 57, 58, 59, 60, -1, 189, -1, -1, + 111, 112, -1, -1, 115, 116, -1, 118, 119, 120, + -1, 122, -1, -1, -1, -1, -1, -1, 49, -1, + -1, -1, -1, 88, -1, 90, -1, 92, -1, -1, + -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, 111, -1, -1, 114, - 115, -1, 117, 118, 119, -1, 121, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 89, -1, + 91, -1, -1, -1, -1, -1, 97, -1, 99, -1, + 181, 102, -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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 180 + -1, -1, -1, 124, 125 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 1, 10, 14, 15, 16, 22, 23, 29, 30, - 33, 35, 37, 38, 41, 50, 54, 60, 62, 71, - 72, 75, 76, 80, 81, 84, 85, 93, 106, 107, - 108, 113, 122, 127, 129, 131, 132, 141, 142, 143, - 144, 145, 146, 147, 148, 151, 153, 162, 167, 168, - 169, 171, 172, 178, 179, 188, 204, 205, 206, 207, - 208, 220, 221, 222, 223, 227, 232, 240, 249, 254, - 258, 263, 267, 268, 269, 270, 271, 279, 280, 283, - 294, 295, 187, 61, 61, 224, 8, 12, 18, 69, - 103, 104, 120, 125, 152, 175, 176, 177, 259, 260, - 261, 262, 11, 99, 104, 243, 244, 245, 159, 272, - 259, 20, 24, 82, 128, 136, 139, 161, 166, 234, - 66, 68, 159, 209, 210, 211, 159, 159, 159, 159, - 277, 278, 209, 291, 61, 56, 57, 58, 59, 87, - 89, 91, 97, 246, 247, 248, 291, 159, 159, 290, - 61, 7, 8, 25, 64, 94, 160, 165, 284, 285, - 27, 66, 68, 149, 209, 210, 61, 42, 95, 150, - 255, 256, 257, 159, 273, 233, 234, 159, 6, 31, - 49, 52, 126, 154, 155, 156, 157, 162, 264, 265, - 266, 13, 19, 21, 48, 88, 90, 96, 98, 101, - 123, 124, 228, 229, 230, 231, 210, 61, 199, 287, - 288, 289, 61, 286, 0, 206, 187, 209, 209, 32, - 61, 293, 61, 159, 159, 34, 55, 79, 282, 201, - 28, 51, 54, 137, 138, 144, 225, 226, 260, 244, - 61, 32, 235, 3, 43, 44, 45, 46, 140, 158, - 163, 164, 250, 251, 252, 253, 159, 206, 278, 209, - 247, 61, 159, 285, 241, 27, 27, 241, 241, 86, - 256, 61, 198, 234, 265, 293, 39, 61, 170, 292, - 229, 61, 293, 275, 61, 288, 61, 187, 212, 5, - 65, 67, 159, 183, 281, 189, 190, 296, 297, 298, - 61, 159, 29, 37, 40, 78, 109, 173, 236, 237, - 238, 159, 159, 61, 251, 293, 292, 47, 55, 73, - 74, 77, 83, 110, 111, 114, 115, 117, 118, 119, - 121, 180, 242, 241, 241, 210, 159, 62, 133, 276, - 36, 9, 17, 53, 54, 70, 92, 100, 102, 116, - 134, 135, 170, 172, 180, 184, 213, 214, 215, 216, - 217, 218, 219, 147, 297, 299, 300, 302, 187, 198, - 159, 4, 26, 105, 112, 130, 182, 185, 239, 241, - 27, 274, 210, 61, 61, 61, 174, 159, 198, 187, - 202, 300, 201, 293, 200, 209, 191, 301, 198, 192, - 303, 304, 293, 198, 202, 304, 187, 293, 201, 193, - 194, 195, 196, 197, 305, 306, 307, 202, 306, 187, - 198, 187, 293 + 0, 1, 10, 15, 16, 17, 23, 24, 30, 31, + 34, 36, 38, 39, 42, 51, 55, 61, 63, 72, + 73, 76, 77, 81, 82, 85, 86, 94, 107, 108, + 109, 114, 123, 128, 130, 132, 133, 142, 143, 144, + 145, 146, 147, 148, 149, 152, 154, 163, 168, 169, + 170, 172, 173, 179, 180, 189, 205, 206, 207, 208, + 209, 221, 222, 223, 224, 228, 233, 241, 250, 255, + 259, 264, 268, 269, 270, 271, 272, 280, 281, 284, + 295, 296, 188, 62, 62, 225, 8, 12, 19, 70, + 104, 105, 121, 126, 153, 176, 177, 178, 260, 261, + 262, 263, 11, 100, 105, 244, 245, 246, 160, 273, + 260, 21, 25, 83, 129, 137, 140, 162, 167, 235, + 67, 69, 160, 210, 211, 212, 160, 160, 160, 160, + 278, 279, 210, 292, 62, 57, 58, 59, 60, 88, + 90, 92, 98, 247, 248, 249, 292, 160, 160, 291, + 62, 7, 8, 26, 65, 95, 161, 166, 285, 286, + 28, 67, 69, 150, 210, 211, 62, 43, 96, 151, + 256, 257, 258, 160, 274, 234, 235, 160, 6, 32, + 50, 53, 127, 155, 156, 157, 158, 163, 265, 266, + 267, 13, 14, 20, 22, 49, 89, 91, 97, 99, + 102, 124, 125, 229, 230, 231, 232, 211, 62, 200, + 288, 289, 290, 62, 287, 0, 207, 188, 210, 210, + 33, 62, 294, 62, 160, 160, 35, 56, 80, 283, + 202, 29, 52, 55, 138, 139, 145, 226, 227, 261, + 245, 62, 33, 236, 3, 44, 45, 46, 47, 141, + 159, 164, 165, 251, 252, 253, 254, 160, 207, 279, + 210, 248, 62, 160, 286, 242, 28, 28, 242, 242, + 87, 257, 62, 199, 235, 266, 294, 40, 62, 171, + 293, 230, 62, 294, 276, 62, 289, 62, 188, 213, + 5, 66, 68, 160, 184, 282, 190, 191, 297, 298, + 299, 62, 160, 30, 38, 41, 79, 110, 174, 237, + 238, 239, 160, 160, 62, 252, 294, 293, 48, 56, + 74, 75, 78, 84, 111, 112, 115, 116, 118, 119, + 120, 122, 181, 243, 242, 242, 211, 160, 63, 134, + 277, 37, 9, 18, 54, 55, 71, 93, 101, 103, + 117, 135, 136, 171, 173, 181, 185, 214, 215, 216, + 217, 218, 219, 220, 148, 298, 300, 301, 303, 188, + 199, 160, 4, 27, 106, 113, 131, 183, 186, 240, + 242, 28, 275, 211, 62, 62, 62, 175, 160, 199, + 188, 203, 301, 202, 294, 201, 210, 192, 302, 199, + 193, 304, 305, 294, 199, 203, 305, 188, 294, 202, + 194, 195, 196, 197, 198, 306, 307, 308, 203, 307, + 188, 199, 188, 294 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 203, 204, 205, 205, 205, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 207, 208, 208, 208, 208, 208, 209, 209, 210, 211, - 211, 212, 212, 213, 213, 213, 214, 215, 215, 215, - 215, 215, 215, 215, 215, 216, 216, 217, 217, 217, - 217, 217, 217, 218, 219, 220, 221, 221, 222, 222, - 222, 222, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 224, 224, 225, 225, 226, 226, 226, 226, 226, - 227, 228, 228, 229, 229, 229, 230, 230, 230, 230, - 230, 230, 231, 231, 231, 231, 232, 232, 232, 233, - 233, 234, 234, 234, 234, 234, 234, 234, 234, 235, - 235, 236, 236, 236, 236, 237, 237, 238, 238, 239, - 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, - 240, 240, 240, 240, 241, 241, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 243, 243, 244, 245, 245, 245, 246, 246, 247, - 248, 248, 248, 248, 248, 248, 248, 248, 249, 250, - 250, 251, 251, 251, 251, 251, 252, 252, 253, 253, - 253, 253, 254, 255, 255, 256, 257, 257, 257, 258, - 258, 259, 259, 260, 260, 261, 261, 261, 261, 261, - 261, 262, 262, 262, 262, 262, 262, 263, 264, 264, - 265, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 268, 268, 268, 269, 269, - 270, 270, 271, 271, 271, 272, 272, 272, 273, 274, - 274, 275, 275, 276, 276, 277, 277, 278, 279, 279, - 280, 280, 281, 281, 281, 281, 282, 282, 282, 283, - 284, 284, 285, 285, 285, 285, 285, 285, 285, 286, - 286, 287, 287, 288, 288, 289, 290, 290, 291, 291, - 292, 292, 292, 293, 293, 294, 295, 296, 296, 297, - 298, 298, 299, 299, 300, 301, 302, 303, 303, 304, - 305, 305, 306, 307, 307, 307, 307, 307 + 0, 204, 205, 206, 206, 206, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 208, 209, 209, 209, 209, 209, 210, 210, 211, 212, + 212, 213, 213, 214, 214, 214, 215, 216, 216, 216, + 216, 216, 216, 216, 216, 217, 217, 218, 218, 218, + 218, 218, 218, 219, 220, 221, 222, 222, 223, 223, + 223, 223, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 225, 225, 226, 226, 227, 227, 227, 227, 227, + 228, 229, 229, 230, 230, 230, 231, 231, 231, 231, + 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, + 234, 234, 235, 235, 235, 235, 235, 235, 235, 235, + 236, 236, 237, 237, 237, 237, 238, 238, 239, 239, + 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, + 241, 241, 241, 241, 241, 242, 242, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 244, 244, 245, 246, 246, 246, 247, 247, + 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, + 251, 251, 252, 252, 252, 252, 252, 253, 253, 254, + 254, 254, 254, 255, 256, 256, 257, 258, 258, 258, + 259, 259, 260, 260, 261, 261, 262, 262, 262, 262, + 262, 262, 263, 263, 263, 263, 263, 263, 264, 265, + 265, 266, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 269, 269, 269, 270, + 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, + 275, 275, 276, 276, 277, 277, 278, 278, 279, 280, + 280, 281, 281, 282, 282, 282, 282, 283, 283, 283, + 284, 285, 285, 286, 286, 286, 286, 286, 286, 286, + 287, 287, 288, 288, 289, 289, 290, 291, 291, 292, + 292, 293, 293, 293, 294, 294, 295, 296, 297, 297, + 298, 299, 299, 300, 300, 301, 302, 303, 304, 304, + 305, 306, 306, 307, 308, 308, 308, 308, 308 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1407,29 +1410,29 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, - 3, 4, 4, 3, 0, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 5, 3, 4, 4, 3, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, + 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, + 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 4, + 1, 0, 0, 2, 2, 2, 2, 1, 1, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 3, 1, 2, - 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 4, 1, - 0, 0, 2, 2, 2, 2, 1, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 2, 1, 1, 1, 5, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 5, 1, 3, 2, 3, - 1, 1, 2, 1, 5, 4, 3, 2, 1, 6, - 3, 2, 3, 1, 1, 1, 1, 1 + 2, 1, 2, 1, 1, 1, 5, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 5, 1, 3, 2, + 3, 1, 1, 2, 1, 5, 4, 3, 2, 1, + 6, 3, 2, 3, 1, 1, 1, 1, 1 }; @@ -2106,7 +2109,7 @@ yyreduce: switch (yyn) { case 5: -#line 377 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 378 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { /* I will need to incorporate much more fine grained * error messages. The following should suffice for @@ -2119,85 +2122,85 @@ yyreduce: ip_ctx->errpos.nline, ip_ctx->errpos.ncol); } -#line 2123 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2126 "ntp_parser.c" /* yacc.c:1646 */ break; case 20: -#line 413 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 414 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { peer_node *my_node; my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.peers, my_node); } -#line 2134 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2137 "ntp_parser.c" /* yacc.c:1646 */ break; case 27: -#line 432 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); } -#line 2140 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2143 "ntp_parser.c" /* yacc.c:1646 */ break; case 28: -#line 437 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 438 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); } -#line 2146 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2149 "ntp_parser.c" /* yacc.c:1646 */ break; case 29: -#line 442 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 443 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET; } -#line 2152 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2155 "ntp_parser.c" /* yacc.c:1646 */ break; case 30: -#line 444 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 445 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET6; } -#line 2158 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2161 "ntp_parser.c" /* yacc.c:1646 */ break; case 31: -#line 449 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 450 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2164 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2167 "ntp_parser.c" /* yacc.c:1646 */ break; case 32: -#line 451 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 452 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2173 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2176 "ntp_parser.c" /* yacc.c:1646 */ break; case 36: -#line 465 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 466 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2179 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2182 "ntp_parser.c" /* yacc.c:1646 */ break; case 45: -#line 481 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 482 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2185 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2188 "ntp_parser.c" /* yacc.c:1646 */ break; case 46: -#line 483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 484 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2191 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2194 "ntp_parser.c" /* yacc.c:1646 */ break; case 53: -#line 497 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 498 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2197 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2200 "ntp_parser.c" /* yacc.c:1646 */ break; case 55: -#line 511 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 512 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { unpeer_node *my_node; @@ -2205,85 +2208,85 @@ yyreduce: if (my_node) APPEND_G_FIFO(cfgt.unpeers, my_node); } -#line 2209 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2212 "ntp_parser.c" /* yacc.c:1646 */ break; case 58: -#line 532 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 533 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.broadcastclient = 1; } -#line 2215 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2218 "ntp_parser.c" /* yacc.c:1646 */ break; case 59: -#line 534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 535 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); } -#line 2221 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2224 "ntp_parser.c" /* yacc.c:1646 */ break; case 60: -#line 536 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 537 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); } -#line 2227 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2230 "ntp_parser.c" /* yacc.c:1646 */ break; case 61: -#line 538 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 539 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.mdnstries = (yyvsp[0].Integer); } -#line 2233 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2236 "ntp_parser.c" /* yacc.c:1646 */ break; case 62: -#line 549 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 550 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *atrv; atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); APPEND_G_FIFO(cfgt.vars, atrv); } -#line 2244 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2247 "ntp_parser.c" /* yacc.c:1646 */ break; case 63: -#line 556 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 557 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.control_key = (yyvsp[0].Integer); } -#line 2250 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2253 "ntp_parser.c" /* yacc.c:1646 */ break; case 64: -#line 558 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 559 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.cryptosw++; CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo)); } -#line 2259 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2262 "ntp_parser.c" /* yacc.c:1646 */ break; case 65: -#line 563 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 564 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.keys = (yyvsp[0].String); } -#line 2265 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2268 "ntp_parser.c" /* yacc.c:1646 */ break; case 66: -#line 565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 566 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.keysdir = (yyvsp[0].String); } -#line 2271 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2274 "ntp_parser.c" /* yacc.c:1646 */ break; case 67: -#line 567 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 568 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.request_key = (yyvsp[0].Integer); } -#line 2277 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2280 "ntp_parser.c" /* yacc.c:1646 */ break; case 68: -#line 569 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 570 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.revoke = (yyvsp[0].Integer); } -#line 2283 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2286 "ntp_parser.c" /* yacc.c:1646 */ break; case 69: -#line 571 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 572 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo); @@ -2292,38 +2295,38 @@ yyreduce: // else // LINK_SLIST(cfgt.auth.trusted_key_list, $2, link); } -#line 2296 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2299 "ntp_parser.c" /* yacc.c:1646 */ break; case 70: -#line 580 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 581 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); } -#line 2302 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2305 "ntp_parser.c" /* yacc.c:1646 */ break; case 71: -#line 585 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 586 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2308 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2311 "ntp_parser.c" /* yacc.c:1646 */ break; case 72: -#line 587 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 588 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2317 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2320 "ntp_parser.c" /* yacc.c:1646 */ break; case 73: -#line 595 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 596 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2323 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2326 "ntp_parser.c" /* yacc.c:1646 */ break; case 74: -#line 597 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 598 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = NULL; cfgt.auth.revoke = (yyvsp[0].Integer); @@ -2332,59 +2335,59 @@ yyreduce: "please use 'revoke %d' instead.", cfgt.auth.revoke, cfgt.auth.revoke); } -#line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2339 "ntp_parser.c" /* yacc.c:1646 */ break; case 80: -#line 622 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 623 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); } -#line 2342 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2345 "ntp_parser.c" /* yacc.c:1646 */ break; case 81: -#line 627 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 628 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2351 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2354 "ntp_parser.c" /* yacc.c:1646 */ break; case 82: -#line 632 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 633 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2360 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2363 "ntp_parser.c" /* yacc.c:1646 */ break; case 83: -#line 640 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 641 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } -#line 2366 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2369 "ntp_parser.c" /* yacc.c:1646 */ break; case 84: -#line 642 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 643 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2372 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2375 "ntp_parser.c" /* yacc.c:1646 */ break; case 85: -#line 644 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ +#line 645 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } -#line 2378 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2381 "ntp_parser.c" /* yacc.c:1646 */ break; - case 96: -#line 670 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 97: +#line 672 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); } -#line 2384 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2387 "ntp_parser.c" /* yacc.c:1646 */ break; - case 97: -#line 672 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 98: +#line 674 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { cfgt.stats_dir = (yyvsp[0].String); @@ -2393,55 +2396,55 @@ yyreduce: yyerror("statsdir remote configuration ignored"); } } -#line 2397 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2400 "ntp_parser.c" /* yacc.c:1646 */ break; - case 98: -#line 681 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 99: +#line 683 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { filegen_node *fgn; fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.filegen_opts, fgn); } -#line 2408 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2411 "ntp_parser.c" /* yacc.c:1646 */ break; - case 99: -#line 691 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 100: +#line 693 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2417 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2420 "ntp_parser.c" /* yacc.c:1646 */ break; - case 100: -#line 696 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 101: +#line 698 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2426 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2429 "ntp_parser.c" /* yacc.c:1646 */ break; - case 109: -#line 715 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 110: +#line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2432 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2435 "ntp_parser.c" /* yacc.c:1646 */ break; - case 110: -#line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 111: +#line 719 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2441 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2444 "ntp_parser.c" /* yacc.c:1646 */ break; - case 111: -#line 725 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 112: +#line 727 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); @@ -2451,11 +2454,11 @@ yyreduce: yyerror("filegen file remote config ignored"); } } -#line 2455 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2458 "ntp_parser.c" /* yacc.c:1646 */ break; - case 112: -#line 735 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 113: +#line 737 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); @@ -2464,11 +2467,11 @@ yyreduce: yyerror("filegen type remote config ignored"); } } -#line 2468 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2471 "ntp_parser.c" /* yacc.c:1646 */ break; - case 113: -#line 744 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 114: +#line 746 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { const char *err; @@ -2483,33 +2486,33 @@ yyreduce: yyerror(err); } } -#line 2487 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2490 "ntp_parser.c" /* yacc.c:1646 */ break; - case 114: -#line 759 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 115: +#line 761 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2493 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2496 "ntp_parser.c" /* yacc.c:1646 */ break; - case 126: -#line 789 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 127: +#line 791 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2501 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2504 "ntp_parser.c" /* yacc.c:1646 */ break; - case 127: -#line 793 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 128: +#line 795 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2509 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2512 "ntp_parser.c" /* yacc.c:1646 */ break; - case 128: -#line 797 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 129: +#line 799 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2517,11 +2520,11 @@ yyreduce: lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2521 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2524 "ntp_parser.c" /* yacc.c:1646 */ break; - case 129: -#line 805 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 130: +#line 807 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2529,11 +2532,11 @@ yyreduce: lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2533 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2536 "ntp_parser.c" /* yacc.c:1646 */ break; - case 130: -#line 813 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 131: +#line 815 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2541,11 +2544,11 @@ yyreduce: lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2545 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2548 "ntp_parser.c" /* yacc.c:1646 */ break; - case 131: -#line 821 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 132: +#line 823 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2560,11 +2563,11 @@ yyreduce: lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2564 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2567 "ntp_parser.c" /* yacc.c:1646 */ break; - case 132: -#line 836 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 133: +#line 838 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2579,11 +2582,11 @@ yyreduce: lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2583 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2586 "ntp_parser.c" /* yacc.c:1646 */ break; - case 133: -#line 851 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 134: +#line 853 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node * rn; @@ -2592,115 +2595,115 @@ yyreduce: NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2596 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2599 "ntp_parser.c" /* yacc.c:1646 */ break; - case 134: -#line 863 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 135: +#line 865 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; } -#line 2602 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2605 "ntp_parser.c" /* yacc.c:1646 */ break; - case 135: -#line 865 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 136: +#line 867 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2611 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2614 "ntp_parser.c" /* yacc.c:1646 */ break; - case 151: -#line 891 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 152: +#line 893 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2620 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2623 "ntp_parser.c" /* yacc.c:1646 */ break; - case 152: -#line 896 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 153: +#line 898 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2629 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2632 "ntp_parser.c" /* yacc.c:1646 */ break; - case 153: -#line 904 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 154: +#line 906 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2635 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2638 "ntp_parser.c" /* yacc.c:1646 */ break; - case 157: -#line 915 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 158: +#line 917 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2644 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2647 "ntp_parser.c" /* yacc.c:1646 */ break; - case 158: -#line 920 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 159: +#line 922 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2653 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2656 "ntp_parser.c" /* yacc.c:1646 */ break; - case 159: -#line 928 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 160: +#line 930 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2659 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2662 "ntp_parser.c" /* yacc.c:1646 */ break; - case 168: -#line 948 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 169: +#line 950 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.fudge, aon); } -#line 2670 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2673 "ntp_parser.c" /* yacc.c:1646 */ break; - case 169: -#line 958 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 170: +#line 960 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2679 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2682 "ntp_parser.c" /* yacc.c:1646 */ break; - case 170: -#line 963 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 171: +#line 965 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2688 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ - break; - - case 171: -#line 971 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2694 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2691 "ntp_parser.c" /* yacc.c:1646 */ break; case 172: #line 973 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2700 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } +#line 2697 "ntp_parser.c" /* yacc.c:1646 */ break; case 173: #line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2703 "ntp_parser.c" /* yacc.c:1646 */ + break; + + case 174: +#line 977 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); @@ -2709,89 +2712,89 @@ yyreduce: yyerror("fudge factor: stratum value not in [0..16], ignored"); } } -#line 2713 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2716 "ntp_parser.c" /* yacc.c:1646 */ break; - case 174: -#line 984 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 175: +#line 986 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2719 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2722 "ntp_parser.c" /* yacc.c:1646 */ break; - case 175: -#line 986 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 176: +#line 988 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2725 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2728 "ntp_parser.c" /* yacc.c:1646 */ break; - case 182: -#line 1007 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 183: +#line 1009 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); } -#line 2731 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2734 "ntp_parser.c" /* yacc.c:1646 */ break; - case 183: -#line 1012 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 184: +#line 1014 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2740 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2743 "ntp_parser.c" /* yacc.c:1646 */ break; - case 184: -#line 1017 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 185: +#line 1019 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2749 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2752 "ntp_parser.c" /* yacc.c:1646 */ break; - case 185: -#line 1025 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 186: +#line 1027 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2755 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2758 "ntp_parser.c" /* yacc.c:1646 */ break; - case 189: -#line 1041 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 190: +#line 1043 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2761 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2764 "ntp_parser.c" /* yacc.c:1646 */ break; - case 190: -#line 1043 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 191: +#line 1045 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2767 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2770 "ntp_parser.c" /* yacc.c:1646 */ break; - case 191: -#line 1048 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 192: +#line 1050 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2776 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2779 "ntp_parser.c" /* yacc.c:1646 */ break; - case 192: -#line 1053 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 193: +#line 1055 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2785 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2788 "ntp_parser.c" /* yacc.c:1646 */ break; - case 193: -#line 1061 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 194: +#line 1063 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2791 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2794 "ntp_parser.c" /* yacc.c:1646 */ break; - case 194: -#line 1063 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 195: +#line 1065 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); @@ -2805,74 +2808,74 @@ yyreduce: yyerror(err_str); } } -#line 2809 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2812 "ntp_parser.c" /* yacc.c:1646 */ break; - case 207: -#line 1102 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 208: +#line 1104 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); } -#line 2815 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2818 "ntp_parser.c" /* yacc.c:1646 */ break; - case 208: -#line 1107 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 209: +#line 1109 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2824 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2827 "ntp_parser.c" /* yacc.c:1646 */ break; - case 209: -#line 1112 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 210: +#line 1114 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2833 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2836 "ntp_parser.c" /* yacc.c:1646 */ break; - case 210: -#line 1120 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 211: +#line 1122 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2839 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2842 "ntp_parser.c" /* yacc.c:1646 */ break; - case 223: -#line 1145 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 224: +#line 1147 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2850 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2853 "ntp_parser.c" /* yacc.c:1646 */ break; - case 224: -#line 1152 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 225: +#line 1154 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2861 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2864 "ntp_parser.c" /* yacc.c:1646 */ break; - case 225: -#line 1159 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 226: +#line 1161 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2872 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2875 "ntp_parser.c" /* yacc.c:1646 */ break; - case 226: -#line 1166 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 227: +#line 1168 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { char error_text[64]; attr_val *av; @@ -2888,11 +2891,11 @@ yyreduce: yyerror(error_text); } } -#line 2892 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2895 "ntp_parser.c" /* yacc.c:1646 */ break; - case 227: -#line 1182 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 228: +#line 1184 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (!lex_from_file()) { YYFREE((yyvsp[-1].String)); /* avoid leak */ @@ -2911,68 +2914,68 @@ yyreduce: } YYFREE((yyvsp[-1].String)); /* avoid leak */ } -#line 2915 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ - break; - - case 228: -#line 1201 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { lex_flush_stack(); } -#line 2921 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2918 "ntp_parser.c" /* yacc.c:1646 */ break; case 229: #line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { /* see drift_parm below for actions */ } -#line 2927 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + { lex_flush_stack(); } +#line 2924 "ntp_parser.c" /* yacc.c:1646 */ break; case 230: #line 1205 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); } -#line 2933 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + { /* see drift_parm below for actions */ } +#line 2930 "ntp_parser.c" /* yacc.c:1646 */ break; case 231: #line 1207 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); } -#line 2939 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); } +#line 2936 "ntp_parser.c" /* yacc.c:1646 */ break; case 232: #line 1209 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ - { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); } -#line 2945 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); } +#line 2942 "ntp_parser.c" /* yacc.c:1646 */ break; case 233: #line 1211 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); } +#line 2948 "ntp_parser.c" /* yacc.c:1646 */ + break; + + case 234: +#line 1213 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.trap, aon); } -#line 2956 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2959 "ntp_parser.c" /* yacc.c:1646 */ break; - case 234: -#line 1218 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 235: +#line 1220 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); } -#line 2962 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2965 "ntp_parser.c" /* yacc.c:1646 */ break; - case 239: -#line 1233 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 240: +#line 1235 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { #ifndef LEAP_SMEAR yyerror("Built without LEAP_SMEAR support."); #endif } -#line 2972 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2975 "ntp_parser.c" /* yacc.c:1646 */ break; - case 245: -#line 1253 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 246: +#line 1255 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; @@ -2983,11 +2986,11 @@ yyreduce: yyerror("driftfile remote configuration ignored"); } } -#line 2987 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2990 "ntp_parser.c" /* yacc.c:1646 */ break; - case 246: -#line 1264 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 247: +#line 1266 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; @@ -3000,11 +3003,11 @@ yyreduce: yyerror("driftfile remote configuration ignored"); } } -#line 3004 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3007 "ntp_parser.c" /* yacc.c:1646 */ break; - case 247: -#line 1277 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 248: +#line 1279 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; @@ -3014,71 +3017,71 @@ yyreduce: yyerror("driftfile remote configuration ignored"); } } -#line 3018 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3021 "ntp_parser.c" /* yacc.c:1646 */ break; - case 248: -#line 1290 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 249: +#line 1292 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); } -#line 3024 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3027 "ntp_parser.c" /* yacc.c:1646 */ break; - case 250: -#line 1296 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 251: +#line 1298 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } -#line 3030 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3033 "ntp_parser.c" /* yacc.c:1646 */ break; - case 251: -#line 1301 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 252: +#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 3036 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3039 "ntp_parser.c" /* yacc.c:1646 */ break; - case 252: -#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 253: +#line 1305 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3045 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3048 "ntp_parser.c" /* yacc.c:1646 */ break; - case 253: -#line 1311 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 254: +#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 3051 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3054 "ntp_parser.c" /* yacc.c:1646 */ break; - case 254: -#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 255: +#line 1315 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address)); destroy_address_node((yyvsp[0].Address_node)); } -#line 3060 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3063 "ntp_parser.c" /* yacc.c:1646 */ break; - case 255: -#line 1321 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 256: +#line 1323 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3069 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3072 "ntp_parser.c" /* yacc.c:1646 */ break; - case 256: -#line 1326 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 257: +#line 1328 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3078 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3081 "ntp_parser.c" /* yacc.c:1646 */ break; - case 257: -#line 1334 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 258: +#line 1336 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { char prefix; char * type; @@ -3100,141 +3103,141 @@ yyreduce: (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type)); YYFREE((yyvsp[0].String)); } -#line 3104 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3107 "ntp_parser.c" /* yacc.c:1646 */ break; - case 258: -#line 1359 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 259: +#line 1361 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } -#line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3118 "ntp_parser.c" /* yacc.c:1646 */ break; - case 259: -#line 1366 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 260: +#line 1368 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } -#line 3126 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3129 "ntp_parser.c" /* yacc.c:1646 */ break; - case 269: -#line 1394 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 270: +#line 1396 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); } -#line 3132 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3135 "ntp_parser.c" /* yacc.c:1646 */ break; - case 270: -#line 1399 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 271: +#line 1401 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3141 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3144 "ntp_parser.c" /* yacc.c:1646 */ break; - case 271: -#line 1404 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 272: +#line 1406 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3150 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3153 "ntp_parser.c" /* yacc.c:1646 */ break; - case 279: -#line 1428 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 280: +#line 1430 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3159 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3162 "ntp_parser.c" /* yacc.c:1646 */ break; - case 280: -#line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 281: +#line 1435 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3168 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3171 "ntp_parser.c" /* yacc.c:1646 */ break; - case 281: -#line 1441 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 282: +#line 1443 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3177 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3180 "ntp_parser.c" /* yacc.c:1646 */ break; - case 282: -#line 1446 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 283: +#line 1448 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3186 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3189 "ntp_parser.c" /* yacc.c:1646 */ break; - case 283: -#line 1454 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 284: +#line 1456 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); } -#line 3192 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3195 "ntp_parser.c" /* yacc.c:1646 */ break; - case 285: -#line 1460 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 286: +#line 1462 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); } -#line 3198 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3201 "ntp_parser.c" /* yacc.c:1646 */ break; - case 286: -#line 1465 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 287: +#line 1467 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.String_fifo) = (yyvsp[-1].String_fifo); APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } -#line 3207 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3210 "ntp_parser.c" /* yacc.c:1646 */ break; - case 287: -#line 1470 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 288: +#line 1472 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.String_fifo) = NULL; APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } -#line 3216 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3219 "ntp_parser.c" /* yacc.c:1646 */ break; - case 288: -#line 1478 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 289: +#line 1480 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_fifo) = (yyvsp[-1].Address_fifo); APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); } -#line 3225 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3228 "ntp_parser.c" /* yacc.c:1646 */ break; - case 289: -#line 1483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 290: +#line 1485 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_fifo) = NULL; APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); } -#line 3234 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3237 "ntp_parser.c" /* yacc.c:1646 */ break; - case 290: -#line 1491 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 291: +#line 1493 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) { yyerror("Integer value is not boolean (0 or 1). Assuming 1"); @@ -3243,29 +3246,29 @@ yyreduce: (yyval.Integer) = (yyvsp[0].Integer); } } -#line 3247 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3250 "ntp_parser.c" /* yacc.c:1646 */ break; - case 291: -#line 1499 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 292: +#line 1501 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 1; } -#line 3253 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3256 "ntp_parser.c" /* yacc.c:1646 */ break; - case 292: -#line 1500 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 293: +#line 1502 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } -#line 3259 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3262 "ntp_parser.c" /* yacc.c:1646 */ break; - case 293: -#line 1504 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 294: +#line 1506 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Double) = (double)(yyvsp[0].Integer); } -#line 3265 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3268 "ntp_parser.c" /* yacc.c:1646 */ break; - case 295: -#line 1515 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 296: +#line 1517 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { sim_node *sn; @@ -3275,125 +3278,125 @@ yyreduce: /* Revert from ; to \n for end-of-command */ old_config_style = 1; } -#line 3279 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3282 "ntp_parser.c" /* yacc.c:1646 */ break; - case 296: -#line 1532 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 297: +#line 1534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { old_config_style = 0; } -#line 3285 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3288 "ntp_parser.c" /* yacc.c:1646 */ break; - case 297: -#line 1537 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 298: +#line 1539 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3294 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3297 "ntp_parser.c" /* yacc.c:1646 */ break; - case 298: -#line 1542 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 299: +#line 1544 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3303 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3306 "ntp_parser.c" /* yacc.c:1646 */ break; - case 299: -#line 1550 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 300: +#line 1552 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } -#line 3309 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3312 "ntp_parser.c" /* yacc.c:1646 */ break; - case 302: -#line 1560 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 303: +#line 1562 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo); APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } -#line 3318 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3321 "ntp_parser.c" /* yacc.c:1646 */ break; - case 303: -#line 1565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 304: +#line 1567 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server_fifo) = NULL; APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } -#line 3327 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3330 "ntp_parser.c" /* yacc.c:1646 */ break; - case 304: -#line 1573 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 305: +#line 1575 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); } -#line 3333 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3336 "ntp_parser.c" /* yacc.c:1646 */ break; - case 305: -#line 1578 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 306: +#line 1580 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Double) = (yyvsp[-1].Double); } -#line 3339 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3342 "ntp_parser.c" /* yacc.c:1646 */ break; - case 306: -#line 1583 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 307: +#line 1585 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = (yyvsp[0].Address_node); } -#line 3345 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3348 "ntp_parser.c" /* yacc.c:1646 */ break; - case 307: -#line 1588 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 308: +#line 1590 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo); APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); } -#line 3354 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3357 "ntp_parser.c" /* yacc.c:1646 */ break; - case 308: -#line 1593 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 309: +#line 1595 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script_fifo) = NULL; APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); } -#line 3363 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3366 "ntp_parser.c" /* yacc.c:1646 */ break; - case 309: -#line 1601 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 310: +#line 1603 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); } -#line 3369 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3372 "ntp_parser.c" /* yacc.c:1646 */ break; - case 310: -#line 1606 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 311: +#line 1608 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3378 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3381 "ntp_parser.c" /* yacc.c:1646 */ break; - case 311: -#line 1611 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 312: +#line 1613 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3387 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3390 "ntp_parser.c" /* yacc.c:1646 */ break; - case 312: -#line 1619 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + case 313: +#line 1621 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } -#line 3393 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3396 "ntp_parser.c" /* yacc.c:1646 */ break; -#line 3397 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3400 "ntp_parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3621,7 +3624,7 @@ yyreturn: #endif return yyresult; } -#line 1630 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */ +#line 1632 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */ void diff --git a/contrib/ntp/ntpd/ntp_parser.h b/contrib/ntp/ntpd/ntp_parser.h index 3409e25..cfb9f0e 100644 --- a/contrib/ntp/ntpd/ntp_parser.h +++ b/contrib/ntp/ntpd/ntp_parser.h @@ -55,191 +55,192 @@ extern int yydebug; T_Automax = 265, T_Average = 266, T_Bclient = 267, - T_Beacon = 268, - T_Broadcast = 269, - T_Broadcastclient = 270, - T_Broadcastdelay = 271, - T_Burst = 272, - T_Calibrate = 273, - T_Ceiling = 274, - T_Clockstats = 275, - T_Cohort = 276, - T_ControlKey = 277, - T_Crypto = 278, - T_Cryptostats = 279, - T_Ctl = 280, - T_Day = 281, - T_Default = 282, - T_Digest = 283, - T_Disable = 284, - T_Discard = 285, - T_Dispersion = 286, - T_Double = 287, - T_Driftfile = 288, - T_Drop = 289, - T_Dscp = 290, - T_Ellipsis = 291, - T_Enable = 292, - T_End = 293, - T_False = 294, - T_File = 295, - T_Filegen = 296, - T_Filenum = 297, - T_Flag1 = 298, - T_Flag2 = 299, - T_Flag3 = 300, - T_Flag4 = 301, - T_Flake = 302, - T_Floor = 303, - T_Freq = 304, - T_Fudge = 305, - T_Host = 306, - T_Huffpuff = 307, - T_Iburst = 308, - T_Ident = 309, - T_Ignore = 310, - T_Incalloc = 311, - T_Incmem = 312, - T_Initalloc = 313, - T_Initmem = 314, - T_Includefile = 315, - T_Integer = 316, - T_Interface = 317, - T_Intrange = 318, - T_Io = 319, - T_Ipv4 = 320, - T_Ipv4_flag = 321, - T_Ipv6 = 322, - T_Ipv6_flag = 323, - T_Kernel = 324, - T_Key = 325, - T_Keys = 326, - T_Keysdir = 327, - T_Kod = 328, - T_Mssntp = 329, - T_Leapfile = 330, - T_Leapsmearinterval = 331, - T_Limited = 332, - T_Link = 333, - T_Listen = 334, - T_Logconfig = 335, - T_Logfile = 336, - T_Loopstats = 337, - T_Lowpriotrap = 338, - T_Manycastclient = 339, - T_Manycastserver = 340, - T_Mask = 341, - T_Maxage = 342, - T_Maxclock = 343, - T_Maxdepth = 344, - T_Maxdist = 345, - T_Maxmem = 346, - T_Maxpoll = 347, - T_Mdnstries = 348, - T_Mem = 349, - T_Memlock = 350, - T_Minclock = 351, - T_Mindepth = 352, - T_Mindist = 353, - T_Minimum = 354, - T_Minpoll = 355, - T_Minsane = 356, - T_Mode = 357, - T_Mode7 = 358, - T_Monitor = 359, - T_Month = 360, - T_Mru = 361, - T_Multicastclient = 362, - T_Nic = 363, - T_Nolink = 364, - T_Nomodify = 365, - T_Nomrulist = 366, - T_None = 367, - T_Nonvolatile = 368, - T_Nopeer = 369, - T_Noquery = 370, - T_Noselect = 371, - T_Noserve = 372, - T_Notrap = 373, - T_Notrust = 374, - T_Ntp = 375, - T_Ntpport = 376, - T_NtpSignDsocket = 377, - T_Orphan = 378, - T_Orphanwait = 379, - T_PCEdigest = 380, - T_Panic = 381, - T_Peer = 382, - T_Peerstats = 383, - T_Phone = 384, - T_Pid = 385, - T_Pidfile = 386, - T_Pool = 387, - T_Port = 388, - T_Preempt = 389, - T_Prefer = 390, - T_Protostats = 391, - T_Pw = 392, - T_Randfile = 393, - T_Rawstats = 394, - T_Refid = 395, - T_Requestkey = 396, - T_Reset = 397, - T_Restrict = 398, - T_Revoke = 399, - T_Rlimit = 400, - T_Saveconfigdir = 401, - T_Server = 402, - T_Setvar = 403, - T_Source = 404, - T_Stacksize = 405, - T_Statistics = 406, - T_Stats = 407, - T_Statsdir = 408, - T_Step = 409, - T_Stepback = 410, - T_Stepfwd = 411, - T_Stepout = 412, - T_Stratum = 413, - T_String = 414, - T_Sys = 415, - T_Sysstats = 416, - T_Tick = 417, - T_Time1 = 418, - T_Time2 = 419, - T_Timer = 420, - T_Timingstats = 421, - T_Tinker = 422, - T_Tos = 423, - T_Trap = 424, - T_True = 425, - T_Trustedkey = 426, - T_Ttl = 427, - T_Type = 428, - T_U_int = 429, - T_UEcrypto = 430, - T_UEcryptonak = 431, - T_UEdigest = 432, - T_Unconfig = 433, - T_Unpeer = 434, - T_Version = 435, - T_WanderThreshold = 436, - T_Week = 437, - T_Wildcard = 438, - T_Xleave = 439, - T_Year = 440, - T_Flag = 441, - T_EOC = 442, - T_Simulate = 443, - T_Beep_Delay = 444, - T_Sim_Duration = 445, - T_Server_Offset = 446, - T_Duration = 447, - T_Freq_Offset = 448, - T_Wander = 449, - T_Jitter = 450, - T_Prop_Delay = 451, - T_Proc_Delay = 452 + T_Bcpollbstep = 268, + T_Beacon = 269, + T_Broadcast = 270, + T_Broadcastclient = 271, + T_Broadcastdelay = 272, + T_Burst = 273, + T_Calibrate = 274, + T_Ceiling = 275, + T_Clockstats = 276, + T_Cohort = 277, + T_ControlKey = 278, + T_Crypto = 279, + T_Cryptostats = 280, + T_Ctl = 281, + T_Day = 282, + T_Default = 283, + T_Digest = 284, + T_Disable = 285, + T_Discard = 286, + T_Dispersion = 287, + T_Double = 288, + T_Driftfile = 289, + T_Drop = 290, + T_Dscp = 291, + T_Ellipsis = 292, + T_Enable = 293, + T_End = 294, + T_False = 295, + T_File = 296, + T_Filegen = 297, + T_Filenum = 298, + T_Flag1 = 299, + T_Flag2 = 300, + T_Flag3 = 301, + T_Flag4 = 302, + T_Flake = 303, + T_Floor = 304, + T_Freq = 305, + T_Fudge = 306, + T_Host = 307, + T_Huffpuff = 308, + T_Iburst = 309, + T_Ident = 310, + T_Ignore = 311, + T_Incalloc = 312, + T_Incmem = 313, + T_Initalloc = 314, + T_Initmem = 315, + T_Includefile = 316, + T_Integer = 317, + T_Interface = 318, + T_Intrange = 319, + T_Io = 320, + T_Ipv4 = 321, + T_Ipv4_flag = 322, + T_Ipv6 = 323, + T_Ipv6_flag = 324, + T_Kernel = 325, + T_Key = 326, + T_Keys = 327, + T_Keysdir = 328, + T_Kod = 329, + T_Mssntp = 330, + T_Leapfile = 331, + T_Leapsmearinterval = 332, + T_Limited = 333, + T_Link = 334, + T_Listen = 335, + T_Logconfig = 336, + T_Logfile = 337, + T_Loopstats = 338, + T_Lowpriotrap = 339, + T_Manycastclient = 340, + T_Manycastserver = 341, + T_Mask = 342, + T_Maxage = 343, + T_Maxclock = 344, + T_Maxdepth = 345, + T_Maxdist = 346, + T_Maxmem = 347, + T_Maxpoll = 348, + T_Mdnstries = 349, + T_Mem = 350, + T_Memlock = 351, + T_Minclock = 352, + T_Mindepth = 353, + T_Mindist = 354, + T_Minimum = 355, + T_Minpoll = 356, + T_Minsane = 357, + T_Mode = 358, + T_Mode7 = 359, + T_Monitor = 360, + T_Month = 361, + T_Mru = 362, + T_Multicastclient = 363, + T_Nic = 364, + T_Nolink = 365, + T_Nomodify = 366, + T_Nomrulist = 367, + T_None = 368, + T_Nonvolatile = 369, + T_Nopeer = 370, + T_Noquery = 371, + T_Noselect = 372, + T_Noserve = 373, + T_Notrap = 374, + T_Notrust = 375, + T_Ntp = 376, + T_Ntpport = 377, + T_NtpSignDsocket = 378, + T_Orphan = 379, + T_Orphanwait = 380, + T_PCEdigest = 381, + T_Panic = 382, + T_Peer = 383, + T_Peerstats = 384, + T_Phone = 385, + T_Pid = 386, + T_Pidfile = 387, + T_Pool = 388, + T_Port = 389, + T_Preempt = 390, + T_Prefer = 391, + T_Protostats = 392, + T_Pw = 393, + T_Randfile = 394, + T_Rawstats = 395, + T_Refid = 396, + T_Requestkey = 397, + T_Reset = 398, + T_Restrict = 399, + T_Revoke = 400, + T_Rlimit = 401, + T_Saveconfigdir = 402, + T_Server = 403, + T_Setvar = 404, + T_Source = 405, + T_Stacksize = 406, + T_Statistics = 407, + T_Stats = 408, + T_Statsdir = 409, + T_Step = 410, + T_Stepback = 411, + T_Stepfwd = 412, + T_Stepout = 413, + T_Stratum = 414, + T_String = 415, + T_Sys = 416, + T_Sysstats = 417, + T_Tick = 418, + T_Time1 = 419, + T_Time2 = 420, + T_Timer = 421, + T_Timingstats = 422, + T_Tinker = 423, + T_Tos = 424, + T_Trap = 425, + T_True = 426, + T_Trustedkey = 427, + T_Ttl = 428, + T_Type = 429, + T_U_int = 430, + T_UEcrypto = 431, + T_UEcryptonak = 432, + T_UEdigest = 433, + T_Unconfig = 434, + T_Unpeer = 435, + T_Version = 436, + T_WanderThreshold = 437, + T_Week = 438, + T_Wildcard = 439, + T_Xleave = 440, + T_Year = 441, + T_Flag = 442, + T_EOC = 443, + T_Simulate = 444, + T_Beep_Delay = 445, + T_Sim_Duration = 446, + T_Server_Offset = 447, + T_Duration = 448, + T_Freq_Offset = 449, + T_Wander = 450, + T_Jitter = 451, + T_Prop_Delay = 452, + T_Proc_Delay = 453 }; #endif /* Tokens. */ @@ -253,191 +254,192 @@ extern int yydebug; #define T_Automax 265 #define T_Average 266 #define T_Bclient 267 -#define T_Beacon 268 -#define T_Broadcast 269 -#define T_Broadcastclient 270 -#define T_Broadcastdelay 271 -#define T_Burst 272 -#define T_Calibrate 273 -#define T_Ceiling 274 -#define T_Clockstats 275 -#define T_Cohort 276 -#define T_ControlKey 277 -#define T_Crypto 278 -#define T_Cryptostats 279 -#define T_Ctl 280 -#define T_Day 281 -#define T_Default 282 -#define T_Digest 283 -#define T_Disable 284 -#define T_Discard 285 -#define T_Dispersion 286 -#define T_Double 287 -#define T_Driftfile 288 -#define T_Drop 289 -#define T_Dscp 290 -#define T_Ellipsis 291 -#define T_Enable 292 -#define T_End 293 -#define T_False 294 -#define T_File 295 -#define T_Filegen 296 -#define T_Filenum 297 -#define T_Flag1 298 -#define T_Flag2 299 -#define T_Flag3 300 -#define T_Flag4 301 -#define T_Flake 302 -#define T_Floor 303 -#define T_Freq 304 -#define T_Fudge 305 -#define T_Host 306 -#define T_Huffpuff 307 -#define T_Iburst 308 -#define T_Ident 309 -#define T_Ignore 310 -#define T_Incalloc 311 -#define T_Incmem 312 -#define T_Initalloc 313 -#define T_Initmem 314 -#define T_Includefile 315 -#define T_Integer 316 -#define T_Interface 317 -#define T_Intrange 318 -#define T_Io 319 -#define T_Ipv4 320 -#define T_Ipv4_flag 321 -#define T_Ipv6 322 -#define T_Ipv6_flag 323 -#define T_Kernel 324 -#define T_Key 325 -#define T_Keys 326 -#define T_Keysdir 327 -#define T_Kod 328 -#define T_Mssntp 329 -#define T_Leapfile 330 -#define T_Leapsmearinterval 331 -#define T_Limited 332 -#define T_Link 333 -#define T_Listen 334 -#define T_Logconfig 335 -#define T_Logfile 336 -#define T_Loopstats 337 -#define T_Lowpriotrap 338 -#define T_Manycastclient 339 -#define T_Manycastserver 340 -#define T_Mask 341 -#define T_Maxage 342 -#define T_Maxclock 343 -#define T_Maxdepth 344 -#define T_Maxdist 345 -#define T_Maxmem 346 -#define T_Maxpoll 347 -#define T_Mdnstries 348 -#define T_Mem 349 -#define T_Memlock 350 -#define T_Minclock 351 -#define T_Mindepth 352 -#define T_Mindist 353 -#define T_Minimum 354 -#define T_Minpoll 355 -#define T_Minsane 356 -#define T_Mode 357 -#define T_Mode7 358 -#define T_Monitor 359 -#define T_Month 360 -#define T_Mru 361 -#define T_Multicastclient 362 -#define T_Nic 363 -#define T_Nolink 364 -#define T_Nomodify 365 -#define T_Nomrulist 366 -#define T_None 367 -#define T_Nonvolatile 368 -#define T_Nopeer 369 -#define T_Noquery 370 -#define T_Noselect 371 -#define T_Noserve 372 -#define T_Notrap 373 -#define T_Notrust 374 -#define T_Ntp 375 -#define T_Ntpport 376 -#define T_NtpSignDsocket 377 -#define T_Orphan 378 -#define T_Orphanwait 379 -#define T_PCEdigest 380 -#define T_Panic 381 -#define T_Peer 382 -#define T_Peerstats 383 -#define T_Phone 384 -#define T_Pid 385 -#define T_Pidfile 386 -#define T_Pool 387 -#define T_Port 388 -#define T_Preempt 389 -#define T_Prefer 390 -#define T_Protostats 391 -#define T_Pw 392 -#define T_Randfile 393 -#define T_Rawstats 394 -#define T_Refid 395 -#define T_Requestkey 396 -#define T_Reset 397 -#define T_Restrict 398 -#define T_Revoke 399 -#define T_Rlimit 400 -#define T_Saveconfigdir 401 -#define T_Server 402 -#define T_Setvar 403 -#define T_Source 404 -#define T_Stacksize 405 -#define T_Statistics 406 -#define T_Stats 407 -#define T_Statsdir 408 -#define T_Step 409 -#define T_Stepback 410 -#define T_Stepfwd 411 -#define T_Stepout 412 -#define T_Stratum 413 -#define T_String 414 -#define T_Sys 415 -#define T_Sysstats 416 -#define T_Tick 417 -#define T_Time1 418 -#define T_Time2 419 -#define T_Timer 420 -#define T_Timingstats 421 -#define T_Tinker 422 -#define T_Tos 423 -#define T_Trap 424 -#define T_True 425 -#define T_Trustedkey 426 -#define T_Ttl 427 -#define T_Type 428 -#define T_U_int 429 -#define T_UEcrypto 430 -#define T_UEcryptonak 431 -#define T_UEdigest 432 -#define T_Unconfig 433 -#define T_Unpeer 434 -#define T_Version 435 -#define T_WanderThreshold 436 -#define T_Week 437 -#define T_Wildcard 438 -#define T_Xleave 439 -#define T_Year 440 -#define T_Flag 441 -#define T_EOC 442 -#define T_Simulate 443 -#define T_Beep_Delay 444 -#define T_Sim_Duration 445 -#define T_Server_Offset 446 -#define T_Duration 447 -#define T_Freq_Offset 448 -#define T_Wander 449 -#define T_Jitter 450 -#define T_Prop_Delay 451 -#define T_Proc_Delay 452 +#define T_Bcpollbstep 268 +#define T_Beacon 269 +#define T_Broadcast 270 +#define T_Broadcastclient 271 +#define T_Broadcastdelay 272 +#define T_Burst 273 +#define T_Calibrate 274 +#define T_Ceiling 275 +#define T_Clockstats 276 +#define T_Cohort 277 +#define T_ControlKey 278 +#define T_Crypto 279 +#define T_Cryptostats 280 +#define T_Ctl 281 +#define T_Day 282 +#define T_Default 283 +#define T_Digest 284 +#define T_Disable 285 +#define T_Discard 286 +#define T_Dispersion 287 +#define T_Double 288 +#define T_Driftfile 289 +#define T_Drop 290 +#define T_Dscp 291 +#define T_Ellipsis 292 +#define T_Enable 293 +#define T_End 294 +#define T_False 295 +#define T_File 296 +#define T_Filegen 297 +#define T_Filenum 298 +#define T_Flag1 299 +#define T_Flag2 300 +#define T_Flag3 301 +#define T_Flag4 302 +#define T_Flake 303 +#define T_Floor 304 +#define T_Freq 305 +#define T_Fudge 306 +#define T_Host 307 +#define T_Huffpuff 308 +#define T_Iburst 309 +#define T_Ident 310 +#define T_Ignore 311 +#define T_Incalloc 312 +#define T_Incmem 313 +#define T_Initalloc 314 +#define T_Initmem 315 +#define T_Includefile 316 +#define T_Integer 317 +#define T_Interface 318 +#define T_Intrange 319 +#define T_Io 320 +#define T_Ipv4 321 +#define T_Ipv4_flag 322 +#define T_Ipv6 323 +#define T_Ipv6_flag 324 +#define T_Kernel 325 +#define T_Key 326 +#define T_Keys 327 +#define T_Keysdir 328 +#define T_Kod 329 +#define T_Mssntp 330 +#define T_Leapfile 331 +#define T_Leapsmearinterval 332 +#define T_Limited 333 +#define T_Link 334 +#define T_Listen 335 +#define T_Logconfig 336 +#define T_Logfile 337 +#define T_Loopstats 338 +#define T_Lowpriotrap 339 +#define T_Manycastclient 340 +#define T_Manycastserver 341 +#define T_Mask 342 +#define T_Maxage 343 +#define T_Maxclock 344 +#define T_Maxdepth 345 +#define T_Maxdist 346 +#define T_Maxmem 347 +#define T_Maxpoll 348 +#define T_Mdnstries 349 +#define T_Mem 350 +#define T_Memlock 351 +#define T_Minclock 352 +#define T_Mindepth 353 +#define T_Mindist 354 +#define T_Minimum 355 +#define T_Minpoll 356 +#define T_Minsane 357 +#define T_Mode 358 +#define T_Mode7 359 +#define T_Monitor 360 +#define T_Month 361 +#define T_Mru 362 +#define T_Multicastclient 363 +#define T_Nic 364 +#define T_Nolink 365 +#define T_Nomodify 366 +#define T_Nomrulist 367 +#define T_None 368 +#define T_Nonvolatile 369 +#define T_Nopeer 370 +#define T_Noquery 371 +#define T_Noselect 372 +#define T_Noserve 373 +#define T_Notrap 374 +#define T_Notrust 375 +#define T_Ntp 376 +#define T_Ntpport 377 +#define T_NtpSignDsocket 378 +#define T_Orphan 379 +#define T_Orphanwait 380 +#define T_PCEdigest 381 +#define T_Panic 382 +#define T_Peer 383 +#define T_Peerstats 384 +#define T_Phone 385 +#define T_Pid 386 +#define T_Pidfile 387 +#define T_Pool 388 +#define T_Port 389 +#define T_Preempt 390 +#define T_Prefer 391 +#define T_Protostats 392 +#define T_Pw 393 +#define T_Randfile 394 +#define T_Rawstats 395 +#define T_Refid 396 +#define T_Requestkey 397 +#define T_Reset 398 +#define T_Restrict 399 +#define T_Revoke 400 +#define T_Rlimit 401 +#define T_Saveconfigdir 402 +#define T_Server 403 +#define T_Setvar 404 +#define T_Source 405 +#define T_Stacksize 406 +#define T_Statistics 407 +#define T_Stats 408 +#define T_Statsdir 409 +#define T_Step 410 +#define T_Stepback 411 +#define T_Stepfwd 412 +#define T_Stepout 413 +#define T_Stratum 414 +#define T_String 415 +#define T_Sys 416 +#define T_Sysstats 417 +#define T_Tick 418 +#define T_Time1 419 +#define T_Time2 420 +#define T_Timer 421 +#define T_Timingstats 422 +#define T_Tinker 423 +#define T_Tos 424 +#define T_Trap 425 +#define T_True 426 +#define T_Trustedkey 427 +#define T_Ttl 428 +#define T_Type 429 +#define T_U_int 430 +#define T_UEcrypto 431 +#define T_UEcryptonak 432 +#define T_UEdigest 433 +#define T_Unconfig 434 +#define T_Unpeer 435 +#define T_Version 436 +#define T_WanderThreshold 437 +#define T_Week 438 +#define T_Wildcard 439 +#define T_Xleave 440 +#define T_Year 441 +#define T_Flag 442 +#define T_EOC 443 +#define T_Simulate 444 +#define T_Beep_Delay 445 +#define T_Sim_Duration 446 +#define T_Server_Offset 447 +#define T_Duration 448 +#define T_Freq_Offset 449 +#define T_Wander 450 +#define T_Jitter 451 +#define T_Prop_Delay 452 +#define T_Proc_Delay 453 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -463,7 +465,7 @@ union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; -#line 467 "../../ntpd/ntp_parser.h" /* yacc.c:1909 */ +#line 469 "ntp_parser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/contrib/ntp/ntpd/ntp_peer.c b/contrib/ntp/ntpd/ntp_peer.c index cc23a38..04dee20 100644 --- a/contrib/ntp/ntpd/ntp_peer.c +++ b/contrib/ntp/ntpd/ntp_peer.c @@ -273,6 +273,22 @@ findexistingpeer( /* * findpeer - find and return a peer match for a received datagram in * the peer_hash table. + * + * [Bug 3072] To faciliate a faster reorganisation after routing changes + * the original code re-assigned the peer address to be the destination + * of the received packet and initiated another round on a mismatch. + * Unfortunately this leaves us wide open for a DoS attack where the + * attacker directs a packet with forged destination address to us -- + * this results in a wrong interface assignment, actually creating a DoS + * situation. + * + * This condition would persist until the next update of the interface + * list, but a continued attack would put us out of business again soon + * enough. Authentication alone does not help here, since it does not + * protect the UDP layer and leaves us open for a replay attack. + * + * So we do not update the adresses and wait until the next interface + * list update does the right thing for us. */ struct peer * findpeer( @@ -291,61 +307,50 @@ findpeer( srcadr = &rbufp->recv_srcadr; hash = NTP_HASH_ADDR(srcadr); for (p = peer_hash[hash]; p != NULL; p = p->adr_link) { - if (ADDR_PORT_EQ(srcadr, &p->srcadr)) { - - /* - * if the association matching rules determine - * that this is not a valid combination, then - * look for the next valid peer association. - */ - *action = MATCH_ASSOC(p->hmode, pkt_mode); - /* - * A response to our manycastclient solicitation - * might be misassociated with an ephemeral peer - * already spun for the server. If the packet's - * org timestamp doesn't match the peer's, check - * if it matches the ACST prototype peer's. If - * so it is a redundant solicitation response, - * return AM_ERR to discard it. [Bug 1762] - */ - if (MODE_SERVER == pkt_mode && - AM_PROCPKT == *action) { - pkt = &rbufp->recv_pkt; - NTOHL_FP(&pkt->org, &pkt_org); - if (!L_ISEQU(&p->aorg, &pkt_org) && - findmanycastpeer(rbufp)) - *action = AM_ERR; - } + /* [Bug 3072] ensure interface of peer matches */ + if (p->dstadr != rbufp->dstadr) + continue; + + /* ensure peer source address matches */ + if ( ! ADDR_PORT_EQ(srcadr, &p->srcadr)) + continue; + + /* If the association matching rules determine that this + * is not a valid combination, then look for the next + * valid peer association. + */ + *action = MATCH_ASSOC(p->hmode, pkt_mode); + + /* A response to our manycastclient solicitation might + * be misassociated with an ephemeral peer already spun + * for the server. If the packet's org timestamp + * doesn't match the peer's, check if it matches the + * ACST prototype peer's. If so it is a redundant + * solicitation response, return AM_ERR to discard it. + * [Bug 1762] + */ + if (MODE_SERVER == pkt_mode && AM_PROCPKT == *action) { + pkt = &rbufp->recv_pkt; + NTOHL_FP(&pkt->org, &pkt_org); + if (!L_ISEQU(&p->aorg, &pkt_org) && + findmanycastpeer(rbufp)) + *action = AM_ERR; + } - /* - * if an error was returned, exit back right - * here. - */ - if (*action == AM_ERR) - return NULL; + /* if an error was returned, exit back right here. */ + if (*action == AM_ERR) + return NULL; - /* - * if a match is found, we stop our search. - */ - if (*action != AM_NOMATCH) - break; - } + /* if a match is found, we stop our search. */ + if (*action != AM_NOMATCH) + break; } - /* - * If no matching association is found - */ - if (NULL == p) { + /* If no matching association is found... */ + if (NULL == p) *action = MATCH_ASSOC(NO_PEER, pkt_mode); - } else if (p->dstadr != rbufp->dstadr) { - set_peerdstadr(p, rbufp->dstadr); - if (p->dstadr == rbufp->dstadr) { - DPRINTF(1, ("Changed %s local address to match response\n", - stoa(&p->srcadr))); - return findpeer(rbufp, pkt_mode, action); - } - } + return p; } @@ -621,6 +626,12 @@ set_peerdstadr( { struct peer * unlinked; + DEBUG_INSIST(p != NULL); + + if (p == NULL) + return; + + /* check for impossible or identical assignment */ if (p->dstadr == dstadr) return; @@ -632,6 +643,8 @@ set_peerdstadr( (INT_MCASTIF & dstadr->flags) && MODE_CLIENT == p->hmode) { return; } + + /* unlink from list if we have an address prior to assignment */ if (p->dstadr != NULL) { p->dstadr->peercnt--; UNLINK_SLIST(unlinked, p->dstadr->peers, p, ilink, @@ -640,8 +653,11 @@ set_peerdstadr( stoa(&p->srcadr), latoa(p->dstadr), latoa(dstadr)); } + p->dstadr = dstadr; - if (dstadr != NULL) { + + /* link to list if we have an address after assignment */ + if (p->dstadr != NULL) { LINK_SLIST(dstadr->peers, p, ilink); dstadr->peercnt++; } diff --git a/contrib/ntp/ntpd/ntp_proto.c b/contrib/ntp/ntpd/ntp_proto.c index 513b99f..ad04ed4 100644 --- a/contrib/ntp/ntpd/ntp_proto.c +++ b/contrib/ntp/ntpd/ntp_proto.c @@ -138,6 +138,7 @@ char *sys_ident = NULL; /* identity scheme */ * TOS and multicast mapping stuff */ int sys_floor = 0; /* cluster stratum floor */ +u_char sys_bcpollbstep = 0; /* Broadcast Poll backstep gate */ int sys_ceiling = STRATUM_UNSPEC - 1; /* cluster stratum ceiling */ int sys_minsane = 1; /* minimum candidates */ int sys_minclock = NTP_MINCLOCK; /* minimum candidates */ @@ -278,7 +279,7 @@ valid_NAK( u_char hismode ) { - int base_packet_length = MIN_V4_PKT_LEN; + int base_packet_length = MIN_V4_PKT_LEN; int remainder_size; struct pkt * rpkt; int keyid; @@ -335,7 +336,7 @@ valid_NAK( myorg = &peer->borg; else myorg = &peer->aorg; - + if (L_ISZERO(&p_org) || L_ISZERO( myorg) || !L_ISEQU(&p_org, myorg)) { @@ -1450,22 +1451,66 @@ receive( ++bail; } - /* too early? worth an error, too! */ + /* too early? worth an error, too! + * + * [Bug 3113] Ensure that at least one poll + * interval has elapsed since the last **clean** + * packet was received. We limit the check to + * **clean** packets to prevent replayed packets + * and incorrectly authenticated packets, which + * we'll discard, from being used to create a + * denial of service condition. + */ deadband = (1u << pkt->ppoll); if (FLAG_BC_VOL & peer->flags) deadband -= 3; /* allow greater fuzz after volley */ - if ((current_time - peer->timelastrec) < deadband) { + if ((current_time - peer->timereceived) < deadband) { msyslog(LOG_INFO, "receive: broadcast packet from %s arrived after %lu, not %lu seconds!", stoa(&rbufp->recv_srcadr), - (current_time - peer->timelastrec), + (current_time - peer->timereceived), deadband); ++bail; } - /* Alert if time from the server is non-monotonic */ - tdiff = p_xmt; - L_SUB(&tdiff, &peer->bxmt); - if (tdiff.l_i < 0) { + /* Alert if time from the server is non-monotonic. + * + * [Bug 3114] is about Broadcast mode replay DoS. + * + * Broadcast mode *assumes* a trusted network. + * Even so, it's nice to be robust in the face + * of attacks. + * + * If we get an authenticated broadcast packet + * with an "earlier" timestamp, it means one of + * two things: + * + * - the broadcast server had a backward step. + * + * - somebody is trying a replay attack. + * + * deadband: By default, we assume the broadcast + * network is trustable, so we take our accepted + * broadcast packets as we receive them. But + * some folks might want to take additional poll + * delays before believing a backward step. + */ + if (sys_bcpollbstep) { + /* pkt->ppoll or peer->ppoll ? */ + deadband = (1u << pkt->ppoll) + * sys_bcpollbstep + 2; + } else { + deadband = 0; + } + + if (L_ISZERO(&peer->bxmt)) { + tdiff.l_ui = tdiff.l_uf = 0; + } else { + tdiff = p_xmt; + L_SUB(&tdiff, &peer->bxmt); + } + if (tdiff.l_i < 0 && + (current_time - peer->timereceived) < deadband) + { msyslog(LOG_INFO, "receive: broadcast packet from %s contains non-monotonic timestamp: %#010x.%08x -> %#010x.%08x", stoa(&rbufp->recv_srcadr), peer->bxmt.l_ui, peer->bxmt.l_uf, @@ -1474,8 +1519,6 @@ receive( ++bail; } - peer->bxmt = p_xmt; - if (bail) { peer->timelastrec = current_time; sys_declined++; @@ -1623,7 +1666,7 @@ receive( peer->borg.l_ui, peer->borg.l_uf); return; } - + /* * Basic mode checks: * @@ -1645,13 +1688,38 @@ receive( } else if (peer->flip == 0) { INSIST(0 != hisstratum); INSIST(STRATUM_UNSPEC != hisstratum); + if (0) { } else if (L_ISZERO(&p_org)) { + char *action; + + L_CLR(&peer->aorg); + /**/ + switch (hismode) { + /* We allow 0org for: */ + case UCHAR_MAX: + action = "Allow"; + break; + /* We disallow 0org for: */ + case MODE_UNSPEC: + case MODE_ACTIVE: + case MODE_PASSIVE: + case MODE_CLIENT: + case MODE_SERVER: + case MODE_BROADCAST: + action = "Drop"; + peer->bogusorg++; + peer->flash |= TEST2; /* bogus */ + break; + default: + INSIST(!"receive(): impossible hismode"); + break; + } + /**/ msyslog(LOG_INFO, - "receive: Got 0 origin timestamp from %s@%s xmt %#010x.%08x", - hm_str, ntoa(&peer->srcadr), + "receive: %s 0 origin timestamp from %s@%s xmt %#010x.%08x", + action, hm_str, ntoa(&peer->srcadr), ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf)); - L_CLR(&peer->aorg); } else if (!L_ISEQU(&p_org, &peer->aorg)) { /* are there cases here where we should bail? */ /* Should we set TEST2 if we decide to try xleave? */ @@ -1800,6 +1868,12 @@ receive( "receive: Bad broadcast auth (%d) from %s", is_authentic, ntoa(&peer->srcadr)); } + + /* + * Now that we know the packet is correctly authenticated, + * update peer->bxmt. + */ + peer->bxmt = p_xmt; } @@ -1878,7 +1952,7 @@ receive( peer->badauth++; return; } - break; + break; case MODE_CLIENT: /* client mode */ #if 0 /* At this point, MODE_CONTROL is overloaded by MODE_BCLIENT */ @@ -1886,14 +1960,14 @@ receive( #endif case MODE_PRIVATE: /* private mode */ case MODE_BCLIENT: /* broadcast client mode */ - break; + break; case MODE_UNSPEC: /* unspecified (old version) */ default: msyslog(LOG_INFO, "receive: Unexpected mode (%d) in packet from %s", hismode, ntoa(&peer->srcadr)); - break; + break; } @@ -2695,6 +2769,7 @@ peer_clear( ) { u_char u; + l_fp bxmt = peer->bxmt; /* bcast clients retain this! */ #ifdef AUTOKEY /* @@ -2731,6 +2806,10 @@ peer_clear( peer->flash = peer_unfit(peer); peer->jitter = LOGTOD(sys_precision); + /* Don't throw away our broadcast replay protection */ + if (peer->hmode == MODE_BCLIENT) + peer->bxmt = bxmt; + /* * If interleave mode, initialize the alternate origin switch. */ @@ -3040,8 +3119,9 @@ clock_select(void) * Leave the island immediately if the peer is * unfit to synchronize. */ - if (peer_unfit(peer)) + if (peer_unfit(peer)) { continue; + } /* * If this peer is an orphan parent, elect the @@ -3081,8 +3161,9 @@ clock_select(void) * parent in ancestry so are excluded. * See http://bugs.ntp.org/2050 */ - if (peer->stratum > sys_orphan) + if (peer->stratum > sys_orphan) { continue; + } #ifdef REFCLOCK /* * The following are special cases. We deal @@ -3531,15 +3612,15 @@ root_distance( /* * Root Distance (LAMBDA) is defined as: - * (delta + DELTA)/2 + epsilon + EPSILON + phi + * (delta + DELTA)/2 + epsilon + EPSILON + D * * where: * delta is the round-trip delay * DELTA is the root delay - * epsilon is the remote server precision + local precision + * epsilon is the peer dispersion * + (15 usec each second) * EPSILON is the root dispersion - * phi is the peer jitter statistic + * D is sys_jitter * * NB: Think hard about why we are using these values, and what * the alternatives are, and the various pros/cons. @@ -3548,8 +3629,7 @@ root_distance( * other worse choices. */ dtemp = (peer->delay + peer->rootdelay) / 2 - + LOGTOD(peer->precision) - + LOGTOD(sys_precision) + + peer->disp + clock_phi * (current_time - peer->update) + peer->rootdisp + peer->jitter; @@ -3995,6 +4075,10 @@ leap_smear_add_offs( L_ADD(t, &leap_smear.offset); + /* + ** XXX: Should the smear be added to the root dispersion? + */ + return; } @@ -4425,8 +4509,9 @@ peer_unfit( */ if ( peer->leap == LEAP_NOTINSYNC || peer->stratum < sys_floor - || peer->stratum >= sys_ceiling) + || peer->stratum >= sys_ceiling) { rval |= TEST10; /* bad synch or stratum */ + } /* * A distance error for a remote peer occurs if the root @@ -4435,8 +4520,9 @@ peer_unfit( */ if ( !(peer->flags & FLAG_REFCLOCK) && root_distance(peer) >= sys_maxdist - + clock_phi * ULOGTOD(peer->hpoll)) + + clock_phi * ULOGTOD(peer->hpoll)) { rval |= TEST11; /* distance exceeded */ + } /* * A loop error occurs if the remote peer is synchronized to the @@ -4444,15 +4530,17 @@ peer_unfit( * server as the local peer but only if the remote peer is * neither a reference clock nor an orphan. */ - if (peer->stratum > 1 && local_refid(peer)) + if (peer->stratum > 1 && local_refid(peer)) { rval |= TEST12; /* synchronization loop */ + } /* * An unreachable error occurs if the server is unreachable or * the noselect bit is set. */ - if (!peer->reach || (peer->flags & FLAG_NOSELECT)) + if (!peer->reach || (peer->flags & FLAG_NOSELECT)) { rval |= TEST13; /* unreachable */ + } peer->flash &= ~PEER_TEST_MASK; peer->flash |= rval; @@ -4717,6 +4805,11 @@ proto_config( /* * tos command - arguments are double, sometimes cast to int */ + + case PROTO_BCPOLLBSTEP: /* Broadcast Poll Backstep gate (bcpollbstep) */ + sys_bcpollbstep = (u_char)dvalue; + break; + case PROTO_BEACON: /* manycast beacon (beacon) */ sys_beacon = (int)dvalue; break; diff --git a/contrib/ntp/ntpd/ntp_refclock.c b/contrib/ntp/ntpd/ntp_refclock.c index d25cc2c..bc38901 100644 --- a/contrib/ntp/ntpd/ntp_refclock.c +++ b/contrib/ntp/ntpd/ntp_refclock.c @@ -710,7 +710,7 @@ process_refclock_packet( if (rio->io_input == NULL || (*rio->io_input)(rb) != 0) { rio->recvcount++; packets_received++; - handler_pkts++; + handler_pkts++; (*rio->clock_recv)(rb); } } @@ -1208,6 +1208,7 @@ refclock_ppsapi( "refclock_ppsapi: time_pps_create: %m"); return (0); } + ZERO(ap->ts); /* [Bug 2689] defined INIT state */ } return (1); } @@ -1278,7 +1279,7 @@ refclock_pps( struct refclockproc *pp; pps_info_t pps_info; struct timespec timeout; - double dtemp; + double dtemp, dcorr, trash; /* * We require the clock to be synchronized before setting the @@ -1293,15 +1294,14 @@ refclock_pps( if (refclock_params(pp->sloppyclockflag, ap) < 1) return (0); } - timeout.tv_sec = 0; - timeout.tv_nsec = 0; + ZERO(timeout); ZERO(pps_info); if (time_pps_fetch(ap->handle, PPS_TSFMT_TSPEC, &pps_info, &timeout) < 0) { refclock_report(peer, CEVNT_FAULT); return (0); } - timeout = ap->ts; + timeout = ap->ts; /* save old timestamp for check */ if (ap->pps_params.mode & PPS_CAPTUREASSERT) ap->ts = pps_info.assert_timestamp; else if (ap->pps_params.mode & PPS_CAPTURECLEAR) @@ -1309,22 +1309,62 @@ refclock_pps( else return (0); + /* [Bug 2689] Discard the first sample we read -- if the PPS + * source is currently down / disconnected, we have read a + * potentially *very* stale value here. So if our old TS value + * is all-zero, we consider this sample unrealiable and drop it. + * + * Note 1: a better check would compare the PPS time stamp to + * the current system time and drop it if it's more than say 3s + * away. + * + * Note 2: If we ever again get an all-zero PPS sample, the next + * one will be discarded. This can happen every 136yrs and is + * unlikely to be ever observed. + */ + if (0 == (timeout.tv_sec | timeout.tv_nsec)) + return (0); + + /* If the PPS source fails to deliver a new sample between + * polls, it regurgitates the last sample. We do not want to + * process the same sample multiple times. + */ if (0 == memcmp(&timeout, &ap->ts, sizeof(timeout))) return (0); /* - * Convert to signed fraction offset and stuff in median filter. + * Convert to signed fraction offset, apply fudge and properly + * fold the correction into the [-0.5s,0.5s] range. Handle + * excessive fudge times, too. */ - pp->lastrec.l_ui = (u_int32)ap->ts.tv_sec + JAN_1970; dtemp = ap->ts.tv_nsec / 1e9; + dcorr = modf((pp->fudgetime1 - dtemp), &trash); + if (dcorr > 0.5) + dcorr -= 1.0; + else if (dcorr < -0.5) + dcorr += 1.0; + + /* phase gate check: avoid wobbling by +/-1s when too close to + * the switch-over point. We allow +/-400ms max phase deviation. + * The trade-off is clear: The smaller the limit, the less + * sensitive to sampling noise the clock becomes. OTOH the + * system must get into phase gate range by other means for the + * PPS clock to lock in. + */ + if (fabs(dcorr) > 0.4) + return (0); + + /* + * record this time stamp and stuff in median filter + */ + pp->lastrec.l_ui = (u_int32)ap->ts.tv_sec + JAN_1970; pp->lastrec.l_uf = (u_int32)(dtemp * FRAC); - if (dtemp > .5) - dtemp -= 1.; - SAMPLE(-dtemp + pp->fudgetime1); + SAMPLE(dcorr); + #ifdef DEBUG if (debug > 1) printf("refclock_pps: %lu %f %f\n", current_time, - dtemp, pp->fudgetime1); + dcorr, pp->fudgetime1); #endif return (1); } diff --git a/contrib/ntp/ntpd/ntpd-opts.c b/contrib/ntp/ntpd/ntpd-opts.c index f19705b..4983964 100644 --- a/contrib/ntp/ntpd/ntpd-opts.c +++ b/contrib/ntp/ntpd/ntpd-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:32:42 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 07:59:43 AM by AutoGen 5.18.5 * From the definitions ntpd-opts.def * and the template file options * @@ -75,7 +75,7 @@ extern FILE * option_usage_fp; * static const strings for ntpd options */ static char const ntpd_opt_strs[3129] = -/* 0 */ "ntpd 4.2.8p8\n" +/* 0 */ "ntpd 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -205,12 +205,12 @@ static char const ntpd_opt_strs[3129] = /* 2900 */ "output version information and exit\0" /* 2936 */ "version\0" /* 2944 */ "NTPD\0" -/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p8\n" +/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n" "\t\t[ <server1> ... <serverN> ]\n\0" /* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 3114 */ "\n\0" -/* 3116 */ "ntpd 4.2.8p8"; +/* 3116 */ "ntpd 4.2.8p9"; /** * ipv4 option description with @@ -1529,7 +1529,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpdOptions.pzCopyright */ - puts(_("ntpd 4.2.8p8\n\ + puts(_("ntpd 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -1670,7 +1670,7 @@ implied warranty.\n")); puts(_("output version information and exit")); /* referenced via ntpdOptions.pzUsageTitle */ - puts(_("ntpd - NTP daemon program - Ver. 4.2.8p8\n\ + puts(_("ntpd - NTP daemon program - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\ \t\t[ <server1> ... <serverN> ]\n")); @@ -1678,7 +1678,7 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\ puts(_("\n")); /* referenced via ntpdOptions.pzFullVersion */ - puts(_("ntpd 4.2.8p8")); + puts(_("ntpd 4.2.8p9")); /* referenced via ntpdOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/ntpd/ntpd-opts.h b/contrib/ntp/ntpd/ntpd-opts.h index 069673c..e5bdf82 100644 --- a/contrib/ntp/ntpd/ntpd-opts.h +++ b/contrib/ntp/ntpd/ntpd-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:32:40 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 07:59:42 AM by AutoGen 5.18.5 * From the definitions ntpd-opts.def * and the template file options * @@ -106,9 +106,9 @@ typedef enum { /** count of all options for ntpd */ #define OPTION_CT 38 /** ntpd version */ -#define NTPD_VERSION "4.2.8p8" +#define NTPD_VERSION "4.2.8p9" /** Full ntpd version text */ -#define NTPD_FULL_VERSION "ntpd 4.2.8p8" +#define NTPD_FULL_VERSION "ntpd 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/ntpd/ntpd.1ntpdman b/contrib/ntp/ntpd/ntpd.1ntpdman index f449c20..f24d92e 100644 --- a/contrib/ntp/ntpd/ntpd.1ntpdman +++ b/contrib/ntp/ntpd/ntpd.1ntpdman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpd 1ntpdman "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpd 1ntpdman "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Jnai2U/ag-Ynaa1U) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-giaGkh/ag-tiayjh) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:01 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:50 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpd/ntpd.1ntpdmdoc b/contrib/ntp/ntpd/ntpd.1ntpdmdoc index 1621274..80a70bc 100644 --- a/contrib/ntp/ntpd/ntpd.1ntpdmdoc +++ b/contrib/ntp/ntpd/ntpd.1ntpdmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPD 1ntpdmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:22 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:08 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntpd.html b/contrib/ntp/ntpd/ntpd.html index 077f723..e5350a9 100644 --- a/contrib/ntp/ntpd/ntpd.html +++ b/contrib/ntp/ntpd/ntpd.html @@ -39,7 +39,7 @@ The program can operate in any of several modes, including client/server, symmetric and broadcast modes, and with both symmetric-key and public-key cryptography. - <p>This document applies to version 4.2.8p8 of <code>ntpd</code>. + <p>This document applies to version 4.2.8p9 of <code>ntpd</code>. <ul class="menu"> <li><a accesskey="1" href="#ntpd-Description">ntpd Description</a>: Description @@ -220,7 +220,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p7 +<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p9-RC Usage: ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \ [ <server1> ... <serverN> ] Flg Arg Option-Name Description diff --git a/contrib/ntp/ntpd/ntpd.man.in b/contrib/ntp/ntpd/ntpd.man.in index b1eafe6..d5e331f 100644 --- a/contrib/ntp/ntpd/ntpd.man.in +++ b/contrib/ntp/ntpd/ntpd.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpd @NTPD_MS@ "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpd @NTPD_MS@ "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Jnai2U/ag-Ynaa1U) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-giaGkh/ag-tiayjh) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:01 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:50 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpd/ntpd.mdoc.in b/contrib/ntp/ntpd/ntpd.mdoc.in index 0b7489a..76577f6 100644 --- a/contrib/ntp/ntpd/ntpd.mdoc.in +++ b/contrib/ntp/ntpd/ntpd.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPD @NTPD_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:22 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:08 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/refclock_gpsdjson.c b/contrib/ntp/ntpd/refclock_gpsdjson.c index 24a15e7..7c49311 100644 --- a/contrib/ntp/ntpd/refclock_gpsdjson.c +++ b/contrib/ntp/ntpd/refclock_gpsdjson.c @@ -949,7 +949,7 @@ add_clock_sample( pp->lastref = stamp; if (pp->coderecv == pp->codeproc) refclock_report(peer, CEVNT_NOMINAL); - refclock_process_offset(pp, stamp, recvt, 0.0); + refclock_process_offset(pp, stamp, recvt, pp->fudgetime1); } /* ------------------------------------------------------------------ */ diff --git a/contrib/ntp/ntpd/refclock_jjy.c b/contrib/ntp/ntpd/refclock_jjy.c index fc51fd9..f53150f 100644 --- a/contrib/ntp/ntpd/refclock_jjy.c +++ b/contrib/ntp/ntpd/refclock_jjy.c @@ -106,6 +106,10 @@ /* 2015/05/15 */ /* [Add] Support the SEIKO TIME SYSTEMS TDC-300 */ /* */ +/* 2016/05/08 */ +/* [Fix] C-DEX JST2000 */ +/* Thanks to Mr. Kuramatsu for the report and the patch. */ +/* */ /**********************************************************************/ #ifdef HAVE_CONFIG_H @@ -1499,9 +1503,9 @@ jjy_receive_cdex_jst2000 ( struct recvbuf *rbufp ) return JJY_RECEIVE_ERROR ; } - /* JYYMMDD HHMMSSS */ + /* JYYMMDDWHHMMSSS */ - rc = sscanf ( pBuf, "J%2d%2d%2d %2d%2d%2d%1d", + rc = sscanf ( pBuf, "J%2d%2d%2d%*1d%2d%2d%2d%1d", &up->year, &up->month, &up->day, &up->hour, &up->minute, &up->second, &up->msecond ) ; diff --git a/contrib/ntp/ntpd/refclock_jupiter.c b/contrib/ntp/ntpd/refclock_jupiter.c index 02b33df..84d089d 100644 --- a/contrib/ntp/ntpd/refclock_jupiter.c +++ b/contrib/ntp/ntpd/refclock_jupiter.c @@ -89,6 +89,11 @@ /* Unix timestamp for the GPS epoch: January 6, 1980 */ #define GPS_EPOCH 315964800 +/* Rata Die Number of first day of GPS epoch. This is the number of days + * since 0000-12-31 to 1980-01-06 in the proleptic Gregorian Calendar. + */ +#define RDN_GPS_EPOCH (4*146097 + 138431 + 1) + /* Double short to unsigned int */ #define DS2UI(p) ((getshort((p)[1]) << 16) | getshort((p)[0])) @@ -154,6 +159,10 @@ static char * jupiter_send (struct instance *, struct jheader *); static void jupiter_shutdown(int, struct peer *); static int jupiter_start (int, struct peer *); +static u_int get_full_week(u_int base_week, u_int gpos_week); +static u_int get_base_week(void); + + /* * Transfer vector */ @@ -846,8 +855,14 @@ jupiter_parse_gpos(struct instance *instance, u_short *sp) return ("Navigation solution not valid"); } - instance->gpos_gweek = jg->gweek; instance->gpos_sweek = DS2UI(jg->sweek); + instance->gpos_gweek = get_full_week(get_base_week(), + getshort(jg->gweek)); + + /* according to the protocol spec, the seconds-in-week cannot + * exceed the nominal value: Is it really necessary to normalise + * the seconds??? + */ while(instance->gpos_sweek >= WEEKSECS) { instance->gpos_sweek -= WEEKSECS; ++instance->gpos_gweek; @@ -1115,6 +1130,56 @@ jupiter_recv(struct instance *instance) return (cc); } +static u_int +get_base_week(void) +{ + static int init_done /* = 0 */; + static u_int base_week; + + /* Get the build date, convert to days since GPS epoch and + * finally weeks since GPS epoch. Note that the build stamp is + * trusted once it is fetched -- only dates before the GPS epoch + * are not permitted. This will permit proper synchronisation + * for a time range of 1024 weeks starting with 00:00:00 of the + * last Sunday on or before the build time. + * + * If the impossible happens and fetching the build date fails, + * a 1024-week cycle starting with 2016-01-03 is assumed to + * avoid catastropic errors. This will work until 2035-08-19. + */ + if (!init_done) { + struct calendar bd; + if (ntpcal_get_build_date(&bd)) { + int32_t days = ntpcal_date_to_rd(&bd); + if (days > RDN_GPS_EPOCH) + days -= RDN_GPS_EPOCH; + else + days = 0; + base_week = days / 7; + } else { + base_week = 1878; /* 2016-01-03, Sunday */ + msyslog(LOG_ERR, + "refclock_jupiter: ntpcal_get_build_date() failed: %s", + "using 2016-01-03 as GPS base!"); + } + init_done = 1; + } + return base_week; +} + +static u_int +get_full_week( + u_int base_week, + u_int gpos_week + ) +{ + /* Periodic extension on base week. Since the period is 1024 + * weeks and we do unsigned arithmetic here, we can do wonderful + * things with masks and the well-defined overflow behaviour. + */ + return base_week + ((gpos_week - base_week) & 1023); +} + #else /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */ int refclock_jupiter_bs; #endif /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */ diff --git a/contrib/ntp/ntpdc/invoke-ntpdc.texi b/contrib/ntp/ntpdc/invoke-ntpdc.texi index 717904a..a0e2b35 100644 --- a/contrib/ntp/ntpdc/invoke-ntpdc.texi +++ b/contrib/ntp/ntpdc/invoke-ntpdc.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpdc.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:54 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:02:33 AM by AutoGen 5.18.5 # From the definitions ntpdc-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -76,7 +76,7 @@ with a status code of 0. @exampleindent 0 @example -ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8 +ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9 Usage: ntpdc [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...] Flg Arg Option-Name Description -4 no ipv4 Force IPv4 DNS name resolution diff --git a/contrib/ntp/ntpdc/ntpdc-opts.c b/contrib/ntp/ntpdc/ntpdc-opts.c index 830f07f..06729a4 100644 --- a/contrib/ntp/ntpdc/ntpdc-opts.c +++ b/contrib/ntp/ntpdc/ntpdc-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpdc-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:36:34 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:02:18 AM by AutoGen 5.18.5 * From the definitions ntpdc-opts.def * and the template file options * @@ -69,7 +69,7 @@ extern FILE * option_usage_fp; * static const strings for ntpdc options */ static char const ntpdc_opt_strs[1911] = -/* 0 */ "ntpdc 4.2.8p8\n" +/* 0 */ "ntpdc 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -128,14 +128,14 @@ static char const ntpdc_opt_strs[1911] = /* 1694 */ "no-load-opts\0" /* 1707 */ "no\0" /* 1710 */ "NTPDC\0" -/* 1716 */ "ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8\n" +/* 1716 */ "ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n\0" /* 1846 */ "$HOME\0" /* 1852 */ ".\0" /* 1854 */ ".ntprc\0" /* 1861 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 1895 */ "\n\0" -/* 1897 */ "ntpdc 4.2.8p8"; +/* 1897 */ "ntpdc 4.2.8p9"; /** * ipv4 option description with @@ -796,7 +796,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpdcOptions.pzCopyright */ - puts(_("ntpdc 4.2.8p8\n\ + puts(_("ntpdc 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -862,14 +862,14 @@ implied warranty.\n")); puts(_("load options from a config file")); /* referenced via ntpdcOptions.pzUsageTitle */ - puts(_("ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8\n\ + puts(_("ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n")); /* referenced via ntpdcOptions.pzExplain */ puts(_("\n")); /* referenced via ntpdcOptions.pzFullVersion */ - puts(_("ntpdc 4.2.8p8")); + puts(_("ntpdc 4.2.8p9")); /* referenced via ntpdcOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/ntpdc/ntpdc-opts.h b/contrib/ntp/ntpdc/ntpdc-opts.h index 7bd869e..d8070a1 100644 --- a/contrib/ntp/ntpdc/ntpdc-opts.h +++ b/contrib/ntp/ntpdc/ntpdc-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpdc-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:36:34 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:02:17 AM by AutoGen 5.18.5 * From the definitions ntpdc-opts.def * and the template file options * @@ -83,9 +83,9 @@ typedef enum { /** count of all options for ntpdc */ #define OPTION_CT 15 /** ntpdc version */ -#define NTPDC_VERSION "4.2.8p8" +#define NTPDC_VERSION "4.2.8p9" /** Full ntpdc version text */ -#define NTPDC_FULL_VERSION "ntpdc 4.2.8p8" +#define NTPDC_FULL_VERSION "ntpdc 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/ntpdc/ntpdc.1ntpdcman b/contrib/ntp/ntpdc/ntpdc.1ntpdcman index c7055fc..1362cf8 100644 --- a/contrib/ntp/ntpdc/ntpdc.1ntpdcman +++ b/contrib/ntp/ntpdc/ntpdc.1ntpdcman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpdc 1ntpdcman "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpdc 1ntpdcman "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-seaORW/ag-FeaGQW) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gTaibj/ag-tTaaaj) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:50 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:29 AM by AutoGen 5.18.5 .\" From the definitions ntpdc-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc b/contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc index ac6fae5..59589c1 100644 --- a/contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc +++ b/contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPDC 1ntpdcmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpdc-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:58 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:35 AM by AutoGen 5.18.5 .\" From the definitions ntpdc-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpdc/ntpdc.html b/contrib/ntp/ntpdc/ntpdc.html index 0561004..3dc04a3 100644 --- a/contrib/ntp/ntpdc/ntpdc.html +++ b/contrib/ntp/ntpdc/ntpdc.html @@ -36,7 +36,7 @@ display the time offset of the system clock relative to the server clock. Run as root, it can correct the system clock to this offset as well. It can be run as an interactive command or from a cron job. - <p>This document applies to version 4.2.8p8 of <code>ntpdc</code>. + <p>This document applies to version 4.2.8p9 of <code>ntpdc</code>. <p>The program implements the SNTP protocol as defined by RFC 5905, the NTPv4 IETF specification. @@ -152,7 +152,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8 +<pre class="example">ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9 Usage: ntpdc [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...] Flg Arg Option-Name Description -4 no ipv4 Force IPv4 DNS name resolution diff --git a/contrib/ntp/ntpdc/ntpdc.man.in b/contrib/ntp/ntpdc/ntpdc.man.in index 3175905..2a99613 100644 --- a/contrib/ntp/ntpdc/ntpdc.man.in +++ b/contrib/ntp/ntpdc/ntpdc.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpdc @NTPDC_MS@ "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpdc @NTPDC_MS@ "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-seaORW/ag-FeaGQW) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gTaibj/ag-tTaaaj) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:50 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:29 AM by AutoGen 5.18.5 .\" From the definitions ntpdc-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpdc/ntpdc.mdoc.in b/contrib/ntp/ntpdc/ntpdc.mdoc.in index fdca923..73b2653 100644 --- a/contrib/ntp/ntpdc/ntpdc.mdoc.in +++ b/contrib/ntp/ntpdc/ntpdc.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPDC @NTPDC_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpdc-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:58 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:35 AM by AutoGen 5.18.5 .\" From the definitions ntpdc-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpq/invoke-ntpq.texi b/contrib/ntp/ntpq/invoke-ntpq.texi index 28cf6c9..4e37ff0 100644 --- a/contrib/ntp/ntpq/invoke-ntpq.texi +++ b/contrib/ntp/ntpq/invoke-ntpq.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpq.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:37:46 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:03:06 AM by AutoGen 5.18.5 # From the definitions ntpq-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -848,7 +848,7 @@ with a status code of 0. @exampleindent 0 @example -ntpq - standard NTP query program - Ver. 4.2.8p8 +ntpq - standard NTP query program - Ver. 4.2.8p9 Usage: ntpq [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...] Flg Arg Option-Name Description -4 no ipv4 Force IPv4 DNS name resolution diff --git a/contrib/ntp/ntpq/ntpq-opts.c b/contrib/ntp/ntpq/ntpq-opts.c index b2bb3d9..f63f81f 100644 --- a/contrib/ntp/ntpq/ntpq-opts.c +++ b/contrib/ntp/ntpq/ntpq-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpq-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:37:05 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:02:38 AM by AutoGen 5.18.5 * From the definitions ntpq-opts.def * and the template file options * @@ -69,7 +69,7 @@ extern FILE * option_usage_fp; * static const strings for ntpq options */ static char const ntpq_opt_strs[1982] = -/* 0 */ "ntpq 4.2.8p8\n" +/* 0 */ "ntpq 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -132,13 +132,13 @@ static char const ntpq_opt_strs[1982] = /* 1775 */ "no-load-opts\0" /* 1788 */ "no\0" /* 1791 */ "NTPQ\0" -/* 1796 */ "ntpq - standard NTP query program - Ver. 4.2.8p8\n" +/* 1796 */ "ntpq - standard NTP query program - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n\0" /* 1915 */ "$HOME\0" /* 1921 */ ".\0" /* 1923 */ ".ntprc\0" /* 1930 */ "http://bugs.ntp.org, bugs@ntp.org\0" -/* 1964 */ "ntpq 4.2.8p8\0" +/* 1964 */ "ntpq 4.2.8p9\0" /* 1977 */ "hash"; /** @@ -841,7 +841,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpqOptions.pzCopyright */ - puts(_("ntpq 4.2.8p8\n\ + puts(_("ntpq 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -910,11 +910,11 @@ implied warranty.\n")); puts(_("load options from a config file")); /* referenced via ntpqOptions.pzUsageTitle */ - puts(_("ntpq - standard NTP query program - Ver. 4.2.8p8\n\ + puts(_("ntpq - standard NTP query program - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n")); /* referenced via ntpqOptions.pzFullVersion */ - puts(_("ntpq 4.2.8p8")); + puts(_("ntpq 4.2.8p9")); /* referenced via ntpqOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/ntpq/ntpq-opts.h b/contrib/ntp/ntpq/ntpq-opts.h index 03fd3a3..1f2896f 100644 --- a/contrib/ntp/ntpq/ntpq-opts.h +++ b/contrib/ntp/ntpq/ntpq-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpq-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:37:04 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:02:38 AM by AutoGen 5.18.5 * From the definitions ntpq-opts.def * and the template file options * @@ -84,9 +84,9 @@ typedef enum { /** count of all options for ntpq */ #define OPTION_CT 16 /** ntpq version */ -#define NTPQ_VERSION "4.2.8p8" +#define NTPQ_VERSION "4.2.8p9" /** Full ntpq version text */ -#define NTPQ_FULL_VERSION "ntpq 4.2.8p8" +#define NTPQ_FULL_VERSION "ntpq 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/ntpq/ntpq.1ntpqman b/contrib/ntp/ntpq/ntpq.1ntpqman index 6270eeb..22f1488 100644 --- a/contrib/ntp/ntpq/ntpq.1ntpqman +++ b/contrib/ntp/ntpq/ntpq.1ntpqman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpq 1ntpqman "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpq 1ntpqman "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pGa42X/ag-CGaW1X) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-nWaWmk/ag-AWaOlk) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:37:41 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:02 AM by AutoGen 5.18.5 .\" From the definitions ntpq-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpq/ntpq.1ntpqmdoc b/contrib/ntp/ntpq/ntpq.1ntpqmdoc index 9985ecf..3039bea 100644 --- a/contrib/ntp/ntpq/ntpq.1ntpqmdoc +++ b/contrib/ntp/ntpq/ntpq.1ntpqmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPQ 1ntpqmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpq-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:37:48 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:08 AM by AutoGen 5.18.5 .\" From the definitions ntpq-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpq/ntpq.c b/contrib/ntp/ntpq/ntpq.c index ed5c65f..91364de 100644 --- a/contrib/ntp/ntpq/ntpq.c +++ b/contrib/ntp/ntpq/ntpq.c @@ -34,6 +34,7 @@ #include "openssl/evp.h" #include "openssl/objects.h" #include "openssl/err.h" +#include "libssl_compat.h" #endif #include <ssl_applink.c> @@ -3582,7 +3583,7 @@ static void list_md_fn(const EVP_MD *m, const char *from, const char *to, void * size_t len, n; const char *name, *cp, **seen; struct hstate *hstate = arg; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; u_int digest_len; u_char digest[EVP_MAX_MD_SIZE]; @@ -3613,8 +3614,10 @@ static void list_md_fn(const EVP_MD *m, const char *from, const char *to, void * * Keep this consistent with keytype_from_text() in ssl_init.c. */ - EVP_DigestInit(&ctx, EVP_get_digestbyname(name)); - EVP_DigestFinal(&ctx, digest, &digest_len); + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbyname(name)); + EVP_DigestFinal(ctx, digest, &digest_len); + EVP_MD_CTX_free(ctx); if (digest_len > (MAX_MAC_LEN - sizeof(keyid_t))) return; diff --git a/contrib/ntp/ntpq/ntpq.html b/contrib/ntp/ntpq/ntpq.html index 8b91763..26d608b9 100644 --- a/contrib/ntp/ntpq/ntpq.html +++ b/contrib/ntp/ntpq/ntpq.html @@ -44,7 +44,7 @@ monitor the operational status and determine the performance of <code>ntpd</code>, the NTP daemon. - <p>This document applies to version 4.2.8p8 of <code>ntpq</code>. + <p>This document applies to version 4.2.8p9 of <code>ntpq</code>. <ul class="menu"> <li><a accesskey="1" href="#ntpq-Description">ntpq Description</a> @@ -770,7 +770,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntpq - standard NTP query program - Ver. 4.2.8p7 +<pre class="example">ntpq - standard NTP query program - Ver. 4.2.8p9-RC Usage: ntpq [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...] Flg Arg Option-Name Description -4 no ipv4 Force IPv4 DNS name resolution diff --git a/contrib/ntp/ntpq/ntpq.man.in b/contrib/ntp/ntpq/ntpq.man.in index 37eec21..f6f889b 100644 --- a/contrib/ntp/ntpq/ntpq.man.in +++ b/contrib/ntp/ntpq/ntpq.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpq @NTPQ_MS@ "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpq @NTPQ_MS@ "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pGa42X/ag-CGaW1X) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-nWaWmk/ag-AWaOlk) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:37:41 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:02 AM by AutoGen 5.18.5 .\" From the definitions ntpq-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpq/ntpq.mdoc.in b/contrib/ntp/ntpq/ntpq.mdoc.in index 576d631..7471abc 100644 --- a/contrib/ntp/ntpq/ntpq.mdoc.in +++ b/contrib/ntp/ntpq/ntpq.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPQ @NTPQ_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpq-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:37:48 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:08 AM by AutoGen 5.18.5 .\" From the definitions ntpq-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi b/contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi index 6e6590c..6f18a0a 100644 --- a/contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi +++ b/contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpsnmpd.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:39:15 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:03:22 AM by AutoGen 5.18.5 # From the definitions ntpsnmpd-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -47,7 +47,7 @@ with a status code of 0. @exampleindent 0 @example -ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8 +ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9 Usage: ntpsnmpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... Flg Arg Option-Name Description -n no nofork Do not fork diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c b/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c index 68fcd01..f550441 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpsnmpd-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:37:55 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:03:11 AM by AutoGen 5.18.5 * From the definitions ntpsnmpd-opts.def * and the template file options * @@ -61,7 +61,7 @@ extern FILE * option_usage_fp; * static const strings for ntpsnmpd options */ static char const ntpsnmpd_opt_strs[1610] = -/* 0 */ "ntpsnmpd 4.2.8p8\n" +/* 0 */ "ntpsnmpd 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -101,14 +101,14 @@ static char const ntpsnmpd_opt_strs[1610] = /* 1414 */ "no-load-opts\0" /* 1427 */ "no\0" /* 1430 */ "NTPSNMPD\0" -/* 1439 */ "ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8\n" +/* 1439 */ "ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0" /* 1542 */ "$HOME\0" /* 1548 */ ".\0" /* 1550 */ ".ntprc\0" /* 1557 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 1591 */ "\n\0" -/* 1593 */ "ntpsnmpd 4.2.8p8"; +/* 1593 */ "ntpsnmpd 4.2.8p9"; /** * nofork option description: @@ -554,7 +554,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpsnmpdOptions.pzCopyright */ - puts(_("ntpsnmpd 4.2.8p8\n\ + puts(_("ntpsnmpd 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -599,14 +599,14 @@ implied warranty.\n")); puts(_("load options from a config file")); /* referenced via ntpsnmpdOptions.pzUsageTitle */ - puts(_("ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8\n\ + puts(_("ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n")); /* referenced via ntpsnmpdOptions.pzExplain */ puts(_("\n")); /* referenced via ntpsnmpdOptions.pzFullVersion */ - puts(_("ntpsnmpd 4.2.8p8")); + puts(_("ntpsnmpd 4.2.8p9")); /* referenced via ntpsnmpdOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h b/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h index f0a4e84..44fe0ba 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpsnmpd-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:37:55 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:03:11 AM by AutoGen 5.18.5 * From the definitions ntpsnmpd-opts.def * and the template file options * @@ -76,9 +76,9 @@ typedef enum { /** count of all options for ntpsnmpd */ #define OPTION_CT 8 /** ntpsnmpd version */ -#define NTPSNMPD_VERSION "4.2.8p8" +#define NTPSNMPD_VERSION "4.2.8p9" /** Full ntpsnmpd version text */ -#define NTPSNMPD_FULL_VERSION "ntpsnmpd 4.2.8p8" +#define NTPSNMPD_FULL_VERSION "ntpsnmpd 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman b/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman index 27aaed6..fc4f475 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpsnmpd 1ntpsnmpdman "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpsnmpd 1ntpsnmpdman "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IPay_Y/ag-WPaq.Y) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oTaGvl/ag-ATayul) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:11 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:18 AM by AutoGen 5.18.5 .\" From the definitions ntpsnmpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc b/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc index b89b192..d735054 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPSNMPD 1ntpsnmpdmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpsnmpd-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:18 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:24 AM by AutoGen 5.18.5 .\" From the definitions ntpsnmpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd.html b/contrib/ntp/ntpsnmpd/ntpsnmpd.html index 6c892e4..dac32b6 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd.html +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd.html @@ -42,7 +42,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <p>The <code>ntpsnmpd</code> utility program is used to monitor NTP daemon <code>ntpd</code> operations and determine performance. It uses the standard NTP mode 6 control - <p>This document applies to version 4.2.8p8 of <code>ntpsnmpd</code>. + <p>This document applies to version 4.2.8p9 of <code>ntpsnmpd</code>. <ul class="menu"> <li><a accesskey="1" href="#ntpsnmpd-Description">ntpsnmpd Description</a>: Description diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd.man.in b/contrib/ntp/ntpsnmpd/ntpsnmpd.man.in index 882f555..5b15c10 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd.man.in +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpsnmpd @NTPSNMPD_MS@ "02 Jun 2016" "4.2.8p8" "User Commands" +.TH ntpsnmpd @NTPSNMPD_MS@ "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IPay_Y/ag-WPaq.Y) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oTaGvl/ag-ATayul) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:11 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:18 AM by AutoGen 5.18.5 .\" From the definitions ntpsnmpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in b/contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in index d655b1b..1441db3 100644 --- a/contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in +++ b/contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPSNMPD @NTPSNMPD_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpsnmpd-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:18 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:24 AM by AutoGen 5.18.5 .\" From the definitions ntpsnmpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/packageinfo.sh b/contrib/ntp/packageinfo.sh index f5916b0..6d6fb9a 100644 --- a/contrib/ntp/packageinfo.sh +++ b/contrib/ntp/packageinfo.sh @@ -83,7 +83,7 @@ CLTAG=NTP_4_2_0 # - Numeric values increment # - empty 'increments' to 1 # - NEW 'increments' to empty -point=8 +point=9 ### betapoint is normally modified by script. # ntp-stable Beta number (betapoint) diff --git a/contrib/ntp/scripts/build/genAuthors.in b/contrib/ntp/scripts/build/genAuthors.in index f0e49c5..a5a15e12 100644 --- a/contrib/ntp/scripts/build/genAuthors.in +++ b/contrib/ntp/scripts/build/genAuthors.in @@ -34,21 +34,23 @@ use warnings; my $bk_u = "bk changes -and:USER: | sort -u |"; chomp(my $bk_root = `bk root`); -my $A_path = "$bk_root/BitKeeper/etc/authors.txt"; +my $A_dir = "$bk_root/BitKeeper/etc/Authors"; +my $A_file = "$bk_root/BitKeeper/etc/authors.txt"; my %authors; my $problem = 0; -die "bkroot: <$bk_root>, A_path: <$A_path>\n" if (! -r $A_path); +die "bkroot: <$bk_root>, A_dir: <$A_dir>\n" if (! -r $A_dir); +die "bkroot: <$bk_root>, A_file: <$A_file>\n" if (! -r $A_file); # Process the authors.txt file -open(my $FILE, '<', $A_path) or die "Could not open <$A_path>: $!\n"; +open(my $FILE, '<', $A_file) or die "Could not open <$A_file>: $!\n"; while (<$FILE>) { chomp; if (/^([\S]+) = ([\V]+) <([\w.-]+\@[\w.-]+)>$/) { # print "Got '$1 = $2 <$3>'\n"; $authors{$1} = ""; } else { - print "In $A_path: unrecognized line: '$_'\n"; + print "In $A_file: unrecognized line: '$_'\n"; $problem = 1; } } @@ -69,7 +71,7 @@ while (<BKU>) { if (!defined($authors{$Name})) { $problem = 1; print "<$Name> is not a defined author!\n"; - open(my $FILE, '>>', "$A_path/$name.txt") || die "Cannot create '$A_path/$name.txt': $!\n"; + open(my $FILE, '>>', "$A_dir/$name.txt") || die "Cannot create '$A_dir/$name.txt': $!\n"; print $FILE "$Name = \n"; close($FILE); } diff --git a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman index c52f3f2..d117625 100644 --- a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman +++ b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH calc_tickadj 1calc_tickadjman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH calc_tickadj 1calc_tickadjman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-3laW2J/ag-ema41J) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OyayV3/ag-1yaGU3) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:25 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:34 AM by AutoGen 5.18.5 .\" From the definitions calc_tickadj-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc index df3de6d..a77617b 100644 --- a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc +++ b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt CALC_TICKADJ 1calc_tickadjmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (calc_tickadj-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:27 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:36 AM by AutoGen 5.18.5 .\" From the definitions calc_tickadj-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.html b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.html index d27d634..43fd5ce 100644 --- a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.html +++ b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.html @@ -31,7 +31,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <h2 class="unnumbered">calc_tickadj User's Manual</h2> <p>This document describes the use of the NTP Project's <code>calc_tickadj</code> program. -This document applies to version 4.2.8p8 of <code>calc_tickadj</code>. +This document applies to version 4.2.8p9 of <code>calc_tickadj</code>. <div class="shortcontents"> <h2>Short Contents</h2> diff --git a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in index c52f3f2..d117625 100644 --- a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in +++ b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH calc_tickadj 1calc_tickadjman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH calc_tickadj 1calc_tickadjman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-3laW2J/ag-ema41J) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OyayV3/ag-1yaGU3) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:25 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:34 AM by AutoGen 5.18.5 .\" From the definitions calc_tickadj-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in index df3de6d..a77617b 100644 --- a/contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in +++ b/contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt CALC_TICKADJ 1calc_tickadjmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (calc_tickadj-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:27 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:36 AM by AutoGen 5.18.5 .\" From the definitions calc_tickadj-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi b/contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi index 3f5e897..88f3647 100644 --- a/contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi +++ b/contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-calc_tickadj.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:24:29 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:38 AM by AutoGen 5.18.5 # From the definitions calc_tickadj-opts.def # and the template file agtexi-cmd.tpl @end ignore diff --git a/contrib/ntp/scripts/invoke-plot_summary.texi b/contrib/ntp/scripts/invoke-plot_summary.texi index bfa8a8e..2d84f09 100644 --- a/contrib/ntp/scripts/invoke-plot_summary.texi +++ b/contrib/ntp/scripts/invoke-plot_summary.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-plot_summary.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:25:50 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:26 AM by AutoGen 5.18.5 # From the definitions plot_summary-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -41,7 +41,7 @@ with a status code of 0. @exampleindent 0 @example -plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8 +plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9 USAGE: plot_summary [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... --directory=str Where the summary files are diff --git a/contrib/ntp/scripts/invoke-summary.texi b/contrib/ntp/scripts/invoke-summary.texi index 43d74b0..d42ff7f 100644 --- a/contrib/ntp/scripts/invoke-summary.texi +++ b/contrib/ntp/scripts/invoke-summary.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-summary.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:25:58 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:32 AM by AutoGen 5.18.5 # From the definitions summary-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -42,7 +42,7 @@ with a status code of 0. @exampleindent 0 @example -summary - compute various stastics from NTP stat files - Ver. 4.2.8p8 +summary - compute various stastics from NTP stat files - Ver. 4.2.8p9 USAGE: summary [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... --directory=str Directory containing stat files diff --git a/contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi b/contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi index 3387634..de74646 100644 --- a/contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi +++ b/contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp-wait.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:24:39 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:47 AM by AutoGen 5.18.5 # From the definitions ntp-wait-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -61,7 +61,7 @@ with a status code of 0. @exampleindent 0 @example -ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8 +ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9 USAGE: ntp-wait [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... -n, --tries=num Number of times to check ntpd diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait-opts b/contrib/ntp/scripts/ntp-wait/ntp-wait-opts index e199079..2c12c67 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait-opts +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (ntp-wait-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:24:33 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:41 AM by AutoGen 5.18.5 # From the definitions ntp-wait-opts.def # and the template file perlopt @@ -40,7 +40,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8 +ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9 USAGE: ntp-wait [ -<flag> [<val>] | --<name>[{=| }<val>] ]... -n, --tries=num Number of times to check ntpd diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman b/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman index c3b1c138..dab0f37 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp-wait 1ntp-waitman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntp-wait 1ntp-waitman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IZaWqL/ag-WZa4pL) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oRayj5/ag-CRaGi5) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:36 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:43 AM by AutoGen 5.18.5 .\" From the definitions ntp-wait-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc b/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc index 4f1cfde..782c918 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_WAIT 1ntp-waitmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntp-wait-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:44 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:50 AM by AutoGen 5.18.5 .\" From the definitions ntp-wait-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait.html b/contrib/ntp/scripts/ntp-wait/ntp-wait.html index 2b790d5..8a974c4 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait.html +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait.html @@ -39,7 +39,7 @@ until the system's time has stabilized and synchronized, and only then start any applicaitons (like database servers) that require accurate and stable time. - <p>This document applies to version 4.2.8p8 of <code>ntp-wait</code>. + <p>This document applies to version 4.2.8p9 of <code>ntp-wait</code>. <div class="shortcontents"> <h2>Short Contents</h2> @@ -114,7 +114,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8 +<pre class="example">ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9 USAGE: ntp-wait [ -<flag> [<val>] | --<name>[{=| }<val>] ]... -n, --tries=num Number of times to check ntpd diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait.man.in b/contrib/ntp/scripts/ntp-wait/ntp-wait.man.in index 2775a88..bc50685 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait.man.in +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp-wait @NTP_WAIT_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntp-wait @NTP_WAIT_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IZaWqL/ag-WZa4pL) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oRayj5/ag-CRaGi5) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:36 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:43 AM by AutoGen 5.18.5 .\" From the definitions ntp-wait-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in b/contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in index 9dc96d1..8f6437b 100644 --- a/contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in +++ b/contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_WAIT @NTP_WAIT_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntp-wait-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:44 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:50 AM by AutoGen 5.18.5 .\" From the definitions ntp-wait-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi b/contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi index a8d498e..bf9592d 100644 --- a/contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi +++ b/contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpsweep.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:24:48 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:54 AM by AutoGen 5.18.5 # From the definitions ntpsweep-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -45,7 +45,7 @@ with a status code of 0. @exampleindent 0 @example -ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8 +ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9 USAGE: ntpsweep [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [hostfile] -l, --host-list=str Host to execute actions on diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep-opts b/contrib/ntp/scripts/ntpsweep/ntpsweep-opts index abb519d..58ed769 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep-opts +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (ntpsweep-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:24:46 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:51 AM by AutoGen 5.18.5 # From the definitions ntpsweep-opts.def # and the template file perlopt @@ -43,7 +43,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8 +ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9 USAGE: ntpsweep [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [hostfile] -l, --host-list=str Host to execute actions on diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman b/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman index 3cb11a3..5b98754 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpsweep 1ntpsweepman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntpsweep 1ntpsweepman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KKaWSM/ag-XKa4RM) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pTaqL6/ag-CTayK6) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:51 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:56 AM by AutoGen 5.18.5 .\" From the definitions ntpsweep-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc b/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc index d6de8dd..86df086 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPSWEEP 1ntpsweepmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpsweep-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:55 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:59 AM by AutoGen 5.18.5 .\" From the definitions ntpsweep-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep.html b/contrib/ntp/scripts/ntpsweep/ntpsweep.html index 1226459..8f09545 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep.html +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep.html @@ -30,7 +30,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <p>This document describes the use of the NTP Project's <code>ntpsweep</code> program. - <p>This document applies to version 4.2.8p8 of <code>ntpsweep</code>. + <p>This document applies to version 4.2.8p9 of <code>ntpsweep</code>. <div class="shortcontents"> <h2>Short Contents</h2> @@ -90,7 +90,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8 +<pre class="example">ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9 USAGE: ntpsweep [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [hostfile] -l, --host-list=str Host to execute actions on diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep.man.in b/contrib/ntp/scripts/ntpsweep/ntpsweep.man.in index 3cb11a3..5b98754 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep.man.in +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpsweep 1ntpsweepman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntpsweep 1ntpsweepman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KKaWSM/ag-XKa4RM) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pTaqL6/ag-CTayK6) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:51 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:56 AM by AutoGen 5.18.5 .\" From the definitions ntpsweep-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in b/contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in index d6de8dd..86df086 100644 --- a/contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in +++ b/contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPSWEEP 1ntpsweepmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpsweep-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:55 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:59 AM by AutoGen 5.18.5 .\" From the definitions ntpsweep-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi b/contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi index e7c2a2c..27a9a84 100644 --- a/contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi +++ b/contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntptrace.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:25:03 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:07 AM by AutoGen 5.18.5 # From the definitions ntptrace-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -62,7 +62,7 @@ with a status code of 0. @exampleindent 0 @example -ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8 +ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9 USAGE: ntptrace [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [host] -n, --numeric Print IP addresses instead of hostnames diff --git a/contrib/ntp/scripts/ntptrace/ntptrace-opts b/contrib/ntp/scripts/ntptrace/ntptrace-opts index 7cc0719..1b13de5 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace-opts +++ b/contrib/ntp/scripts/ntptrace/ntptrace-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (ntptrace-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:24:57 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:01 AM by AutoGen 5.18.5 # From the definitions ntptrace-opts.def # and the template file perlopt @@ -40,7 +40,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8 +ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9 USAGE: ntptrace [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [host] -n, --numeric Print IP addresses instead of hostnames diff --git a/contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman b/contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman index 964037d..42e9758 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman +++ b/contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntptrace 1ntptraceman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntptrace 1ntptraceman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-GMa4.N/ag-VMaa.N) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TDaOwb/ag-6DaWvb) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:59 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:03 AM by AutoGen 5.18.5 .\" From the definitions ntptrace-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc b/contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc index 5c33659..2bf7d66 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc +++ b/contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPTRACE 1ntptracemdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntptrace-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:05 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:08 AM by AutoGen 5.18.5 .\" From the definitions ntptrace-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/ntptrace/ntptrace.html b/contrib/ntp/scripts/ntptrace/ntptrace.html index 8b2be15..54215f7 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace.html +++ b/contrib/ntp/scripts/ntptrace/ntptrace.html @@ -31,7 +31,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <h2 class="unnumbered">Simple Network Time Protocol User Manual</h2> <p>This document describes the use of the NTP Project's <code>ntptrace</code> program. -This document applies to version 4.2.8p8 of <code>ntptrace</code>. +This document applies to version 4.2.8p9 of <code>ntptrace</code>. <div class="shortcontents"> <h2>Short Contents</h2> @@ -107,7 +107,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8 +<pre class="example">ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9 USAGE: ntptrace [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [host] -n, --numeric Print IP addresses instead of hostnames diff --git a/contrib/ntp/scripts/ntptrace/ntptrace.man.in b/contrib/ntp/scripts/ntptrace/ntptrace.man.in index a4aed35..5f1f2ac 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace.man.in +++ b/contrib/ntp/scripts/ntptrace/ntptrace.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntptrace @NTPTRACE_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntptrace @NTPTRACE_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-GMa4.N/ag-VMaa.N) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TDaOwb/ag-6DaWvb) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:24:59 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:03 AM by AutoGen 5.18.5 .\" From the definitions ntptrace-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in b/contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in index 8002291..4c6ed35 100644 --- a/contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in +++ b/contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTPTRACE @NTPTRACE_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntptrace-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:05 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:08 AM by AutoGen 5.18.5 .\" From the definitions ntptrace-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/plot_summary-opts b/contrib/ntp/scripts/plot_summary-opts index 27d1712..f50825a 100644 --- a/contrib/ntp/scripts/plot_summary-opts +++ b/contrib/ntp/scripts/plot_summary-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (plot_summary-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:25:41 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:22 AM by AutoGen 5.18.5 # From the definitions plot_summary-opts.def # and the template file perlopt @@ -46,7 +46,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8 +plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9 USAGE: plot_summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... --directory=str Where the summary files are diff --git a/contrib/ntp/scripts/plot_summary.1plot_summaryman b/contrib/ntp/scripts/plot_summary.1plot_summaryman index 1decf33..ffcc0c4 100644 --- a/contrib/ntp/scripts/plot_summary.1plot_summaryman +++ b/contrib/ntp/scripts/plot_summary.1plot_summaryman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH plot_summary 1plot_summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH plot_summary 1plot_summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-4QaG0Q/ag-hRaOZQ) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-BQayqe/ag-OQaGpe) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:53 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:28 AM by AutoGen 5.18.5 .\" From the definitions plot_summary-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/plot_summary.1plot_summarymdoc b/contrib/ntp/scripts/plot_summary.1plot_summarymdoc index 3d6828a..6d131d7 100644 --- a/contrib/ntp/scripts/plot_summary.1plot_summarymdoc +++ b/contrib/ntp/scripts/plot_summary.1plot_summarymdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt PLOT_SUMMARY 1plot_summarymdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (plot_summary-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:55 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:30 AM by AutoGen 5.18.5 .\" From the definitions plot_summary-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/plot_summary.html b/contrib/ntp/scripts/plot_summary.html index 9feede6..a4bb074 100644 --- a/contrib/ntp/scripts/plot_summary.html +++ b/contrib/ntp/scripts/plot_summary.html @@ -31,7 +31,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <h2 class="unnumbered">Plot_summary User Manual</h2> <p>This document describes the use of the NTP Project's <code>plot_summary</code> program. -This document applies to version 4.2.8p8 of <code>plot_summary</code>. +This document applies to version 4.2.8p9 of <code>plot_summary</code>. <div class="shortcontents"> <h2>Short Contents</h2> @@ -89,7 +89,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8 +<pre class="example">plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9 USAGE: plot_summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... --directory=str Where the summary files are diff --git a/contrib/ntp/scripts/plot_summary.man.in b/contrib/ntp/scripts/plot_summary.man.in index 1decf33..ffcc0c4 100644 --- a/contrib/ntp/scripts/plot_summary.man.in +++ b/contrib/ntp/scripts/plot_summary.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH plot_summary 1plot_summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH plot_summary 1plot_summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-4QaG0Q/ag-hRaOZQ) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-BQayqe/ag-OQaGpe) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:53 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:28 AM by AutoGen 5.18.5 .\" From the definitions plot_summary-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/plot_summary.mdoc.in b/contrib/ntp/scripts/plot_summary.mdoc.in index 3d6828a..6d131d7 100644 --- a/contrib/ntp/scripts/plot_summary.mdoc.in +++ b/contrib/ntp/scripts/plot_summary.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt PLOT_SUMMARY 1plot_summarymdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (plot_summary-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:55 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:30 AM by AutoGen 5.18.5 .\" From the definitions plot_summary-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/summary-opts b/contrib/ntp/scripts/summary-opts index c5da364..0c02798 100644 --- a/contrib/ntp/scripts/summary-opts +++ b/contrib/ntp/scripts/summary-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (summary-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:25:48 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:24 AM by AutoGen 5.18.5 # From the definitions summary-opts.def # and the template file perlopt @@ -44,7 +44,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -summary - compute various stastics from NTP stat files - Ver. 4.2.8p8 +summary - compute various stastics from NTP stat files - Ver. 4.2.8p9 USAGE: summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... --directory=str Directory containing stat files diff --git a/contrib/ntp/scripts/summary.1summaryman b/contrib/ntp/scripts/summary.1summaryman index b99aa5c..00c4ea3 100644 --- a/contrib/ntp/scripts/summary.1summaryman +++ b/contrib/ntp/scripts/summary.1summaryman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH summary 1summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH summary 1summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OuaicR/ag-3uaqbR) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-SaaaEe/ag-5aaiDe) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:26:00 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:34 AM by AutoGen 5.18.5 .\" From the definitions summary-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/summary.1summarymdoc b/contrib/ntp/scripts/summary.1summarymdoc index b10309a..939f651 100644 --- a/contrib/ntp/scripts/summary.1summarymdoc +++ b/contrib/ntp/scripts/summary.1summarymdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt SUMMARY 1summarymdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (summary-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:26:02 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:36 AM by AutoGen 5.18.5 .\" From the definitions summary-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/summary.html b/contrib/ntp/scripts/summary.html index dedac73..7b37b21 100644 --- a/contrib/ntp/scripts/summary.html +++ b/contrib/ntp/scripts/summary.html @@ -31,7 +31,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <h2 class="unnumbered">Summary User Manual</h2> <p>This document describes the use of the NTP Project's <code>summary</code> program. -This document applies to version 4.2.8p8 of <code>summary</code>. +This document applies to version 4.2.8p9 of <code>summary</code>. <div class="shortcontents"> <h2>Short Contents</h2> @@ -88,7 +88,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">summary - compute various stastics from NTP stat files - Ver. 4.2.8p8 +<pre class="example">summary - compute various stastics from NTP stat files - Ver. 4.2.8p9 USAGE: summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... --directory=str Directory containing stat files diff --git a/contrib/ntp/scripts/summary.man.in b/contrib/ntp/scripts/summary.man.in index b99aa5c..00c4ea3 100644 --- a/contrib/ntp/scripts/summary.man.in +++ b/contrib/ntp/scripts/summary.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH summary 1summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH summary 1summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OuaicR/ag-3uaqbR) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-SaaaEe/ag-5aaiDe) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:26:00 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:34 AM by AutoGen 5.18.5 .\" From the definitions summary-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/summary.mdoc.in b/contrib/ntp/scripts/summary.mdoc.in index b10309a..939f651 100644 --- a/contrib/ntp/scripts/summary.mdoc.in +++ b/contrib/ntp/scripts/summary.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt SUMMARY 1summarymdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (summary-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:26:02 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:36 AM by AutoGen 5.18.5 .\" From the definitions summary-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/update-leap/invoke-update-leap.texi b/contrib/ntp/scripts/update-leap/invoke-update-leap.texi index 3e538f0..23de3d8 100644 --- a/contrib/ntp/scripts/update-leap/invoke-update-leap.texi +++ b/contrib/ntp/scripts/update-leap/invoke-update-leap.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-update-leap.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:25:12 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:14 AM by AutoGen 5.18.5 # From the definitions update-leap-opts.def # and the template file agtexi-cmd.tpl @end ignore diff --git a/contrib/ntp/scripts/update-leap/update-leap-opts b/contrib/ntp/scripts/update-leap/update-leap-opts index 2f32d66..893f3b6 100644 --- a/contrib/ntp/scripts/update-leap/update-leap-opts +++ b/contrib/ntp/scripts/update-leap/update-leap-opts @@ -1,6 +1,6 @@ # EDIT THIS FILE WITH CAUTION (update-leap-opts) # -# It has been AutoGen-ed June 2, 2016 at 07:25:39 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:59:22 AM by AutoGen 5.18.5 # From the definitions update-leap-opts.def # and the template file perlopt @@ -46,7 +46,7 @@ sub processOptions { 'help|?', 'more-help')); $usage = <<'USAGE'; -update-leap - leap-seconds file manager/updater - Ver. 4.2.8p8 +update-leap - leap-seconds file manager/updater - Ver. 4.2.8p9 USAGE: update-leap [ -<flag> [<val>] | --<name>[{=| }<val>] ]... -s, --source-url=str The URL of the master copy of the leapseconds file diff --git a/contrib/ntp/scripts/update-leap/update-leap.1update-leapman b/contrib/ntp/scripts/update-leap/update-leap.1update-leapman index d105806..92d83f2 100644 --- a/contrib/ntp/scripts/update-leap/update-leap.1update-leapman +++ b/contrib/ntp/scripts/update-leap/update-leap.1update-leapman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH update-leap 1update-leapman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH update-leap 1update-leapman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-qJaG0O/ag-DJaOZO) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Oraiqc/ag-1raqpc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:07 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:10 AM by AutoGen 5.18.5 .\" From the definitions update-leap-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc b/contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc index 2e9c479..e1652ff 100644 --- a/contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc +++ b/contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt UPDATE_LEAP 1update-leapmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (update-leap-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:37 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:20 AM by AutoGen 5.18.5 .\" From the definitions update-leap-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/scripts/update-leap/update-leap.html b/contrib/ntp/scripts/update-leap/update-leap.html index e2e4ad3..69fe61a 100644 --- a/contrib/ntp/scripts/update-leap/update-leap.html +++ b/contrib/ntp/scripts/update-leap/update-leap.html @@ -30,7 +30,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> <p>This document describes the use of the NTP Project's <code>update-leap</code> program. - <p>This document applies to version 4.2.8p8 of <code>update-leap</code>. + <p>This document applies to version 4.2.8p9 of <code>update-leap</code>. <div class="shortcontents"> <h2>Short Contents</h2> diff --git a/contrib/ntp/scripts/update-leap/update-leap.in b/contrib/ntp/scripts/update-leap/update-leap.in index a22b50a..bd7ed18 100755 --- a/contrib/ntp/scripts/update-leap/update-leap.in +++ b/contrib/ntp/scripts/update-leap/update-leap.in @@ -34,7 +34,10 @@ my $QUIET = ""; my $VERBOSE = ""; # Where to get the file -my $LEAPSRC="ftp://time.nist.gov/pub/leap-seconds.list"; +# Choices: +# https://www.ietf.org/timezones/data/leap-seconds.list +# ftp://time.nist.gov/pub/leap-seconds.list +my $LEAPSRC="https://www.ietf.org/timezones/data/leap-seconds.list"; my $LEAPFILE; # How many times to try to download new file @@ -300,7 +303,7 @@ sub verifySHA { open(LF, $NTPCONF) || die "Can't open <$NTPCONF>: $!\n"; while (<LF>) { chomp; - if (/^ *leapfile\s+(\S+)/) { + if (/^ *leapfile\s+"(\S+)"/) { $LEAPFILE = $1; } } diff --git a/contrib/ntp/scripts/update-leap/update-leap.man.in b/contrib/ntp/scripts/update-leap/update-leap.man.in index d105806..92d83f2 100644 --- a/contrib/ntp/scripts/update-leap/update-leap.man.in +++ b/contrib/ntp/scripts/update-leap/update-leap.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH update-leap 1update-leapman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH update-leap 1update-leapman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-qJaG0O/ag-DJaOZO) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Oraiqc/ag-1raqpc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:07 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:10 AM by AutoGen 5.18.5 .\" From the definitions update-leap-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/scripts/update-leap/update-leap.mdoc.in b/contrib/ntp/scripts/update-leap/update-leap.mdoc.in index 2e9c479..e1652ff 100644 --- a/contrib/ntp/scripts/update-leap/update-leap.mdoc.in +++ b/contrib/ntp/scripts/update-leap/update-leap.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt UPDATE_LEAP 1update-leapmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (update-leap-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:25:37 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:59:20 AM by AutoGen 5.18.5 .\" From the definitions update-leap-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/sntp/configure b/contrib/ntp/sntp/configure index db89397..45431df 100755 --- a/contrib/ntp/sntp/configure +++ b/contrib/ntp/sntp/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for sntp 4.2.8p8. +# Generated by GNU Autoconf 2.69 for sntp 4.2.8p9. # # Report bugs to <http://bugs.ntp.org./>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sntp' PACKAGE_TARNAME='sntp' -PACKAGE_VERSION='4.2.8p8' -PACKAGE_STRING='sntp 4.2.8p8' +PACKAGE_VERSION='4.2.8p9' +PACKAGE_STRING='sntp 4.2.8p9' PACKAGE_BUGREPORT='http://bugs.ntp.org./' PACKAGE_URL='http://www.ntp.org./' @@ -1496,7 +1496,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sntp 4.2.8p8 to adapt to many kinds of systems. +\`configure' configures sntp 4.2.8p9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1566,7 +1566,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sntp 4.2.8p8:";; + short | recursive ) echo "Configuration of sntp 4.2.8p9:";; esac cat <<\_ACEOF @@ -1712,7 +1712,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sntp configure 4.2.8p8 +sntp configure 4.2.8p9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2542,7 +2542,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sntp $as_me 4.2.8p8, which was +It was created by sntp $as_me 4.2.8p9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3539,7 +3539,7 @@ fi # Define the identity of the package. PACKAGE='sntp' - VERSION='4.2.8p8' + VERSION='4.2.8p9' cat >>confdefs.h <<_ACEOF @@ -31184,7 +31184,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sntp $as_me 4.2.8p8, which was +This file was extended by sntp $as_me 4.2.8p9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -31251,7 +31251,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sntp config.status 4.2.8p8 +sntp config.status 4.2.8p9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/contrib/ntp/sntp/crypto.c b/contrib/ntp/sntp/crypto.c index a534239..7b4e638 100644 --- a/contrib/ntp/sntp/crypto.c +++ b/contrib/ntp/sntp/crypto.c @@ -2,6 +2,7 @@ #include "crypto.h" #include <ctype.h> #include "isc/string.h" +#include "libssl_compat.h" struct key *key_ptr; size_t key_cnt = 0; @@ -17,7 +18,7 @@ make_mac( { u_int len = mac_size; int key_type; - EVP_MD_CTX ctx; + EVP_MD_CTX * ctx; if (cmp_key->key_len > 64) return 0; @@ -26,11 +27,14 @@ make_mac( INIT_SSL(); key_type = keytype_from_text(cmp_key->type, NULL); - EVP_DigestInit(&ctx, EVP_get_digestbynid(key_type)); - EVP_DigestUpdate(&ctx, (const u_char *)cmp_key->key_seq, (u_int)cmp_key->key_len); - EVP_DigestUpdate(&ctx, pkt_data, (u_int)pkt_size); - EVP_DigestFinal(&ctx, digest, &len); - + + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbynid(key_type)); + EVP_DigestUpdate(ctx, (const u_char *)cmp_key->key_seq, (u_int)cmp_key->key_len); + EVP_DigestUpdate(ctx, pkt_data, (u_int)pkt_size); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); + return (int)len; } @@ -64,7 +68,7 @@ auth_md5( * with. sntp is a 1-shot program, so snooping for * timing attacks is Harder. */ - authentic = !memcmp(digest, pkt_data + pkt_size + 4, + authentic = !memcmp(digest, (const char*)pkt_data + pkt_size + 4, hash_len); } return authentic; diff --git a/contrib/ntp/sntp/include/version.def b/contrib/ntp/sntp/include/version.def index add303d..6886dc2 100644 --- a/contrib/ntp/sntp/include/version.def +++ b/contrib/ntp/sntp/include/version.def @@ -1 +1 @@ -version = '4.2.8p8'; +version = '4.2.8p9'; diff --git a/contrib/ntp/sntp/include/version.texi b/contrib/ntp/sntp/include/version.texi index 9f303b2..7099eb8 100644 --- a/contrib/ntp/sntp/include/version.texi +++ b/contrib/ntp/sntp/include/version.texi @@ -1,3 +1,3 @@ -@set UPDATED 02 June 2016 -@set EDITION 4.2.8p8 -@set VERSION 4.2.8p8 +@set UPDATED 21 November 2016 +@set EDITION 4.2.8p9 +@set VERSION 4.2.8p9 diff --git a/contrib/ntp/sntp/invoke-sntp.texi b/contrib/ntp/sntp/invoke-sntp.texi index 256ff86..4879df3 100644 --- a/contrib/ntp/sntp/invoke-sntp.texi +++ b/contrib/ntp/sntp/invoke-sntp.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-sntp.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:19:58 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 07:58:29 AM by AutoGen 5.18.5 # From the definitions sntp-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -101,7 +101,7 @@ with a status code of 0. @exampleindent 0 @example -sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8 +sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9 Usage: sntp [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \ [ hostname-or-IP ...] Flg Arg Option-Name Description diff --git a/contrib/ntp/sntp/m4/version.m4 b/contrib/ntp/sntp/m4/version.m4 index 3529730..8366527 100644 --- a/contrib/ntp/sntp/m4/version.m4 +++ b/contrib/ntp/sntp/m4/version.m4 @@ -1 +1 @@ -m4_define([VERSION_NUMBER],[4.2.8p8]) +m4_define([VERSION_NUMBER],[4.2.8p9]) diff --git a/contrib/ntp/sntp/sntp-opts.c b/contrib/ntp/sntp/sntp-opts.c index e469d3e..014b964 100644 --- a/contrib/ntp/sntp/sntp-opts.c +++ b/contrib/ntp/sntp/sntp-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (sntp-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:18:42 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 07:38:40 AM by AutoGen 5.18.5 * From the definitions sntp-opts.def * and the template file options * @@ -70,7 +70,7 @@ extern FILE * option_usage_fp; * static const strings for sntp options */ static char const sntp_opt_strs[2549] = -/* 0 */ "sntp 4.2.8p8\n" +/* 0 */ "sntp 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -155,7 +155,7 @@ static char const sntp_opt_strs[2549] = /* 2298 */ "LOAD_OPTS\0" /* 2308 */ "no-load-opts\0" /* 2321 */ "SNTP\0" -/* 2326 */ "sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8\n" +/* 2326 */ "sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n" "\t\t[ hostname-or-IP ...]\n\0" /* 2485 */ "$HOME\0" @@ -163,7 +163,7 @@ static char const sntp_opt_strs[2549] = /* 2493 */ ".ntprc\0" /* 2500 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 2534 */ "\n\0" -/* 2536 */ "sntp 4.2.8p8"; +/* 2536 */ "sntp 4.2.8p9"; /** * ipv4 option description with @@ -1173,7 +1173,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via sntpOptions.pzCopyright */ - puts(_("sntp 4.2.8p8\n\ + puts(_("sntp 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -1263,7 +1263,7 @@ implied warranty.\n")); puts(_("load options from a config file")); /* referenced via sntpOptions.pzUsageTitle */ - puts(_("sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8\n\ + puts(_("sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\ \t\t[ hostname-or-IP ...]\n")); @@ -1271,7 +1271,7 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\ puts(_("\n")); /* referenced via sntpOptions.pzFullVersion */ - puts(_("sntp 4.2.8p8")); + puts(_("sntp 4.2.8p9")); /* referenced via sntpOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/sntp/sntp-opts.h b/contrib/ntp/sntp/sntp-opts.h index 9136f28..09aea49 100644 --- a/contrib/ntp/sntp/sntp-opts.h +++ b/contrib/ntp/sntp/sntp-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (sntp-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:18:40 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 07:38:39 AM by AutoGen 5.18.5 * From the definitions sntp-opts.def * and the template file options * @@ -91,9 +91,9 @@ typedef enum { /** count of all options for sntp */ #define OPTION_CT 23 /** sntp version */ -#define SNTP_VERSION "4.2.8p8" +#define SNTP_VERSION "4.2.8p9" /** Full sntp version text */ -#define SNTP_FULL_VERSION "sntp 4.2.8p8" +#define SNTP_FULL_VERSION "sntp 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/sntp/sntp.1sntpman b/contrib/ntp/sntp/sntp.1sntpman index 6921dd3..775b10e 100644 --- a/contrib/ntp/sntp/sntp.1sntpman +++ b/contrib/ntp/sntp/sntp.1sntpman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH sntp 1sntpman "02 Jun 2016" "4.2.8p8" "User Commands" +.TH sntp 1sntpman "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-5CayKq/ag-fDaqJq) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Mfai12/ag-0faa02) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:19:39 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:25 AM by AutoGen 5.18.5 .\" From the definitions sntp-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/sntp/sntp.1sntpmdoc b/contrib/ntp/sntp/sntp.1sntpmdoc index 8025d49..f4b1f6f 100644 --- a/contrib/ntp/sntp/sntp.1sntpmdoc +++ b/contrib/ntp/sntp/sntp.1sntpmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt SNTP 1sntpmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (sntp-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:20:03 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:32 AM by AutoGen 5.18.5 .\" From the definitions sntp-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -211,7 +211,7 @@ of seconds specified before giving up. The default should be more than enough for a unicast response. If \fBsntp\fP is only waiting for a broadcast response a longer timeout is likely needed. -.It Fl \-wait , " Fl \-no\-wait" +.It Fl \-wait , Fl \-no\-wait Wait for pending replies (if not setting the time). The \fIno\-wait\fP form will disable the option. This option is enabled by default. diff --git a/contrib/ntp/sntp/sntp.html b/contrib/ntp/sntp/sntp.html index 46bad27..212cc50 100644 --- a/contrib/ntp/sntp/sntp.html +++ b/contrib/ntp/sntp/sntp.html @@ -36,7 +36,7 @@ display the time offset of the system clock relative to the server clock. Run as root, it can correct the system clock to this offset as well. It can be run as an interactive command or from a cron job. - <p>This document applies to version 4.2.8p8 of <code>sntp</code>. + <p>This document applies to version 4.2.8p9 of <code>sntp</code>. <p>The program implements the SNTP protocol as defined by RFC 5905, the NTPv4 IETF specification. @@ -176,7 +176,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8 +<pre class="example">sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9 Usage: sntp [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \ [ hostname-or-IP ...] Flg Arg Option-Name Description diff --git a/contrib/ntp/sntp/sntp.man.in b/contrib/ntp/sntp/sntp.man.in index 899c49a..6fee92a 100644 --- a/contrib/ntp/sntp/sntp.man.in +++ b/contrib/ntp/sntp/sntp.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH sntp @SNTP_MS@ "02 Jun 2016" "4.2.8p8" "User Commands" +.TH sntp @SNTP_MS@ "21 Nov 2016" "4.2.8p9" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-5CayKq/ag-fDaqJq) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Mfai12/ag-0faa02) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:19:39 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:25 AM by AutoGen 5.18.5 .\" From the definitions sntp-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/sntp/sntp.mdoc.in b/contrib/ntp/sntp/sntp.mdoc.in index 71dd224..19a20ca 100644 --- a/contrib/ntp/sntp/sntp.mdoc.in +++ b/contrib/ntp/sntp/sntp.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt SNTP @SNTP_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (sntp-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:20:03 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 07:58:32 AM by AutoGen 5.18.5 .\" From the definitions sntp-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/sntp/tests/packetProcessing.c b/contrib/ntp/sntp/tests/packetProcessing.c index 88e61cc..660b5b6 100644 --- a/contrib/ntp/sntp/tests/packetProcessing.c +++ b/contrib/ntp/sntp/tests/packetProcessing.c @@ -1,10 +1,5 @@ #include "config.h" -/* need autokey for some of the tests, or the will create buffer overruns. */ -#ifndef AUTOKEY -# define AUTOKEY 1 -#endif - #include "sntptest.h" #include "networking.h" #include "ntp_stdlib.h" @@ -13,7 +8,7 @@ const char * Version = "stub unit test Version string"; -// Hacks into the key database. +/* Hacks into the key database. */ extern struct key* key_ptr; extern int key_cnt; @@ -41,9 +36,25 @@ void test_CorrectUnauthenticatedPacket(void); void test_CorrectAuthenticatedPacketMD5(void); void test_CorrectAuthenticatedPacketSHA1(void); +/* [Bug 2998] There are some issues whith the definition of 'struct pkt' + * when AUTOKEY is undefined -- the formal struct is too small to hold + * all the extension fields that are going to be tested. We have to make + * sure we have the extra bytes, or the test yield undefined results due + * to buffer overrun. + */ +#ifndef AUTOKEY +# define EXTRA_BUFSIZE 256 +#else +# define EXTRA_BUFSIZE 0 +#endif + +union tpkt { + struct pkt p; + u_char b[sizeof(struct pkt) + EXTRA_BUFSIZE]; +}; -static struct pkt testpkt; -static struct pkt testspkt; +static union tpkt testpkt; +static union tpkt testspkt; static sockaddr_u testsock; bool restoreKeyDb; @@ -95,10 +106,10 @@ setUp(void) /* Initialize the test packet and socket, * so they contain at least some valid data. */ - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, NTP_VERSION, + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, NTP_VERSION, MODE_SERVER); - testpkt.stratum = STRATUM_REFCLOCK; - memcpy(&testpkt.refid, "GPS\0", 4); + testpkt.p.stratum = STRATUM_REFCLOCK; + memcpy(&testpkt.p.refid, "GPS\0", 4); /* Set the origin timestamp of the received packet to the * same value as the transmit timestamp of the sent packet. @@ -107,8 +118,8 @@ setUp(void) tmp.l_ui = 1000UL; tmp.l_uf = 0UL; - HTONL_FP(&tmp, &testpkt.org); - HTONL_FP(&tmp, &testspkt.xmt); + HTONL_FP(&tmp, &testpkt.p.org); + HTONL_FP(&tmp, &testspkt.p.xmt); } @@ -129,11 +140,11 @@ void test_TooShortLength(void) { TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC - 1, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC - 1, + MODE_SERVER, &testspkt.p, "UnitTest")); TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC - 1, - MODE_BROADCAST, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC - 1, + MODE_BROADCAST, &testspkt.p, "UnitTest")); } @@ -141,22 +152,29 @@ void test_LengthNotMultipleOfFour(void) { TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC + 6, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC + 6, + MODE_SERVER, &testspkt.p, "UnitTest")); TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC + 3, - MODE_BROADCAST, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC + 3, + MODE_BROADCAST, &testspkt.p, "UnitTest")); } void test_TooShortExtensionFieldLength(void) { + /* [Bug 2998] We have to get around the formal specification of + * the extension field if AUTOKEY is undefined. (At least CLANG + * issues a warning in this case. It's just a warning, but + * still... + */ + uint32_t * pe = testpkt.p.exten + 7; + /* The lower 16-bits are the length of the extension field. * This lengths must be multiples of 4 bytes, which gives * a minimum of 4 byte extension field length. */ - testpkt.exten[7] = htonl(3); /* 3 bytes is too short. */ + *pe = htonl(3); /* 3 bytes is too short. */ /* We send in a pkt_len of header size + 4 byte extension * header + 24 byte MAC, this prevents the length error to @@ -165,8 +183,8 @@ test_TooShortExtensionFieldLength(void) int pkt_len = LEN_PKT_NOMAC + 4 + 24; TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -181,8 +199,8 @@ test_UnauthenticatedPacketReject(void) /* We demand authentication, but no MAC header is present. */ TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -196,8 +214,8 @@ test_CryptoNAKPacketReject(void) int pkt_len = LEN_PKT_NOMAC + 4; /* + 4 byte MAC = Crypto-NAK */ TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -211,19 +229,19 @@ test_AuthenticatedPacketInvalid(void) /* Prepare the packet. */ int pkt_len = LEN_PKT_NOMAC; - testpkt.exten[0] = htonl(50); - int mac_len = make_mac(&testpkt, pkt_len, + testpkt.p.exten[0] = htonl(50); + int mac_len = make_mac(&testpkt.p, pkt_len, MAX_MD5_LEN, key_ptr, - &testpkt.exten[1]); + &testpkt.p.exten[1]); pkt_len += 4 + mac_len; /* Now, alter the MAC so it becomes invalid. */ - testpkt.exten[1] += 1; + testpkt.p.exten[1] += 1; TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -239,15 +257,15 @@ test_AuthenticatedPacketUnknownKey(void) */ int pkt_len = LEN_PKT_NOMAC; - testpkt.exten[0] = htonl(50); - int mac_len = make_mac(&testpkt, pkt_len, + testpkt.p.exten[0] = htonl(50); + int mac_len = make_mac(&testpkt.p, pkt_len, MAX_MD5_LEN, key_ptr, - &testpkt.exten[1]); + &testpkt.p.exten[1]); pkt_len += 4 + mac_len; TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -256,16 +274,16 @@ test_ServerVersionTooOld(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, - NTP_OLDVERSION - 1, - MODE_CLIENT); - TEST_ASSERT_TRUE(PKT_VERSION(testpkt.li_vn_mode) < NTP_OLDVERSION); + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, + NTP_OLDVERSION - 1, + MODE_CLIENT); + TEST_ASSERT_TRUE(PKT_VERSION(testpkt.p.li_vn_mode) < NTP_OLDVERSION); int pkt_len = LEN_PKT_NOMAC; TEST_ASSERT_EQUAL(SERVER_UNUSEABLE, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -274,16 +292,16 @@ test_ServerVersionTooNew(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, - NTP_VERSION + 1, - MODE_CLIENT); - TEST_ASSERT_TRUE(PKT_VERSION(testpkt.li_vn_mode) > NTP_VERSION); + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, + NTP_VERSION + 1, + MODE_CLIENT); + TEST_ASSERT_TRUE(PKT_VERSION(testpkt.p.li_vn_mode) > NTP_VERSION); int pkt_len = LEN_PKT_NOMAC; TEST_ASSERT_EQUAL(SERVER_UNUSEABLE, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -292,16 +310,16 @@ test_NonWantedMode(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, - NTP_VERSION, - MODE_CLIENT); + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, + NTP_VERSION, + MODE_CLIENT); /* The packet has a mode of MODE_CLIENT, but process_pkt expects * MODE_SERVER */ TEST_ASSERT_EQUAL(SERVER_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -311,12 +329,12 @@ test_KoDRate(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.stratum = STRATUM_PKT_UNSPEC; - memcpy(&testpkt.refid, "RATE", 4); + testpkt.p.stratum = STRATUM_PKT_UNSPEC; + memcpy(&testpkt.p.refid, "RATE", 4); TEST_ASSERT_EQUAL(KOD_RATE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -325,12 +343,12 @@ test_KoDDeny(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.stratum = STRATUM_PKT_UNSPEC; - memcpy(&testpkt.refid, "DENY", 4); + testpkt.p.stratum = STRATUM_PKT_UNSPEC; + memcpy(&testpkt.p.refid, "DENY", 4); TEST_ASSERT_EQUAL(KOD_DEMOBILIZE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -339,13 +357,13 @@ test_RejectUnsyncedServer(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC, - NTP_VERSION, - MODE_SERVER); + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC, + NTP_VERSION, + MODE_SERVER); TEST_ASSERT_EQUAL(SERVER_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -357,15 +375,15 @@ test_RejectWrongResponseServerMode(void) l_fp tmp; tmp.l_ui = 1000UL; tmp.l_uf = 0UL; - HTONL_FP(&tmp, &testpkt.org); + HTONL_FP(&tmp, &testpkt.p.org); tmp.l_ui = 2000UL; tmp.l_uf = 0UL; - HTONL_FP(&tmp, &testspkt.xmt); + HTONL_FP(&tmp, &testspkt.p.xmt); TEST_ASSERT_EQUAL(PACKET_UNUSEABLE, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -374,12 +392,12 @@ test_AcceptNoSentPacketBroadcastMode(void) { TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); - testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, - NTP_VERSION, - MODE_BROADCAST); + testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, + NTP_VERSION, + MODE_BROADCAST); TEST_ASSERT_EQUAL(LEN_PKT_NOMAC, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, MODE_BROADCAST, NULL, "UnitTest")); } @@ -390,8 +408,8 @@ test_CorrectUnauthenticatedPacket(void) TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION)); TEST_ASSERT_EQUAL(LEN_PKT_NOMAC, - process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -404,16 +422,16 @@ test_CorrectAuthenticatedPacketMD5(void) int pkt_len = LEN_PKT_NOMAC; /* Prepare the packet. */ - testpkt.exten[0] = htonl(10); - int mac_len = make_mac(&testpkt, pkt_len, + testpkt.p.exten[0] = htonl(10); + int mac_len = make_mac(&testpkt.p, pkt_len, MAX_MD5_LEN, key_ptr, - &testpkt.exten[1]); + &testpkt.p.exten[1]); pkt_len += 4 + mac_len; TEST_ASSERT_EQUAL(pkt_len, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } @@ -426,14 +444,14 @@ test_CorrectAuthenticatedPacketSHA1(void) int pkt_len = LEN_PKT_NOMAC; /* Prepare the packet. */ - testpkt.exten[0] = htonl(20); - int mac_len = make_mac(&testpkt, pkt_len, + testpkt.p.exten[0] = htonl(20); + int mac_len = make_mac(&testpkt.p, pkt_len, MAX_MAC_LEN, key_ptr, - &testpkt.exten[1]); + &testpkt.p.exten[1]); pkt_len += 4 + mac_len; TEST_ASSERT_EQUAL(pkt_len, - process_pkt(&testpkt, &testsock, pkt_len, - MODE_SERVER, &testspkt, "UnitTest")); + process_pkt(&testpkt.p, &testsock, pkt_len, + MODE_SERVER, &testspkt.p, "UnitTest")); } diff --git a/contrib/ntp/sntp/tests/run-packetProcessing.c b/contrib/ntp/sntp/tests/run-packetProcessing.c index ad02b7a..38f8552 100644 --- a/contrib/ntp/sntp/tests/run-packetProcessing.c +++ b/contrib/ntp/sntp/tests/run-packetProcessing.c @@ -66,24 +66,24 @@ int main(int argc, char *argv[]) { progname = argv[0]; UnityBegin("packetProcessing.c"); - RUN_TEST(test_TooShortLength, 25); - RUN_TEST(test_LengthNotMultipleOfFour, 26); - RUN_TEST(test_TooShortExtensionFieldLength, 27); - RUN_TEST(test_UnauthenticatedPacketReject, 28); - RUN_TEST(test_CryptoNAKPacketReject, 29); - RUN_TEST(test_AuthenticatedPacketInvalid, 30); - RUN_TEST(test_AuthenticatedPacketUnknownKey, 31); - RUN_TEST(test_ServerVersionTooOld, 32); - RUN_TEST(test_ServerVersionTooNew, 33); - RUN_TEST(test_NonWantedMode, 34); - RUN_TEST(test_KoDRate, 35); - RUN_TEST(test_KoDDeny, 36); - RUN_TEST(test_RejectUnsyncedServer, 37); - RUN_TEST(test_RejectWrongResponseServerMode, 38); - RUN_TEST(test_AcceptNoSentPacketBroadcastMode, 39); - RUN_TEST(test_CorrectUnauthenticatedPacket, 40); - RUN_TEST(test_CorrectAuthenticatedPacketMD5, 41); - RUN_TEST(test_CorrectAuthenticatedPacketSHA1, 42); + RUN_TEST(test_TooShortLength, 20); + RUN_TEST(test_LengthNotMultipleOfFour, 21); + RUN_TEST(test_TooShortExtensionFieldLength, 22); + RUN_TEST(test_UnauthenticatedPacketReject, 23); + RUN_TEST(test_CryptoNAKPacketReject, 24); + RUN_TEST(test_AuthenticatedPacketInvalid, 25); + RUN_TEST(test_AuthenticatedPacketUnknownKey, 26); + RUN_TEST(test_ServerVersionTooOld, 27); + RUN_TEST(test_ServerVersionTooNew, 28); + RUN_TEST(test_NonWantedMode, 29); + RUN_TEST(test_KoDRate, 30); + RUN_TEST(test_KoDDeny, 31); + RUN_TEST(test_RejectUnsyncedServer, 32); + RUN_TEST(test_RejectWrongResponseServerMode, 33); + RUN_TEST(test_AcceptNoSentPacketBroadcastMode, 34); + RUN_TEST(test_CorrectUnauthenticatedPacket, 35); + RUN_TEST(test_CorrectAuthenticatedPacketMD5, 36); + RUN_TEST(test_CorrectAuthenticatedPacketSHA1, 37); return (UnityEnd()); } diff --git a/contrib/ntp/sntp/unity/Makefile.am b/contrib/ntp/sntp/unity/Makefile.am index 31029ff..71092a0 100644 --- a/contrib/ntp/sntp/unity/Makefile.am +++ b/contrib/ntp/sntp/unity/Makefile.am @@ -12,6 +12,8 @@ libunity_a_CFLAGS = \ libunity_a_SOURCES = \ ../libpkgver/colcomp.c \ unity.c \ + ulib_setup.c \ + ulib_teardown.c \ unity.h \ unity_config.h \ unity_internals.h \ diff --git a/contrib/ntp/sntp/unity/Makefile.in b/contrib/ntp/sntp/unity/Makefile.in index e82e55e..7c92397 100644 --- a/contrib/ntp/sntp/unity/Makefile.in +++ b/contrib/ntp/sntp/unity/Makefile.in @@ -134,8 +134,9 @@ libunity_a_AR = $(AR) $(ARFLAGS) libunity_a_LIBADD = am__objects_1 = am_libunity_a_OBJECTS = libunity_a-colcomp.$(OBJEXT) \ - libunity_a-unity.$(OBJEXT) libunity_a-unity_fixture.$(OBJEXT) \ - $(am__objects_1) + libunity_a-unity.$(OBJEXT) libunity_a-ulib_setup.$(OBJEXT) \ + libunity_a-ulib_teardown.$(OBJEXT) \ + libunity_a-unity_fixture.$(OBJEXT) $(am__objects_1) libunity_a_OBJECTS = $(am_libunity_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -453,6 +454,8 @@ libunity_a_CFLAGS = \ libunity_a_SOURCES = \ ../libpkgver/colcomp.c \ unity.c \ + ulib_setup.c \ + ulib_teardown.c \ unity.h \ unity_config.h \ unity_internals.h \ @@ -518,6 +521,8 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-colcomp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-ulib_setup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-ulib_teardown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-unity.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-unity_fixture.Po@am__quote@ @@ -570,6 +575,34 @@ libunity_a-unity.obj: unity.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-unity.obj `if test -f 'unity.c'; then $(CYGPATH_W) 'unity.c'; else $(CYGPATH_W) '$(srcdir)/unity.c'; fi` +libunity_a-ulib_setup.o: ulib_setup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_setup.o -MD -MP -MF $(DEPDIR)/libunity_a-ulib_setup.Tpo -c -o libunity_a-ulib_setup.o `test -f 'ulib_setup.c' || echo '$(srcdir)/'`ulib_setup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_setup.Tpo $(DEPDIR)/libunity_a-ulib_setup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ulib_setup.c' object='libunity_a-ulib_setup.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_setup.o `test -f 'ulib_setup.c' || echo '$(srcdir)/'`ulib_setup.c + +libunity_a-ulib_setup.obj: ulib_setup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_setup.obj -MD -MP -MF $(DEPDIR)/libunity_a-ulib_setup.Tpo -c -o libunity_a-ulib_setup.obj `if test -f 'ulib_setup.c'; then $(CYGPATH_W) 'ulib_setup.c'; else $(CYGPATH_W) '$(srcdir)/ulib_setup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_setup.Tpo $(DEPDIR)/libunity_a-ulib_setup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ulib_setup.c' object='libunity_a-ulib_setup.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_setup.obj `if test -f 'ulib_setup.c'; then $(CYGPATH_W) 'ulib_setup.c'; else $(CYGPATH_W) '$(srcdir)/ulib_setup.c'; fi` + +libunity_a-ulib_teardown.o: ulib_teardown.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_teardown.o -MD -MP -MF $(DEPDIR)/libunity_a-ulib_teardown.Tpo -c -o libunity_a-ulib_teardown.o `test -f 'ulib_teardown.c' || echo '$(srcdir)/'`ulib_teardown.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_teardown.Tpo $(DEPDIR)/libunity_a-ulib_teardown.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ulib_teardown.c' object='libunity_a-ulib_teardown.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_teardown.o `test -f 'ulib_teardown.c' || echo '$(srcdir)/'`ulib_teardown.c + +libunity_a-ulib_teardown.obj: ulib_teardown.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_teardown.obj -MD -MP -MF $(DEPDIR)/libunity_a-ulib_teardown.Tpo -c -o libunity_a-ulib_teardown.obj `if test -f 'ulib_teardown.c'; then $(CYGPATH_W) 'ulib_teardown.c'; else $(CYGPATH_W) '$(srcdir)/ulib_teardown.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_teardown.Tpo $(DEPDIR)/libunity_a-ulib_teardown.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ulib_teardown.c' object='libunity_a-ulib_teardown.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_teardown.obj `if test -f 'ulib_teardown.c'; then $(CYGPATH_W) 'ulib_teardown.c'; else $(CYGPATH_W) '$(srcdir)/ulib_teardown.c'; fi` + libunity_a-unity_fixture.o: unity_fixture.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-unity_fixture.o -MD -MP -MF $(DEPDIR)/libunity_a-unity_fixture.Tpo -c -o libunity_a-unity_fixture.o `test -f 'unity_fixture.c' || echo '$(srcdir)/'`unity_fixture.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-unity_fixture.Tpo $(DEPDIR)/libunity_a-unity_fixture.Po diff --git a/contrib/ntp/sntp/unity/ulib_setup.c b/contrib/ntp/sntp/unity/ulib_setup.c new file mode 100644 index 0000000..41a3b38 --- /dev/null +++ b/contrib/ntp/sntp/unity/ulib_setup.c @@ -0,0 +1,14 @@ +/* default / lib implementation of 'setUp()' + * + * SOLARIS does not support weak symbols -- need a real lib + * implemetation here. + */ + +extern void setUp(void); + +void setUp(void) +{ + /* empty on purpose */ +} + +/* -*- that's all folks! -*- */ diff --git a/contrib/ntp/sntp/unity/ulib_teardown.c b/contrib/ntp/sntp/unity/ulib_teardown.c new file mode 100644 index 0000000..a36cdf9 --- /dev/null +++ b/contrib/ntp/sntp/unity/ulib_teardown.c @@ -0,0 +1,13 @@ +/* default / lib implementation of 'tearDown()' + * + * SOLARIS does not support weak symbols -- need a real lib + * implemetation here. + */ + +extern void tearDown(void); + +void tearDown(void) +{ + /* empty on purpose */ +} + diff --git a/contrib/ntp/sntp/unity/unity_fixture.c b/contrib/ntp/sntp/unity/unity_fixture.c index 6bdbe5b..c45a9a7 100644 --- a/contrib/ntp/sntp/unity/unity_fixture.c +++ b/contrib/ntp/sntp/unity/unity_fixture.c @@ -17,10 +17,6 @@ int (*outputChar)(int) = putchar; int verbose = 0; -void setUp(void); -void tearDown(void); -void setUp(void) { /*does nothing*/ } -void tearDown(void) { /*does nothing*/ } static void announceTestRun(unsigned int runNumber) { diff --git a/contrib/ntp/sntp/version.c b/contrib/ntp/sntp/version.c index 38424f3..1515ff2 100644 --- a/contrib/ntp/sntp/version.c +++ b/contrib/ntp/sntp/version.c @@ -2,4 +2,4 @@ * version file for sntp */ #include <config.h> -const char * Version = "sntp 4.2.8p7@1.3265-o Thu Jun 2 11:19:34 UTC 2016 (29)"; +const char * Version = "sntp 4.2.8p9@1.3265-o Mon Nov 21 12:58:21 UTC 2016 (31)"; diff --git a/contrib/ntp/tests/libntp/a_md5encrypt.c b/contrib/ntp/tests/libntp/a_md5encrypt.c index d8e7ab9..a87aa79 100644 --- a/contrib/ntp/tests/libntp/a_md5encrypt.c +++ b/contrib/ntp/tests/libntp/a_md5encrypt.c @@ -49,9 +49,7 @@ test_Encrypt(void) { u_int32 *packetPtr; int length; - packetPtr = emalloc(totalLength * sizeof(*packetPtr)); - - memset(packetPtr + packetLength, 0, keyIdLength); + packetPtr = emalloc_zero(totalLength * sizeof(*packetPtr)); memcpy(packetPtr, packet, packetLength); cache_secretsize = keyLength; diff --git a/contrib/ntp/tests/libntp/calendar.c b/contrib/ntp/tests/libntp/calendar.c index 9d25c41..b631565 100644 --- a/contrib/ntp/tests/libntp/calendar.c +++ b/contrib/ntp/tests/libntp/calendar.c @@ -2,6 +2,7 @@ #include "ntp_stdlib.h" /* test fail without this include, for some reason */ #include "ntp_calendar.h" +#include "ntp_unixtime.h" #include "unity.h" #include <string.h> @@ -19,6 +20,7 @@ char * DateFromCalToString(const struct calendar *cal); char * DateFromIsoToString(const struct isodate *iso); int IsEqualDateCal(const struct calendar *expected, const struct calendar *actual); int IsEqualDateIso(const struct isodate *expected, const struct isodate *actual); + void test_DaySplitMerge(void); void test_SplitYearDays1(void); void test_SplitYearDays2(void); @@ -35,6 +37,8 @@ void test_IsoCalWeeksToYearStart(void); void test_IsoCalWeeksToYearEnd(void); void test_DaySecToDate(void); +void test_NtpToNtp(void); +void test_NtpToTime(void); void setUp(void) @@ -608,3 +612,126 @@ test_DaySecToDate(void) return; } + +/* -------------------------------------------------------------------- + * unfolding of (truncated) NTP time stamps to full 64bit values. + * + * Note: These tests need a 64bit time_t to be useful. + */ + +void +test_NtpToNtp(void) +{ +# if SIZEOF_TIME_T <= 4 + + TEST_IGNORE_MESSAGE("test only useful for sizeof(time_t) > 4, skipped"); + +# else + + static const uint32_t ntp_vals[6] = { + UINT32_C(0x00000000), + UINT32_C(0x00000001), + UINT32_C(0x7FFFFFFF), + UINT32_C(0x80000000), + UINT32_C(0x80000001), + UINT32_C(0xFFFFFFFF) + }; + + static char lbuf[128]; + vint64 hold; + time_t pivot, texp, diff; + int loops, iloop; + + pivot = 0; + for (loops = 0; loops < 16; ++loops) { + for (iloop = 0; iloop < 6; ++iloop) { + hold = ntpcal_ntp_to_ntp( + ntp_vals[iloop], &pivot); + texp = vint64_to_time(&hold); + + /* constraint 1: texp must be in the + * (right-open) intervall [p-(2^31), p+(2^31)[, + * but the pivot 'p' must be taken in full NTP + * time scale! + */ + diff = texp - (pivot + JAN_1970); + snprintf(lbuf, sizeof(lbuf), + "bounds check: piv=%lld exp=%lld dif=%lld", + (long long)pivot, + (long long)texp, + (long long)diff); + TEST_ASSERT_MESSAGE((diff >= INT32_MIN) && (diff <= INT32_MAX), + lbuf); + + /* constraint 2: low word must be equal to + * input + */ + snprintf(lbuf, sizeof(lbuf), + "low check: ntp(in)=$%08lu ntp(out[0:31])=$%08lu", + (unsigned long)ntp_vals[iloop], + (unsigned long)hold.D_s.lo); + TEST_ASSERT_EQUAL_MESSAGE(ntp_vals[iloop], hold.D_s.lo, lbuf); + } + pivot += 0x20000000; + } +# endif +} + +void +test_NtpToTime(void) +{ +# if SIZEOF_TIME_T <= 4 + + TEST_IGNORE_MESSAGE("test only useful for sizeof(time_t) > 4, skipped"); + +# else + + static const uint32_t ntp_vals[6] = { + UINT32_C(0x00000000), + UINT32_C(0x00000001), + UINT32_C(0x7FFFFFFF), + UINT32_C(0x80000000), + UINT32_C(0x80000001), + UINT32_C(0xFFFFFFFF) + }; + + static char lbuf[128]; + vint64 hold; + time_t pivot, texp, diff; + uint32_t back; + int loops, iloop; + + pivot = 0; + for (loops = 0; loops < 16; ++loops) { + for (iloop = 0; iloop < 6; ++iloop) { + hold = ntpcal_ntp_to_time( + ntp_vals[iloop], &pivot); + texp = vint64_to_time(&hold); + + /* constraint 1: texp must be in the + * (right-open) intervall [p-(2^31), p+(2^31)[ + */ + diff = texp - pivot; + snprintf(lbuf, sizeof(lbuf), + "bounds check: piv=%lld exp=%lld dif=%lld", + (long long)pivot, + (long long)texp, + (long long)diff); + TEST_ASSERT_MESSAGE((diff >= INT32_MIN) && (diff <= INT32_MAX), + lbuf); + + /* constraint 2: conversion from full time back + * to truncated NTP time must yield same result + * as input. + */ + back = (uint32_t)texp + JAN_1970; + snprintf(lbuf, sizeof(lbuf), + "modulo check: ntp(in)=$%08lu ntp(out)=$%08lu", + (unsigned long)ntp_vals[iloop], + (unsigned long)back); + TEST_ASSERT_EQUAL_MESSAGE(ntp_vals[iloop], back, lbuf); + } + pivot += 0x20000000; + } +# endif +} diff --git a/contrib/ntp/tests/libntp/run-calendar.c b/contrib/ntp/tests/libntp/run-calendar.c index 555f3ba..82309bd 100644 --- a/contrib/ntp/tests/libntp/run-calendar.c +++ b/contrib/ntp/tests/libntp/run-calendar.c @@ -25,6 +25,7 @@ #include "config.h" #include "ntp_stdlib.h" #include "ntp_calendar.h" +#include "ntp_unixtime.h" #include <string.h> //=======External Functions This Runner Calls===== @@ -45,6 +46,8 @@ extern void test_IsoCalYearsToWeeks(void); extern void test_IsoCalWeeksToYearStart(void); extern void test_IsoCalWeeksToYearEnd(void); extern void test_DaySecToDate(void); +extern void test_NtpToNtp(void); +extern void test_NtpToTime(void); //=======Test Reset Option===== @@ -63,21 +66,23 @@ int main(int argc, char *argv[]) { progname = argv[0]; UnityBegin("calendar.c"); - RUN_TEST(test_DaySplitMerge, 22); - RUN_TEST(test_SplitYearDays1, 23); - RUN_TEST(test_SplitYearDays2, 24); - RUN_TEST(test_RataDie1, 25); - RUN_TEST(test_LeapYears1, 26); - RUN_TEST(test_LeapYears2, 27); - RUN_TEST(test_RoundTripDate, 28); - RUN_TEST(test_RoundTripYearStart, 29); - RUN_TEST(test_RoundTripMonthStart, 30); - RUN_TEST(test_RoundTripWeekStart, 31); - RUN_TEST(test_RoundTripDayStart, 32); - RUN_TEST(test_IsoCalYearsToWeeks, 33); - RUN_TEST(test_IsoCalWeeksToYearStart, 34); - RUN_TEST(test_IsoCalWeeksToYearEnd, 35); - RUN_TEST(test_DaySecToDate, 36); + RUN_TEST(test_DaySplitMerge, 24); + RUN_TEST(test_SplitYearDays1, 25); + RUN_TEST(test_SplitYearDays2, 26); + RUN_TEST(test_RataDie1, 27); + RUN_TEST(test_LeapYears1, 28); + RUN_TEST(test_LeapYears2, 29); + RUN_TEST(test_RoundTripDate, 30); + RUN_TEST(test_RoundTripYearStart, 31); + RUN_TEST(test_RoundTripMonthStart, 32); + RUN_TEST(test_RoundTripWeekStart, 33); + RUN_TEST(test_RoundTripDayStart, 34); + RUN_TEST(test_IsoCalYearsToWeeks, 35); + RUN_TEST(test_IsoCalWeeksToYearStart, 36); + RUN_TEST(test_IsoCalWeeksToYearEnd, 37); + RUN_TEST(test_DaySecToDate, 38); + RUN_TEST(test_NtpToNtp, 40); + RUN_TEST(test_NtpToTime, 41); return (UnityEnd()); } diff --git a/contrib/ntp/tests/libntp/sfptostr.c b/contrib/ntp/tests/libntp/sfptostr.c index c7616c7..c781c03 100644 --- a/contrib/ntp/tests/libntp/sfptostr.c +++ b/contrib/ntp/tests/libntp/sfptostr.c @@ -39,7 +39,7 @@ void test_PositiveInteger(void) void test_NegativeInteger(void) { - s_fp test = -200 << 16; // exact -200.000000 + s_fp test = -(200 << 16); // exact -200.000000 TEST_ASSERT_EQUAL_STRING("-200.000000", fptoa(test, SFP_MAX_PRECISION)); TEST_ASSERT_EQUAL_STRING("-200000.000", fptoms(test, SFP_MAX_PRECISION)); @@ -55,7 +55,7 @@ void test_PositiveIntegerPositiveFraction(void) void test_NegativeIntegerNegativeFraction(void) { - s_fp test = (-200 << 16) - (1 << 15); // -200 - 0.5 + s_fp test = -(200 << 16) - (1 << 15); // -200 - 0.5 TEST_ASSERT_EQUAL_STRING("-200.500000", fptoa(test, SFP_MAX_PRECISION)); TEST_ASSERT_EQUAL_STRING("-200500.000", fptoms(test, SFP_MAX_PRECISION)); @@ -71,7 +71,7 @@ void test_PositiveIntegerNegativeFraction(void) void test_NegativeIntegerPositiveFraction(void) { - s_fp test = (-200 << 16) + (1 << 14)*3; // -200 + 0.75 + s_fp test = -(200 << 16) + (1 << 14)*3; // -200 + 0.75 TEST_ASSERT_EQUAL_STRING("-199.250000", fptoa(test, SFP_MAX_PRECISION)); TEST_ASSERT_EQUAL_STRING("-199250.000", fptoms(test, SFP_MAX_PRECISION)); diff --git a/contrib/ntp/tests/ntpd/Makefile.am b/contrib/ntp/tests/ntpd/Makefile.am index 2cab14f..3ce512d 100644 --- a/contrib/ntp/tests/ntpd/Makefile.am +++ b/contrib/ntp/tests/ntpd/Makefile.am @@ -156,7 +156,6 @@ test_ntp_signd_SOURCES = \ t-ntp_signd.c \ run-t-ntp_signd.c \ $(srcdir)/../libntp/test-libntp.c \ - $(srcdir)/../../ntpd/ntp_signd.c \ $(NULL) $(srcdir)/run-t-ntp_signd.c: $(srcdir)/t-ntp_signd.c $(std_unity_list) diff --git a/contrib/ntp/tests/ntpd/Makefile.in b/contrib/ntp/tests/ntpd/Makefile.in index 2dc7a04..5c83a37 100644 --- a/contrib/ntp/tests/ntpd/Makefile.in +++ b/contrib/ntp/tests/ntpd/Makefile.in @@ -205,7 +205,7 @@ test_ntp_scanner_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ -o $@ am_test_ntp_signd_OBJECTS = t-ntp_signd.$(OBJEXT) \ run-t-ntp_signd.$(OBJEXT) test-libntp.$(OBJEXT) \ - ntp_signd.$(OBJEXT) $(am__objects_1) + $(am__objects_1) test_ntp_signd_OBJECTS = $(am_test_ntp_signd_OBJECTS) test_ntp_signd_DEPENDENCIES = $(am__DEPENDENCIES_3) \ $(top_builddir)/ntpd/ntp_config.o \ @@ -871,7 +871,6 @@ test_ntp_signd_SOURCES = \ t-ntp_signd.c \ run-t-ntp_signd.c \ $(srcdir)/../libntp/test-libntp.c \ - $(srcdir)/../../ntpd/ntp_signd.c \ $(NULL) @@ -971,7 +970,6 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_signd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-t-ntp_signd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-ntp_signd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-libntp.Po@am__quote@ @@ -1194,20 +1192,6 @@ test-libntp.obj: $(srcdir)/../libntp/test-libntp.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test-libntp.obj `if test -f '$(srcdir)/../libntp/test-libntp.c'; then $(CYGPATH_W) '$(srcdir)/../libntp/test-libntp.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libntp/test-libntp.c'; fi` -ntp_signd.o: $(srcdir)/../../ntpd/ntp_signd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntp_signd.o -MD -MP -MF $(DEPDIR)/ntp_signd.Tpo -c -o ntp_signd.o `test -f '$(srcdir)/../../ntpd/ntp_signd.c' || echo '$(srcdir)/'`$(srcdir)/../../ntpd/ntp_signd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntp_signd.Tpo $(DEPDIR)/ntp_signd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(srcdir)/../../ntpd/ntp_signd.c' object='ntp_signd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntp_signd.o `test -f '$(srcdir)/../../ntpd/ntp_signd.c' || echo '$(srcdir)/'`$(srcdir)/../../ntpd/ntp_signd.c - -ntp_signd.obj: $(srcdir)/../../ntpd/ntp_signd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntp_signd.obj -MD -MP -MF $(DEPDIR)/ntp_signd.Tpo -c -o ntp_signd.obj `if test -f '$(srcdir)/../../ntpd/ntp_signd.c'; then $(CYGPATH_W) '$(srcdir)/../../ntpd/ntp_signd.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../../ntpd/ntp_signd.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntp_signd.Tpo $(DEPDIR)/ntp_signd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(srcdir)/../../ntpd/ntp_signd.c' object='ntp_signd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntp_signd.obj `if test -f '$(srcdir)/../../ntpd/ntp_signd.c'; then $(CYGPATH_W) '$(srcdir)/../../ntpd/ntp_signd.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../../ntpd/ntp_signd.c'; fi` - test_rc_cmdlength-rc_cmdlength.o: rc_cmdlength.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rc_cmdlength_CFLAGS) $(CFLAGS) -MT test_rc_cmdlength-rc_cmdlength.o -MD -MP -MF $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Tpo -c -o test_rc_cmdlength-rc_cmdlength.o `test -f 'rc_cmdlength.c' || echo '$(srcdir)/'`rc_cmdlength.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Tpo $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Po diff --git a/contrib/ntp/util/invoke-ntp-keygen.texi b/contrib/ntp/util/invoke-ntp-keygen.texi index cc8a005..8cec26e 100644 --- a/contrib/ntp/util/invoke-ntp-keygen.texi +++ b/contrib/ntp/util/invoke-ntp-keygen.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp-keygen.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:39:40 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:03:45 AM by AutoGen 5.18.5 # From the definitions ntp-keygen-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -886,7 +886,7 @@ with a status code of 0. @exampleindent 0 @example -ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8 +ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9 Usage: ntp-keygen [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... Flg Arg Option-Name Description -b Num imbits identity modulus bits diff --git a/contrib/ntp/util/ntp-keygen-opts.c b/contrib/ntp/util/ntp-keygen-opts.c index 2fb198b..d41a687 100644 --- a/contrib/ntp/util/ntp-keygen-opts.c +++ b/contrib/ntp/util/ntp-keygen-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.c) * - * It has been AutoGen-ed June 2, 2016 at 07:39:24 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:03:30 AM by AutoGen 5.18.5 * From the definitions ntp-keygen-opts.def * and the template file options * @@ -72,7 +72,7 @@ extern FILE * option_usage_fp; * static const strings for ntp-keygen options */ static char const ntp_keygen_opt_strs[2419] = -/* 0 */ "ntp-keygen (ntp) 4.2.8p8\n" +/* 0 */ "ntp-keygen (ntp) 4.2.8p9\n" "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" @@ -164,14 +164,14 @@ static char const ntp_keygen_opt_strs[2419] = /* 2202 */ "no-load-opts\0" /* 2215 */ "no\0" /* 2218 */ "NTP_KEYGEN\0" -/* 2229 */ "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8\n" +/* 2229 */ "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9\n" "Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0" /* 2343 */ "$HOME\0" /* 2349 */ ".\0" /* 2351 */ ".ntprc\0" /* 2358 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 2392 */ "\n\0" -/* 2394 */ "ntp-keygen (ntp) 4.2.8p8"; +/* 2394 */ "ntp-keygen (ntp) 4.2.8p9"; /** * imbits option description: @@ -1309,7 +1309,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntp_keygenOptions.pzCopyright */ - puts(_("ntp-keygen (ntp) 4.2.8p8\n\ + puts(_("ntp-keygen (ntp) 4.2.8p9\n\ Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ @@ -1408,14 +1408,14 @@ implied warranty.\n")); puts(_("load options from a config file")); /* referenced via ntp_keygenOptions.pzUsageTitle */ - puts(_("ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8\n\ + puts(_("ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9\n\ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n")); /* referenced via ntp_keygenOptions.pzExplain */ puts(_("\n")); /* referenced via ntp_keygenOptions.pzFullVersion */ - puts(_("ntp-keygen (ntp) 4.2.8p8")); + puts(_("ntp-keygen (ntp) 4.2.8p9")); /* referenced via ntp_keygenOptions.pzFullUsage */ puts(_("<<<NOT-FOUND>>>")); diff --git a/contrib/ntp/util/ntp-keygen-opts.h b/contrib/ntp/util/ntp-keygen-opts.h index 68d6272..40201db 100644 --- a/contrib/ntp/util/ntp-keygen-opts.h +++ b/contrib/ntp/util/ntp-keygen-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.h) * - * It has been AutoGen-ed June 2, 2016 at 07:39:23 AM by AutoGen 5.18.5 + * It has been AutoGen-ed November 21, 2016 at 08:03:29 AM by AutoGen 5.18.5 * From the definitions ntp-keygen-opts.def * and the template file options * @@ -94,9 +94,9 @@ typedef enum { /** count of all options for ntp-keygen */ #define OPTION_CT 26 /** ntp-keygen version */ -#define NTP_KEYGEN_VERSION "4.2.8p8" +#define NTP_KEYGEN_VERSION "4.2.8p9" /** Full ntp-keygen version text */ -#define NTP_KEYGEN_FULL_VERSION "ntp-keygen (ntp) 4.2.8p8" +#define NTP_KEYGEN_FULL_VERSION "ntp-keygen (ntp) 4.2.8p9" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/util/ntp-keygen.1ntp-keygenman b/contrib/ntp/util/ntp-keygen.1ntp-keygenman index b3c1f2f..9e30b46 100644 --- a/contrib/ntp/util/ntp-keygen.1ntp-keygenman +++ b/contrib/ntp/util/ntp-keygen.1ntp-keygenman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp-keygen 1ntp-keygenman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntp-keygen 1ntp-keygenman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-.JaGB0/ag-lKayA0) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-psaWZm/ag-DsaOYm) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:36 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:41 AM by AutoGen 5.18.5 .\" From the definitions ntp-keygen-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc b/contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc index 0e5a5eb..4dd0746 100644 --- a/contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc +++ b/contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_KEYGEN 1ntp-keygenmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:43 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:48 AM by AutoGen 5.18.5 .\" From the definitions ntp-keygen-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/util/ntp-keygen.c b/contrib/ntp/util/ntp-keygen.c index ab34927..66a4755 100644 --- a/contrib/ntp/util/ntp-keygen.c +++ b/contrib/ntp/util/ntp-keygen.c @@ -105,6 +105,7 @@ #include "openssl/pem.h" #include "openssl/x509v3.h" #include <openssl/objects.h> +#include "libssl_compat.h" #endif /* OPENSSL */ #include <ssl_applink.c> @@ -148,6 +149,10 @@ EVP_PKEY *genkey (const char *, const char *); EVP_PKEY *readkey (char *, char *, u_int *, EVP_PKEY **); void writekey (char *, char *, u_int *, EVP_PKEY **); u_long asn2ntp (ASN1_TIME *); + +static DSA* genDsaParams(int, char*); +static RSA* genRsaKeyPair(int, char*); + #endif /* AUTOKEY */ /* @@ -294,7 +299,6 @@ main( int optct; /* option count */ #ifdef AUTOKEY X509 *cert = NULL; /* X509 certificate */ - X509_EXTENSION *ext; /* X509v3 extension */ EVP_PKEY *pkey_host = NULL; /* host key */ EVP_PKEY *pkey_sign = NULL; /* sign key */ EVP_PKEY *pkey_iffkey = NULL; /* IFF sever keys */ @@ -511,8 +515,7 @@ main( * Extract digest/signature scheme. */ if (scheme == NULL) { - nid = OBJ_obj2nid(cert->cert_info-> - signature->algorithm); + nid = X509_get_signature_nid(cert); scheme = OBJ_nid2sn(nid); } @@ -524,8 +527,13 @@ main( ptr = strstr(groupbuf, "CN="); cnt = X509_get_ext_count(cert); for (i = 0; i < cnt; i++) { + X509_EXTENSION *ext; + ASN1_OBJECT *obj; + ext = X509_get_ext(cert, i); - if (OBJ_obj2nid(ext->object) == + obj = X509_EXTENSION_get_object(ext); + + if (OBJ_obj2nid(obj) == NID_ext_key_usage) { bp = BIO_new(BIO_s_mem()); X509V3_EXT_print(bp, ext, 0, 0); @@ -617,8 +625,14 @@ main( filename); } } - if (pkey_gqkey != NULL) - grpkey = BN_bn2hex(pkey_gqkey->pkey.rsa->q); + if (pkey_gqkey != NULL) { + RSA *rsa; + const BIGNUM *q; + + rsa = EVP_PKEY_get0_RSA(pkey_gqkey); + RSA_get0_factors(rsa, NULL, &q); + grpkey = BN_bn2hex(q); + } /* * Write the nonencrypted GQ client parameters to the stdout @@ -634,9 +648,10 @@ main( filename); fprintf(stdout, "# %s\n# %s\n", filename, ctime(&epoch)); - rsa = pkey_gqkey->pkey.rsa; - BN_copy(rsa->p, BN_value_one()); - BN_copy(rsa->q, BN_value_one()); + /* XXX: This modifies the private key and should probably use a + * copy of it instead. */ + rsa = EVP_PKEY_get0_RSA(pkey_gqkey); + RSA_set0_factors(rsa, BN_dup(BN_value_one()), BN_dup(BN_value_one())); pkey = EVP_PKEY_new(); EVP_PKEY_assign_RSA(pkey, rsa); PEM_write_PKCS8PrivateKey(stdout, pkey, NULL, NULL, 0, @@ -658,7 +673,7 @@ main( filename); fprintf(stdout, "# %s\n# %s\n", filename, ctime(&epoch)); - rsa = pkey_gqkey->pkey.rsa; + rsa = EVP_PKEY_get0_RSA(pkey_gqkey); pkey = EVP_PKEY_new(); EVP_PKEY_assign_RSA(pkey, rsa); PEM_write_PKCS8PrivateKey(stdout, pkey, cipher, NULL, 0, @@ -699,8 +714,10 @@ main( filename); fprintf(stdout, "# %s\n# %s\n", filename, ctime(&epoch)); - dsa = pkey_iffkey->pkey.dsa; - BN_copy(dsa->priv_key, BN_value_one()); + /* XXX: This modifies the private key and should probably use a + * copy of it instead. */ + dsa = EVP_PKEY_get0_DSA(pkey_iffkey); + DSA_set0_key(dsa, NULL, BN_dup(BN_value_one())); pkey = EVP_PKEY_new(); EVP_PKEY_assign_DSA(pkey, dsa); PEM_write_PKCS8PrivateKey(stdout, pkey, NULL, NULL, 0, @@ -722,7 +739,7 @@ main( filename); fprintf(stdout, "# %s\n# %s\n", filename, ctime(&epoch)); - dsa = pkey_iffkey->pkey.dsa; + dsa = EVP_PKEY_get0_DSA(pkey_iffkey); pkey = EVP_PKEY_new(); EVP_PKEY_assign_DSA(pkey, dsa); PEM_write_PKCS8PrivateKey(stdout, pkey, cipher, NULL, 0, @@ -767,7 +784,7 @@ main( NULL, NULL); fflush(stdout); if (debug) - DSA_print_fp(stderr, pkey->pkey.dsa, 0); + DSA_print_fp(stderr, EVP_PKEY_get0_DSA(pkey), 0); } /* @@ -785,7 +802,7 @@ main( NULL, passwd2); fflush(stdout); if (debug) - DSA_print_fp(stderr, pkey->pkey.dsa, 0); + DSA_print_fp(stderr, EVP_PKEY_get0_DSA(pkey), 0); } /* @@ -934,11 +951,11 @@ readkey( if (pkey == NULL) pkey = parkey; if (debug) { - if (parkey->type == EVP_PKEY_DSA) - DSA_print_fp(stderr, parkey->pkey.dsa, + if (EVP_PKEY_base_id(parkey) == EVP_PKEY_DSA) + DSA_print_fp(stderr, EVP_PKEY_get0_DSA(parkey), 0); - else if (parkey->type == EVP_PKEY_RSA) - RSA_print_fp(stderr, parkey->pkey.rsa, + else if (EVP_PKEY_base_id(parkey) == EVP_PKEY_RSA) + RSA_print_fp(stderr, EVP_PKEY_get0_RSA(parkey), 0); } } @@ -967,7 +984,7 @@ gen_rsa( FILE *str; fprintf(stderr, "Generating RSA keys (%d bits)...\n", modulus); - rsa = RSA_generate_key(modulus, 65537, cb, _UC("RSA")); + rsa = genRsaKeyPair(modulus, _UC("RSA")); fprintf(stderr, "\n"); if (rsa == NULL) { fprintf(stderr, "RSA generate keys fails\n%s\n", @@ -1006,7 +1023,7 @@ gen_rsa( return (pkey); } - + /* * Generate DSA public/private key pair */ @@ -1017,7 +1034,6 @@ gen_dsa( { EVP_PKEY *pkey; /* private key */ DSA *dsa; /* DSA parameters */ - u_char seed[20]; /* seed for parameters */ FILE *str; /* @@ -1025,9 +1041,7 @@ gen_dsa( */ fprintf(stderr, "Generating DSA parameters (%d bits)...\n", modulus); - RAND_bytes(seed, sizeof(seed)); - dsa = DSA_generate_parameters(modulus, seed, sizeof(seed), NULL, - NULL, cb, _UC("DSA")); + dsa = genDsaParams(modulus, _UC("DSA")); fprintf(stderr, "\n"); if (dsa == NULL) { fprintf(stderr, "DSA generate parameters fails\n%s\n", @@ -1119,26 +1133,26 @@ gen_iffkey( { EVP_PKEY *pkey; /* private key */ DSA *dsa; /* DSA parameters */ - u_char seed[20]; /* seed for parameters */ BN_CTX *ctx; /* BN working space */ BIGNUM *b, *r, *k, *u, *v, *w; /* BN temp */ FILE *str; u_int temp; - + const BIGNUM *p, *q, *g; + BIGNUM *pub_key, *priv_key; + /* * Generate DSA parameters for use as IFF parameters. */ fprintf(stderr, "Generating IFF keys (%d bits)...\n", modulus2); - RAND_bytes(seed, sizeof(seed)); - dsa = DSA_generate_parameters(modulus2, seed, sizeof(seed), NULL, - NULL, cb, _UC("IFF")); + dsa = genDsaParams(modulus2, _UC("IFF")); fprintf(stderr, "\n"); if (dsa == NULL) { fprintf(stderr, "DSA generate parameters fails\n%s\n", ERR_error_string(ERR_get_error(), NULL)); - return (NULL);; + return (NULL); } + DSA_get0_pqg(dsa, &p, &q, &g); /* * Generate the private and public keys. The DSA parameters and @@ -1147,12 +1161,12 @@ gen_iffkey( */ b = BN_new(); r = BN_new(); k = BN_new(); u = BN_new(); v = BN_new(); w = BN_new(); ctx = BN_CTX_new(); - BN_rand(b, BN_num_bits(dsa->q), -1, 0); /* a */ - BN_mod(b, b, dsa->q, ctx); - BN_sub(v, dsa->q, b); - BN_mod_exp(v, dsa->g, v, dsa->p, ctx); /* g^(q - b) mod p */ - BN_mod_exp(u, dsa->g, b, dsa->p, ctx); /* g^b mod p */ - BN_mod_mul(u, u, v, dsa->p, ctx); + BN_rand(b, BN_num_bits(q), -1, 0); /* a */ + BN_mod(b, b, q, ctx); + BN_sub(v, q, b); + BN_mod_exp(v, g, v, p, ctx); /* g^(q - b) mod p */ + BN_mod_exp(u, g, b, p, ctx); /* g^b mod p */ + BN_mod_mul(u, u, v, p, ctx); temp = BN_is_one(u); fprintf(stderr, "Confirm g^(q - b) g^b = 1 mod p: %s\n", temp == 1 ? @@ -1162,28 +1176,29 @@ gen_iffkey( BN_free(u); BN_free(v); BN_free(w); BN_CTX_free(ctx); return (NULL); } - dsa->priv_key = BN_dup(b); /* private key */ - dsa->pub_key = BN_dup(v); /* public key */ + pub_key = BN_dup(v); + priv_key = BN_dup(b); + DSA_set0_key(dsa, pub_key, priv_key); /* * Here is a trial round of the protocol. First, Alice rolls * random nonce r mod q and sends it to Bob. She needs only * q from parameters. */ - BN_rand(r, BN_num_bits(dsa->q), -1, 0); /* r */ - BN_mod(r, r, dsa->q, ctx); + BN_rand(r, BN_num_bits(q), -1, 0); /* r */ + BN_mod(r, r, q, ctx); /* * Bob rolls random nonce k mod q, computes y = k + b r mod q * and x = g^k mod p, then sends (y, x) to Alice. He needs * p, q and b from parameters and r from Alice. */ - BN_rand(k, BN_num_bits(dsa->q), -1, 0); /* k, 0 < k < q */ - BN_mod(k, k, dsa->q, ctx); - BN_mod_mul(v, dsa->priv_key, r, dsa->q, ctx); /* b r mod q */ + BN_rand(k, BN_num_bits(q), -1, 0); /* k, 0 < k < q */ + BN_mod(k, k, q, ctx); + BN_mod_mul(v, priv_key, r, q, ctx); /* b r mod q */ BN_add(v, v, k); - BN_mod(v, v, dsa->q, ctx); /* y = k + b r mod q */ - BN_mod_exp(u, dsa->g, k, dsa->p, ctx); /* x = g^k mod p */ + BN_mod(v, v, q, ctx); /* y = k + b r mod q */ + BN_mod_exp(u, g, k, p, ctx); /* x = g^k mod p */ /* * Alice verifies x = g^y v^r to confirm that Bob has group key @@ -1191,9 +1206,9 @@ gen_iffkey( * original r. We omit the detail here thatt only the hash of y * is sent. */ - BN_mod_exp(v, dsa->g, v, dsa->p, ctx); /* g^y mod p */ - BN_mod_exp(w, dsa->pub_key, r, dsa->p, ctx); /* v^r */ - BN_mod_mul(v, w, v, dsa->p, ctx); /* product mod p */ + BN_mod_exp(v, g, v, p, ctx); /* g^y mod p */ + BN_mod_exp(w, pub_key, r, p, ctx); /* v^r */ + BN_mod_mul(v, w, v, p, ctx); /* product mod p */ temp = BN_cmp(u, v); fprintf(stderr, "Confirm g^k = g^(k + b r) g^(q - b) r: %s\n", temp == @@ -1301,22 +1316,26 @@ gen_gqkey( BIGNUM *u, *v, *g, *k, *r, *y; /* BN temps */ FILE *str; u_int temp; - + BIGNUM *b; + const BIGNUM *n; + /* * Generate RSA parameters for use as GQ parameters. */ fprintf(stderr, "Generating GQ parameters (%d bits)...\n", modulus2); - rsa = RSA_generate_key(modulus2, 65537, cb, _UC("GQ")); + rsa = genRsaKeyPair(modulus2, _UC("GQ")); fprintf(stderr, "\n"); if (rsa == NULL) { fprintf(stderr, "RSA generate keys fails\n%s\n", ERR_error_string(ERR_get_error(), NULL)); return (NULL); } + RSA_get0_key(rsa, &n, NULL, NULL); u = BN_new(); v = BN_new(); g = BN_new(); k = BN_new(); r = BN_new(); y = BN_new(); + b = BN_new(); /* * Generate the group key b, which is saved in the e member of @@ -1324,26 +1343,26 @@ gen_gqkey( * member encrypted by the member private key. */ ctx = BN_CTX_new(); - BN_rand(rsa->e, BN_num_bits(rsa->n), -1, 0); /* b */ - BN_mod(rsa->e, rsa->e, rsa->n, ctx); + BN_rand(b, BN_num_bits(n), -1, 0); /* b */ + BN_mod(b, b, n, ctx); /* * When generating his certificate, Bob rolls random private key * u, then computes inverse v = u^-1. */ - BN_rand(u, BN_num_bits(rsa->n), -1, 0); /* u */ - BN_mod(u, u, rsa->n, ctx); - BN_mod_inverse(v, u, rsa->n, ctx); /* u^-1 mod n */ - BN_mod_mul(k, v, u, rsa->n, ctx); + BN_rand(u, BN_num_bits(n), -1, 0); /* u */ + BN_mod(u, u, n, ctx); + BN_mod_inverse(v, u, n, ctx); /* u^-1 mod n */ + BN_mod_mul(k, v, u, n, ctx); /* * Bob computes public key v = (u^-1)^b, which is saved in an * extension field on his certificate. We check that u^b v = * 1 mod n. */ - BN_mod_exp(v, v, rsa->e, rsa->n, ctx); - BN_mod_exp(g, u, rsa->e, rsa->n, ctx); /* u^b */ - BN_mod_mul(g, g, v, rsa->n, ctx); /* u^b (u^-1)^b */ + BN_mod_exp(v, v, b, n, ctx); + BN_mod_exp(g, u, b, n, ctx); /* u^b */ + BN_mod_mul(g, g, v, n, ctx); /* u^b (u^-1)^b */ temp = BN_is_one(g); fprintf(stderr, "Confirm u^b (u^-1)^b = 1 mod n: %s\n", temp ? "yes" : @@ -1355,27 +1374,30 @@ gen_gqkey( RSA_free(rsa); return (NULL); } - BN_copy(rsa->p, u); /* private key */ - BN_copy(rsa->q, v); /* public key */ + /* setting 'u' and 'v' into a RSA object takes over ownership. + * Since we use these values again, we have to pass in dupes, + * or we'll corrupt the program! + */ + RSA_set0_factors(rsa, BN_dup(u), BN_dup(v)); /* * Here is a trial run of the protocol. First, Alice rolls * random nonce r mod n and sends it to Bob. She needs only n * from parameters. */ - BN_rand(r, BN_num_bits(rsa->n), -1, 0); /* r */ - BN_mod(r, r, rsa->n, ctx); + BN_rand(r, BN_num_bits(n), -1, 0); /* r */ + BN_mod(r, r, n, ctx); /* * Bob rolls random nonce k mod n, computes y = k u^r mod n and * g = k^b mod n, then sends (y, g) to Alice. He needs n, u, b * from parameters and r from Alice. */ - BN_rand(k, BN_num_bits(rsa->n), -1, 0); /* k */ - BN_mod(k, k, rsa->n, ctx); - BN_mod_exp(y, rsa->p, r, rsa->n, ctx); /* u^r mod n */ - BN_mod_mul(y, k, y, rsa->n, ctx); /* y = k u^r mod n */ - BN_mod_exp(g, k, rsa->e, rsa->n, ctx); /* g = k^b mod n */ + BN_rand(k, BN_num_bits(n), -1, 0); /* k */ + BN_mod(k, k, n, ctx); + BN_mod_exp(y, u, r, n, ctx); /* u^r mod n */ + BN_mod_mul(y, k, y, n, ctx); /* y = k u^r mod n */ + BN_mod_exp(g, k, b, n, ctx); /* g = k^b mod n */ /* * Alice verifies g = v^r y^b mod n to confirm that Bob has @@ -1384,9 +1406,9 @@ gen_gqkey( * original r. We omit the detaul here that only the hash of g * is sent. */ - BN_mod_exp(v, rsa->q, r, rsa->n, ctx); /* v^r mod n */ - BN_mod_exp(y, y, rsa->e, rsa->n, ctx); /* y^b mod n */ - BN_mod_mul(y, v, y, rsa->n, ctx); /* v^r y^b mod n */ + BN_mod_exp(v, v, r, n, ctx); /* v^r mod n */ + BN_mod_exp(y, y, b, n, ctx); /* y^b mod n */ + BN_mod_mul(y, v, y, n, ctx); /* v^r y^b mod n */ temp = BN_cmp(y, g); fprintf(stderr, "Confirm g^k = v^r y^b mod n: %s\n", temp == 0 ? "yes" : "no"); @@ -1410,10 +1432,9 @@ gen_gqkey( * dmq1 not used * iqmp not used */ - BN_copy(rsa->d, BN_value_one()); - BN_copy(rsa->dmp1, BN_value_one()); - BN_copy(rsa->dmq1, BN_value_one()); - BN_copy(rsa->iqmp, BN_value_one()); + RSA_set0_key(rsa, NULL, b, BN_dup(BN_value_one())); + RSA_set0_crt_params(rsa, BN_dup(BN_value_one()), BN_dup(BN_value_one()), + BN_dup(BN_value_one())); str = fheader("GQkey", id, groupname); pkey = EVP_PKEY_new(); EVP_PKEY_assign_RSA(pkey, rsa); @@ -1509,7 +1530,7 @@ gen_mvkey( DSA *dsa, *dsa2, *sdsa; /* DSA parameters */ BN_CTX *ctx; /* BN working space */ BIGNUM *a[MVMAX]; /* polynomial coefficient vector */ - BIGNUM *g[MVMAX]; /* public key vector */ + BIGNUM *gs[MVMAX]; /* public key vector */ BIGNUM *s1[MVMAX]; /* private enabling keys */ BIGNUM *x[MVMAX]; /* polynomial zeros vector */ BIGNUM *xbar[MVMAX], *xhat[MVMAX]; /* private keys vector */ @@ -1520,6 +1541,7 @@ gen_mvkey( BIGNUM *bige; /* session encryption key */ BIGNUM *gbar, *ghat; /* public key */ BIGNUM *u, *v, *w; /* BN scratch */ + BIGNUM *p, *q, *g, *priv_key, *pub_key; int i, j, n; FILE *str; u_int temp; @@ -1544,14 +1566,14 @@ gen_mvkey( ctx = BN_CTX_new(); u = BN_new(); v = BN_new(); w = BN_new(); b = BN_new(); b1 = BN_new(); dsa = DSA_new(); - dsa->p = BN_new(); dsa->q = BN_new(); dsa->g = BN_new(); - dsa->priv_key = BN_new(); dsa->pub_key = BN_new(); + p = BN_new(); q = BN_new(); g = BN_new(); + priv_key = BN_new(); pub_key = BN_new(); temp = 0; for (j = 1; j <= n; j++) { s1[j] = BN_new(); while (1) { - BN_generate_prime(s1[j], modulus2 / n, 0, NULL, - NULL, NULL, NULL); + BN_generate_prime_ex(s1[j], modulus2 / n, 0, + NULL, NULL, NULL); for (i = 1; i < j; i++) { if (BN_cmp(s1[i], s1[j]) == 0) break; @@ -1577,21 +1599,20 @@ gen_mvkey( */ temp = 0; while (1) { - BN_one(dsa->q); + BN_one(q); for (j = 1; j <= n; j++) - BN_mul(dsa->q, dsa->q, s1[j], ctx); - BN_copy(dsa->p, dsa->q); - BN_add(dsa->p, dsa->p, dsa->p); - BN_add_word(dsa->p, 1); - if (BN_is_prime(dsa->p, BN_prime_checks, NULL, ctx, - NULL)) + BN_mul(q, q, s1[j], ctx); + BN_copy(p, q); + BN_add(p, p, p); + BN_add_word(p, 1); + if (BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) break; temp++; j = temp % n + 1; while (1) { - BN_generate_prime(u, modulus2 / n, 0, 0, NULL, - NULL, NULL); + BN_generate_prime_ex(u, modulus2 / n, 0, + NULL, NULL, NULL); for (i = 1; i <= n; i++) { if (BN_cmp(u, s1[i]) == 0) break; @@ -1608,20 +1629,22 @@ gen_mvkey( * gcd(g, p - 1) = 1 and g^q = 1. This is a generator of p, not * q. This may take several iterations. */ - BN_copy(v, dsa->p); + BN_copy(v, p); BN_sub_word(v, 1); while (1) { - BN_rand(dsa->g, BN_num_bits(dsa->p) - 1, 0, 0); - BN_mod(dsa->g, dsa->g, dsa->p, ctx); - BN_gcd(u, dsa->g, v, ctx); + BN_rand(g, BN_num_bits(p) - 1, 0, 0); + BN_mod(g, g, p, ctx); + BN_gcd(u, g, v, ctx); if (!BN_is_one(u)) continue; - BN_mod_exp(u, dsa->g, dsa->q, dsa->p, ctx); + BN_mod_exp(u, g, q, p, ctx); if (BN_is_one(u)) break; } + DSA_set0_pqg(dsa, p, q, g); + /* * Setup is now complete. Roll random polynomial roots x[j] * (j = 1...n) for all j. While it may not be strictly @@ -1630,14 +1653,14 @@ gen_mvkey( */ fprintf(stderr, "Generating polynomial coefficients for %d roots (%d bits)\n", - n, BN_num_bits(dsa->q)); + n, BN_num_bits(q)); for (j = 1; j <= n; j++) { x[j] = BN_new(); while (1) { - BN_rand(x[j], BN_num_bits(dsa->q), 0, 0); - BN_mod(x[j], x[j], dsa->q, ctx); - BN_gcd(u, x[j], dsa->q, ctx); + BN_rand(x[j], BN_num_bits(q), 0, 0); + BN_mod(x[j], x[j], q, ctx); + BN_gcd(u, x[j], q, ctx); if (BN_is_one(u)) break; } @@ -1655,26 +1678,26 @@ gen_mvkey( for (j = 1; j <= n; j++) { BN_zero(w); for (i = 0; i < j; i++) { - BN_copy(u, dsa->q); - BN_mod_mul(v, a[i], x[j], dsa->q, ctx); + BN_copy(u, q); + BN_mod_mul(v, a[i], x[j], q, ctx); BN_sub(u, u, v); BN_add(u, u, w); BN_copy(w, a[i]); - BN_mod(a[i], u, dsa->q, ctx); + BN_mod(a[i], u, q, ctx); } } /* - * Generate g[i] = g^a[i] mod p for all i and the generator g. + * Generate gs[i] = g^a[i] mod p for all i and the generator g. */ for (i = 0; i <= n; i++) { - g[i] = BN_new(); - BN_mod_exp(g[i], dsa->g, a[i], dsa->p, ctx); + gs[i] = BN_new(); + BN_mod_exp(gs[i], g, a[i], p, ctx); } /* - * Verify prod(g[i]^(a[i] x[j]^i)) = 1 for all i, j. Note the - * a[i] x[j]^i exponent is computed mod q, but the g[i] is + * Verify prod(gs[i]^(a[i] x[j]^i)) = 1 for all i, j. Note the + * a[i] x[j]^i exponent is computed mod q, but the gs[i] is * computed mod p. also note the expression given in the paper * is incorrect. */ @@ -1683,16 +1706,16 @@ gen_mvkey( BN_one(u); for (i = 0; i <= n; i++) { BN_set_word(v, i); - BN_mod_exp(v, x[j], v, dsa->q, ctx); - BN_mod_mul(v, v, a[i], dsa->q, ctx); - BN_mod_exp(v, dsa->g, v, dsa->p, ctx); - BN_mod_mul(u, u, v, dsa->p, ctx); + BN_mod_exp(v, x[j], v, q, ctx); + BN_mod_mul(v, v, a[i], q, ctx); + BN_mod_exp(v, g, v, p, ctx); + BN_mod_mul(u, u, v, p, ctx); } if (!BN_is_one(u)) temp = 0; } fprintf(stderr, - "Confirm prod(g[i]^(x[j]^i)) = 1 for all i, j: %s\n", temp ? + "Confirm prod(gs[i]^(x[j]^i)) = 1 for all i, j: %s\n", temp ? "yes" : "no"); if (!temp) { return (NULL); @@ -1708,9 +1731,9 @@ gen_mvkey( for (j = 1; j <= n; j++) { for (i = 0; i < n; i++) { BN_set_word(v, i); - BN_mod_exp(v, x[j], v, dsa->q, ctx); - BN_mod_exp(v, g[i], v, dsa->p, ctx); - BN_mod_mul(biga, biga, v, dsa->p, ctx); + BN_mod_exp(v, x[j], v, q, ctx); + BN_mod_exp(v, gs[i], v, p, ctx); + BN_mod_mul(biga, biga, v, p, ctx); } } @@ -1720,13 +1743,13 @@ gen_mvkey( * mod q. If b is changed, the client keys must be recomputed. */ while (1) { - BN_rand(b, BN_num_bits(dsa->q), 0, 0); - BN_mod(b, b, dsa->q, ctx); - BN_gcd(u, b, dsa->q, ctx); + BN_rand(b, BN_num_bits(q), 0, 0); + BN_mod(b, b, q, ctx); + BN_gcd(u, b, q, ctx); if (BN_is_one(u)) break; } - BN_mod_inverse(b1, b, dsa->q, ctx); + BN_mod_inverse(b1, b, q, ctx); /* * Make private client keys (xbar[j], xhat[j]) for all j. Note @@ -1740,7 +1763,7 @@ gen_mvkey( for (j = 1; j <= n; j++) { xbar[j] = BN_new(); xhat[j] = BN_new(); - BN_add(w, dsa->q, s1[j]); + BN_add(w, q, s1[j]); BN_div(w, u, w, s1[j], ctx); BN_zero(xbar[j]); BN_set_word(v, n); @@ -1748,12 +1771,12 @@ gen_mvkey( if (i == j) continue; - BN_mod_exp(u, x[i], v, dsa->q, ctx); + BN_mod_exp(u, x[i], v, q, ctx); BN_add(xbar[j], xbar[j], u); } - BN_mod_mul(xbar[j], xbar[j], b1, dsa->q, ctx); - BN_mod_exp(xhat[j], x[j], v, dsa->q, ctx); - BN_mod_mul(xhat[j], xhat[j], w, dsa->q, ctx); + BN_mod_mul(xbar[j], xbar[j], b1, q, ctx); + BN_mod_exp(xhat[j], x[j], v, q, ctx); + BN_mod_mul(xhat[j], xhat[j], w, q, ctx); } /* @@ -1764,7 +1787,7 @@ gen_mvkey( * additional keys, so we sail on with only token revocations. */ s = BN_new(); - BN_copy(s, dsa->q); + BN_copy(s, q); BN_div(s, u, s, s1[n], ctx); /* @@ -1776,10 +1799,10 @@ gen_mvkey( * changed. */ bige = BN_new(); gbar = BN_new(); ghat = BN_new(); - BN_mod_exp(bige, biga, s, dsa->p, ctx); - BN_mod_exp(gbar, dsa->g, s, dsa->p, ctx); - BN_mod_mul(v, s, b, dsa->q, ctx); - BN_mod_exp(ghat, dsa->g, v, dsa->p, ctx); + BN_mod_exp(bige, biga, s, p, ctx); + BN_mod_exp(gbar, g, s, p, ctx); + BN_mod_mul(v, s, b, q, ctx); + BN_mod_exp(ghat, g, v, p, ctx); /* * Notes: We produce the key media in three steps. The first @@ -1815,8 +1838,9 @@ gen_mvkey( i = 0; str = fheader("MVta", "mvta", groupname); fprintf(stderr, "Generating MV trusted-authority keys\n"); - BN_copy(dsa->priv_key, biga); - BN_copy(dsa->pub_key, b); + BN_copy(priv_key, biga); + BN_copy(pub_key, b); + DSA_set0_key(dsa, pub_key, priv_key); pkey = EVP_PKEY_new(); EVP_PKEY_assign_DSA(pkey, dsa); PEM_write_PKCS8PrivateKey(str, pkey, cipher, NULL, 0, NULL, @@ -1838,11 +1862,8 @@ gen_mvkey( */ fprintf(stderr, "Generating MV server keys\n"); dsa2 = DSA_new(); - dsa2->p = BN_dup(dsa->p); - dsa2->q = BN_dup(dsa->q); - dsa2->g = BN_dup(bige); - dsa2->priv_key = BN_dup(gbar); - dsa2->pub_key = BN_dup(ghat); + DSA_set0_pqg(dsa2, BN_dup(p), BN_dup(q), BN_dup(bige)); + DSA_set0_key(dsa2, BN_dup(ghat), BN_dup(gbar)); pkey1 = EVP_PKEY_new(); EVP_PKEY_assign_DSA(pkey1, dsa2); PEM_write_PKCS8PrivateKey(str, pkey1, cipher, NULL, 0, NULL, @@ -1863,11 +1884,9 @@ gen_mvkey( fprintf(stderr, "Generating %d MV client keys\n", n); for (j = 1; j <= n; j++) { sdsa = DSA_new(); - sdsa->p = BN_dup(dsa->p); - sdsa->q = BN_dup(BN_value_one()); - sdsa->g = BN_dup(BN_value_one()); - sdsa->priv_key = BN_dup(xbar[j]); - sdsa->pub_key = BN_dup(xhat[j]); + DSA_set0_pqg(sdsa, BN_dup(p), BN_dup(BN_value_one()), + BN_dup(BN_value_one())); + DSA_set0_key(sdsa, BN_dup(xhat[j]), BN_dup(xbar[j])); pkey1 = EVP_PKEY_new(); EVP_PKEY_set1_DSA(pkey1, sdsa); PEM_write_PKCS8PrivateKey(str, pkey1, cipher, NULL, 0, @@ -1877,17 +1896,15 @@ gen_mvkey( DSA_print_fp(stderr, sdsa, 0); /* - * The product gbar^k)^xbar[j] (ghat^k)^xhat[j] and E + * The product (gbar^k)^xbar[j] (ghat^k)^xhat[j] and E * are inverses of each other. We check that the product * is one for each client except the ones that have been * revoked. */ - BN_mod_exp(v, dsa2->priv_key, sdsa->pub_key, dsa->p, - ctx); - BN_mod_exp(u, dsa2->pub_key, sdsa->priv_key, dsa->p, - ctx); - BN_mod_mul(u, u, v, dsa->p, ctx); - BN_mod_mul(u, u, bige, dsa->p, ctx); + BN_mod_exp(v, gbar, xhat[j], p, ctx); + BN_mod_exp(u, ghat, xbar[j], p, ctx); + BN_mod_mul(u, u, v, p, ctx); + BN_mod_mul(u, u, bige, p, ctx); if (!BN_is_one(u)) { fprintf(stderr, "Revoke key %d\n", j); continue; @@ -1900,7 +1917,7 @@ gen_mvkey( * Free the countries. */ for (i = 0; i <= n; i++) { - BN_free(a[i]); BN_free(g[i]); + BN_free(a[i]); BN_free(gs[i]); } for (j = 1; j <= n; j++) { BN_free(x[j]); BN_free(xbar[j]); BN_free(xhat[j]); @@ -1945,7 +1962,7 @@ x509 ( * the version to 3. Set the initial validity to the current * time and the finalvalidity one year hence. */ - id = OBJ_nid2sn(md->pkey_type); + id = OBJ_nid2sn(EVP_MD_pkey_type(md)); fprintf(stderr, "Generating new certificate %s %s\n", name, id); cert = X509_new(); X509_set_version(cert, 2L); @@ -2154,6 +2171,56 @@ genkey( fprintf(stderr, "Invalid %s key type %s\n", id, type); return (NULL); } + +static RSA* +genRsaKeyPair( + int bits, + char * what + ) +{ + RSA * rsa = RSA_new(); + BN_GENCB * gcb = BN_GENCB_new(); + BIGNUM * bne = BN_new(); + + if (gcb) + BN_GENCB_set_old(gcb, cb, what); + if (bne) + BN_set_word(bne, 65537); + if (!(rsa && gcb && bne && RSA_generate_key_ex( + rsa, bits, bne, gcb))) + { + RSA_free(rsa); + rsa = NULL; + } + BN_GENCB_free(gcb); + BN_free(bne); + return rsa; +} + +static DSA* +genDsaParams( + int bits, + char * what + ) +{ + + DSA * dsa = DSA_new(); + BN_GENCB * gcb = BN_GENCB_new(); + u_char seed[20]; + + if (gcb) + BN_GENCB_set_old(gcb, cb, what); + RAND_bytes(seed, sizeof(seed)); + if (!(dsa && gcb && DSA_generate_parameters_ex( + dsa, bits, seed, sizeof(seed), NULL, NULL, gcb))) + { + DSA_free(dsa); + dsa = NULL; + } + BN_GENCB_free(gcb); + return dsa; +} + #endif /* AUTOKEY */ diff --git a/contrib/ntp/util/ntp-keygen.html b/contrib/ntp/util/ntp-keygen.html index b7ca2c8..ecf3249 100644 --- a/contrib/ntp/util/ntp-keygen.html +++ b/contrib/ntp/util/ntp-keygen.html @@ -70,7 +70,7 @@ All other files are in PEM-encoded printable ASCII format so they can be embedded as MIME attachments in mail to other sites. - <p>This document applies to version 4.2.8p8 of <code>ntp-keygen</code>. + <p>This document applies to version 4.2.8p9 of <code>ntp-keygen</code>. <div class="node"> <p><hr> @@ -1085,7 +1085,7 @@ the usage text by passing it through a pager program. used to select the program, defaulting to <span class="file">more</span>. Both will exit with a status code of 0. -<pre class="example">ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p7 +<pre class="example">ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9-RC Usage: ntp-keygen [ -<flag> [<val>] | --<name>[{=| }<val>] ]... Flg Arg Option-Name Description -b Num imbits identity modulus bits diff --git a/contrib/ntp/util/ntp-keygen.man.in b/contrib/ntp/util/ntp-keygen.man.in index 6c8b5db..1aeee80 100644 --- a/contrib/ntp/util/ntp-keygen.man.in +++ b/contrib/ntp/util/ntp-keygen.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp-keygen @NTP_KEYGEN_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands" +.TH ntp-keygen @NTP_KEYGEN_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-.JaGB0/ag-lKayA0) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-psaWZm/ag-DsaOYm) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:36 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:41 AM by AutoGen 5.18.5 .\" From the definitions ntp-keygen-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/util/ntp-keygen.mdoc.in b/contrib/ntp/util/ntp-keygen.mdoc.in index d108b60..7e6d2cf 100644 --- a/contrib/ntp/util/ntp-keygen.mdoc.in +++ b/contrib/ntp/util/ntp-keygen.mdoc.in @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_KEYGEN @NTP_KEYGEN_MS@ User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:39:43 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:03:48 AM by AutoGen 5.18.5 .\" From the definitions ntp-keygen-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME |