File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / NOTES.y2kfixes
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:37 2012 UTC (12 years, 6 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: Name of the Application: xntp
    2: 
    3: Version Number:  4.0.91
    4: 
    5: Download Size: 4541953 bytes
    6: 
    7: Downloaded from: http://www.eecis.udel.edu/~ntp/
    8: 
    9: Operating Systems Supported: many
   10: 
   11: Operating Systems Tested: unix
   12: 
   13: Testing
   14: 
   15: Dates tested (CPU clock set)
   16: 
   17: 	1999-12-31
   18: 	2000-01-01
   19: 	2000-02-29
   20: 
   21: 	Critical fragments of code tested with other dates by special
   22: 	algorithms.
   23: 
   24: Hardware Platform: Sun Sparc
   25: 
   26: OS: Solaris 2.6
   27: 
   28: Compiler: gcc
   29: 
   30: Version: 2.8.1
   31: 
   32: Repairs:  9
   33: 
   34: No. of files Repaired: 13
   35: 
   36: 
   37: Compilation of Patches Required: yes
   38: 
   39: Results Description:
   40: 
   41: 1)	Tested suspicious code.
   42: 
   43: 2)	Repaired problem code and added documentation to ntp.h.
   44: 
   45: 3)	Verified ntpd works on critical Y2K dates.
   46: 
   47: 
   48: Comments:
   49: 
   50: 1)	Errors were found in improper use of tm_year within struct tm,
   51: 	calculations that did not support year 2000 as a leap year
   52: 	(it truly is, despite any unchanged comments remaining in 
   53: 	the NTP source), and some incorrect date calculations, while
   54: 	not traditional Y2K errors, would break in the year 2000.
   55: 
   56: 2)	include/ntpd.h
   57:     	Added some definitions and documentation about the right way
   58:         of doing things.  Definitions used by most, if not all, of
   59:         the Y2K repairs.
   60: 
   61: Cautions:
   62: 
   63: 1)	Some of the Y2K repairs were to reference clock drivers that
   64: 	we did not have the local hardware to test.  While I believe
   65: 	the changes are sound, they really need to be tested.
   66: 	This includes:
   67: 
   68: 		refclock_arc.c
   69: 		refclock_heath.c
   70: 		refclock_hpgps.c
   71: 
   72: 	Also, parseutil/dcfd.c is another hardware dependent module that
   73: 	was repaired without live testing.
   74: 
   75: Non-Y2K Problems Observed:
   76: 
   77: 1)	Inconsistent casts of variables containing time values may
   78: 	make expansion to 64 bit integer values in a portable manner
   79: 	difficult.
   80: 
   81: 2)	libntp/caltontp.c:
   82:         Has logic I believe will fail starting in year 2100 or so.
   83:         Left unchanged/untested as it works well beyond basic NTP 2036 
   84: 	limit checked by check_y2k.c.
   85:         If NTP is implemented on 64-bit machines, this should be fixed
   86: 
   87: 3)	ntpd/refclock_acts.c:
   88: 	ACTS time format has changed somewhat since the code was written.
   89: 	In particular the '*' '#' character switch no longer occurs...
   90: 	only '*' is typed.
   91: 
   92:       NOTE: Author (falsely) stated Y2K is NOT a leap year when it 
   93:       really is.
   94: 
   95:       TRUTH: ACTS will go beyond Y2K: it uses FourDigitYear % 100 values
   96:       for year so year 2000 will revert to "00".
   97: 
   98: 
   99: 4)     ntpd/refclock_oncore.c
  100:        Some very strange logic in manipulating year values:
  101:        1122         instance->pp->year = buf[6]*256+buf[7];
  102:        Multiply by 256????
  103:  
  104:     Response from PHK:
  105:        The entire protocol is binary, the year is a 16 bit quantity 
  106:        which according to the manual can have the range 1998-2018. 
  107:  

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>