= Y2K certification

The NTP suite version 4.0.91 (dating from before continuous
version-control history) was tested for Y2K conformance by the AT&T
Freeware project.

== Test notes

............................................................................
Name of the Application: xntp

Version Number:  4.0.91

Download Size: 4541953 bytes

Downloaded from: http://www.eecis.udel.edu/~ntp/

Operating Systems Supported: many

Operating Systems Tested: unix

Testing

Dates tested (CPU clock set)

	1999-12-31
	2000-01-01
	2000-02-29

	Critical fragments of code tested with other dates by special
	algorithms.

Hardware Platform: Sun Sparc

OS: Solaris 2.6

Compiler: gcc

Version: 2.8.1

Repairs:  9

No. of files Repaired: 13


Compilation of Patches Required: yes

Results Description:

1)	Tested suspicious code.

2)	Repaired problem code and added documentation to ntp.h.

3)	Verified ntpd works on critical Y2K dates.


Comments:

1)	Errors were found in improper use of tm_year within struct tm,
	calculations that did not support year 2000 as a leap year
	(it truly is, despite any unchanged comments remaining in
	the NTP source), and some incorrect date calculations, while
	not traditional Y2K errors, would break in the year 2000.

2)	include/ntpd.h
    	Added some definitions and documentation about the right way
        of doing things.  Definitions used by most, if not all, of
        the Y2K repairs.

Cautions:

1)	Some of the Y2K repairs were to reference clock drivers that
	we did not have the local hardware to test.  While I believe
	the changes are sound, they really need to be tested.
	This includes:

		refclock_arc.c
		refclock_heath.c
		refclock_hpgps.c

	Also, parseutil/dcfd.c is another hardware dependent module that
	was repaired without live testing.

Non-Y2K Problems Observed:

1)	Inconsistent casts of variables containing time values may
	make expansion to 64 bit integer values in a portable manner
	difficult.

2)	libntp/caltontp.c:
        Has logic I believe will fail starting in year 2100 or so.
        Left unchanged/untested as it works well beyond basic NTP 2036
	limit checked by check_y2k.c.
        If NTP is implemented on 64-bit machines, this should be fixed

3)	ntpd/refclock_acts.c:
	ACTS time format has changed somewhat since the code was written.
	In particular the '*' '#' character switch no longer occurs...
	only '*' is typed.

      NOTE: Author (falsely) stated Y2K is NOT a leap year when it
      really is.

      TRUTH: ACTS will go beyond Y2K: it uses FourDigitYear % 100 values
      for year so year 2000 will revert to "00".


4)     ntpd/refclock_oncore.c
       Some very strange logic in manipulating year values:
       1122         instance->pp->year = buf[6]*256+buf[7];
       Multiply by 256????

    Response from PHK:
       The entire protocol is binary, the year is a 16 bit quantity
       which according to the manual can have the range 1998-2018.
............................................................................

The "Non-Y2K Problems Observed" have been fixed.

== Test results

............................................................................
Script started on Sat Jan  1 04:14:09 2000
[root@timetest ntpdate]# date
Sat Jan  1 04:14:11 EST 2000
[root@timetest ntpdate]# ./ntpdate -b timelord.att.com
14 Jul 13:44:39 ntpdate[11723]: step time server 135.16.xxxx.xxxx offset -14740193.210537 sec
[root@timetest ntpdate]# date
Wed Jul 14 13:44:42 EST 1999
[root@timetest ntpdate]# cd ../ntptrace
[root@timetest ntptrace]# ./ntptrace timelord.att.com
timelord.att.com: stratum 2, offset -0.000879, synch distance 0.07207
timemaster.att.com: stratum 1, offset -0.004876, synch distance 0.03485, refid 'GPS'
[root@timetest ntptrace]# cd -
[root@timetest ntpdate]# date
Mon Feb 28 01:00:04 EST 2000
[root@timetest ntpdate]# ./ntpdate -b timelord.att.com
14 Jul 13:49:01 ntpdate[11760]: step time server 135.16.xxxx.xxxx offset -19739467.533126 sec
[root@timetest ntpdate]# date
Wed Jul 14 13:49:03 EST 1999
[root@timetest ntpdate]# cd -
[root@timetest ntptrace]# ./ntptrace timelord.att.com
timelord.att.com: stratum 2, offset 0.001383, synch distance 0.05644
timemaster.att.com: stratum 1, offset -0.006355, synch distance 0.04178, refid 'GPS'
[root@timetest ntptrace]# cd -
[root@timetest ntpdate]# date
Tue Feb 29 01:00:05 EST 2000
[root@timetest ntpdate]# ./ntpdate -b timelord.att.com
14 Jul 13:57:41 ntpdate[12423]: step time server 135.16.xxxx.xxxx offset -19825349.396585 sec
[root@timetest ntpdate]# date
Wed Jul 14 13:57:43 EST 1999
[root@timetest ntpdate]# cd -
[root@timetest ntptrace]# ./ntptrace timelord.att.com
timelord.att.com: stratum 2, offset -0.000094, synch distance 0.06522
timemaster.att.com: stratum 1, offset -0.010803, synch distance 0.03078, refid 'GPS'
[root@timetest ntptrace]# cd -
[root@timetest ntpdate]# date
Wed Mar  1 01:00:03 EST 2000
[root@timetest ntpdate]# ./ntpdate -b timelord.att.com
14 Jul 13:58:10 ntpdate[12525]: step time server 135.16.xxxx.xxxx offset -19911719.766061 sec
[root@timetest ntpdate]# date
Wed Jul 14 13:58:12 EST 1999
[root@timetest ntpdate]# cd -
[root@timetest ntptrace]# ./ntptrace timelord.att.com
timelord.att.com: stratum 2, offset -0.000719, synch distance 0.06561
timemaster.att.com: stratum 1, offset -0.013598, synch distance 0.03116, refid 'GPS'

Script done on Wed Jul 14 13:58:28 1999

RESULTS OK.
--------------------END OF TEST1--------------------


### freeware test configuration
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 0
driftfile drift.log


ntpdate timelord.att.com
server 135.16.xxxx.xxxx stratum 1, offset 0.000033, delay 0.02975
31 Dec 23:58:59 ntpdate[83551]: adjust time server 135.16.74.3 offset 0.039057 s
ec

ntpdate timelord.att.com
server 135.16.xxxx.xxxx stratum 1, offset 0.000019, delay 0.02504
01 Jan 00:01:05 ntpdate[8352]: adjust time server 135.16.74.3 offset 0.039057 s
ec

ntpdate timelord.att.com
server 135.25.xxxx.xxxx, stratum 1, offset -0.000023, delay 0.02731
29 Feb 00:02:15 ntpdate[8353]: adjust time server 135.25.xxxx.xxxx offset -0.000023 sec
............................................................................

== AT&T README

This is most of the AT&T README file for the Y2K patches.
Some now-irrelevant material has been removed.

............................................................................

AT&T Freeware Year 2000 Certification

This is the "readme" file for the freeware application which has
been certified by AT&T Labs as part of the "Freeware Y2K
Certification Project".

DISCLAIMER

    For its own internal business purposes AT&T Labs has
    assessed various programs obtained from the Internet for
    Year-2000 (Y2K) readiness that were not sufficiently certified
    for AT&T's needs.  As a service to the computing community
    AT&T Labs is freely releasing this information to the
    public as a series of "Y2K Application Updates", one update
    for what AT&T Labs considers an "application".

    For use outside of AT&T, AT&T Labs is not certifying this
    information is correct, that any software, including repairs
    and tests, will help others in any way, survive the year
    2000, nor work with current applications. Nor is AT&T
    taking any responsibility for repairing any Y2K problems
    that were overlooked nor repairing any bugs in any
    "Y2K Application Update". All risk of using this Y2K
    Application Update remains with the user who is expected
    to test that this update meets their needs.

    LICENSE TO USE
    AT&T's intent is to ensure these Y2K patches are freely
    available to the public but will not maintain a public web site
    for their distribution. Any copyright claims only only apply to
    the specific changes made by Y2K to the code. Any original
    copyright holders retain rights to unchanged code. Wherever
    possible patches will be returned to the current owner(s) of the code.

    Owners and publishers are free to incorporate appropriate patches,
    upgrades, and tests within legal future distributions as long as
    they include the credit:

      Various Y2K updates and tests provided by AT&T Labs.
      Copyright AT&T.

    and any AT&T "comments" on the changed code remain intact.

    Any distributions of the updates must keep the entire update
    intact, without any change, including copyright and disclaimer
    information.  If integrated with the original application items
    not needed for an integrated release may be omitted. When
    distributed on the same media as the original application there
    must be no charge for this "Y2k Application Update".

    CONTACTS
    If you find any overlooked Y2K problems, or have other strictly Y2K
    repairs for the software, please E-mail:

            y2k@y2k.labs.att.com

    This address is strictly reserved for the topic at hand.
    AT&T makes no commitments to answer any E-mail
    to this address.  AT&T is free to use any submissions,
    including publishing in future Y2K related release notes,
    without payment or advance notice to the submitting person or
    persons... appropriate credit will be given in any future
    publications to the first person submitting something that
    AT&T uses.


SUPPORT

See http://y2k.labs.att.com/freeware.  There will be no ongoing
support for the project. But if you have some very important issue,
you may email us at: y2k@y2k.labs.att.com
............................................................................

//end
