Received: from louie.udel.edu by huey.udel.edu id aa07183; 13 Mar 94 23:57 EST Received: from hpsdlo.sdd.hp.com by louie.udel.edu id aa17483; 13 Mar 94 23:50 EST Received: from hpsdlz.sdd.hp.com by hpsdlo.sdd.hp.com with SMTP (1.36.108.4/15.5+IOS 3.21+sdd) id AA07032; Sun, 13 Mar 1994 20:50:23 -0800 Received: from localhost by hpsdlz.sdd.hp.com with SMTP (1.36.108.4/15.5+IOS 3.21+sdd) id AA05726; Sun, 13 Mar 1994 20:50:21 -0800 Message-Id: <9403140450.AA05726@hpsdlz.sdd.hp.com> To: mills@udel.edu Subject: patches for xntpd Date: Sun, 13 Mar 1994 20:50:21 -0800 From: Ken Stone Ok Dave, I guess I'll take a poke at the "m" version for cleanup and updates. This should take care of the newly released 9.03 for s300/s400 which has the adjtime(2) syscall. Also, cleanup in readiness for 10.0 all around. -- Ken P.S. How is your HP hardware/software deal going ? I haven't heard anything lately. First do a "rm */hpux10+*" as I have renamed all that to hpux-adj ... that 9.03 blew me out of the water on the naming scheme :-) Then unshar the following ... it will add a few new files and give you diff to apply (diffs.hpux). #---------------------------------- cut here ---------------------------------- # This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # # Wrapped by Source Hacker on Sun Mar 13 20:47:57 1994 # # This archive contains: # compilers/hpux-adj.cc compilers/hpux-adj.gcc # machines/hpux-adj scripts/hpadjtime.sh # diffs.hpux # # Error checking via wc(1) will be performed. # Error checking via sum(1) will be performed. LANG=""; export LANG PATH=/bin:/usr/bin:$PATH; export PATH if sum -r /dev/null 2>&1 then sumopt='-r' else sumopt='' fi echo x - compilers/hpux-adj.cc cat >compilers/hpux-adj.cc <<'@EOF' COMPILER=cc +O1 @EOF set `sum $sumopt compilers/hpux-adj.gcc <<'@EOF' COMPILER=gcc -O2 @EOF set `sum $sumopt machines/hpux-adj <<'@EOF' SHELL= /bin/sh RANLIB= ls # ar does the work of ranlib under System V DEFS_LOCAL= -DREFCLOCK DEFS= -DHAVE_TERMIOS -DSYS_HPUX=10 AUTHDEFS= -DDES -DMD5 CLOCKDEFS= -DLOCAL_CLOCK COPTS= INSTALL=$(TOP)scripts/install.sh @EOF set `sum $sumopt scripts/hpadjtime.sh <<'@EOF' #! /bin/sh if [ -f /bin/uname -o -f /usr/bin/uname ]; then set `uname -a | tr '[A-Z]' '[a-z]'` case "$1" in hp-ux) case "$3" in *.10.*) val=1 ;; *.09.03) case "$5" in 9000/3*) val=1 ;; *) val=0 ;; esac ;; *) val=0 ;; esac ;; *) esac fi exit $val @EOF set `sum $sumopt diffs.hpux <<'@EOF' *** xntp3.3m.orig/compilers/hpux.cc Thu Sep 2 13:19:56 1993 --- xntp3.3m/compilers/hpux.cc Sun Mar 13 12:10:23 1994 *************** *** 1,2 **** ! COMPILER=cc ! COPTS=+O1 --- 1 ---- ! COMPILER=cc +O1 *** xntp3.3m.orig/compilers/hpux.gcc Thu Sep 2 13:19:59 1993 --- xntp3.3m/compilers/hpux.gcc Sun Mar 13 12:10:29 1994 *************** *** 1,2 **** ! COMPILER=gcc ! COPTS=-O2 --- 1 ---- ! COMPILER=gcc -O2 *** xntp3.3m.orig/hints/hpux Fri Dec 3 02:28:57 1993 --- xntp3.3m/hints/hpux Sun Mar 13 20:20:38 1994 *************** *** 1,59 **** This file hopefully describes the whatever and however of how to get xntp ! running on hpux 8.0 and later s300, s700, and s800. First off, all the standard disclaimers hold here ... HP doesn't have anthing to do with this stuff. I fool with it in my spare time because we use it and because I like to. We just happen to have a lot of HP machines around here :-) ! Xntp has been in use here for several months and has a fair amount of mileage on various HP platforms within the company. I can't really guarantee bug fixes but I'd certainly like to hear about bugs and I won't hestitate to look at any fixes sent to me. ! Now lets talk OS. If you don't have 8.0 or later, pretty much hang it up now. ! This stuff has run here on 8.0 s300, s700, and s800. Its possible that it ! runs on 7.0 but I have not tried v3 code on 7.0 at all. ! [Note that recent reports state that this release does in fact run on HP ! 300 and 400 boxes, which run 7.0 - Ed.] ! Next, let me explain a bit about how this stuff works on HP-UX since we don't have adjtime(2). The directory adjtime contains libadjtime.a and the adjtimed daemon. Instead of the adjtime(2) system call, we use a library routine to talk to adjtimed thru message queues. Adjtimed munges into /dev/kmem and causes the clock to skew properly as needed. PLEASE NOTE that the adjtime code provided here is NOT a general replacement for adjtime(2) ... use of ! this adjtime(3)/adjtimed(8) other than here may yield very odd results. What to do to get this stuff running ? ! * cd .. ! * Say "make makeconfig" ! * cd .. ! * Say "make", sit back for a few minutes. * cd authstuff * Say "./authcert < certdata" and check the output. Every line should end with "OK" ... if not, we got trouble. * Now try "./authspeed auth.samplekeys". What we want to remember here is the "authentication delay in CPU time" ! * cd .. ! * Now we need to install this stuff ... make install will not work ! unless you have replaced the SYSV install command with a BSD ! compatible version. So ... the simplest thing to do is run ! make -n install and do manually what it would have done. * I'd suggest reading the xntp docs about now :-) ... seriously !! ! * Check out the docs and the stuff in xntp/conf and build a config ! file ... put it in /usr/local/etc/xntp.conf (or where ever you ! defined the config file to be in Config). One thing we have ! added to this version of xntpd is a way to select config files ! if you are sharing /usr/local thru NFS or whatever. If the ! file /usr/local/etc/xntp.conf happens to be a directory, the files ! in that directory are searched until a match is found. The rules ! for a match are: 1. Our hostname 2. default. (as in default.375 or default.850) --- 1,63 ---- + Last update: Sun Mar 13 15:05:31 PST 1994 + This file hopefully describes the whatever and however of how to get xntp ! running on hpux 7.0 and later s300. s400, s700, and s800. First off, all the standard disclaimers hold here ... HP doesn't have anthing to do with this stuff. I fool with it in my spare time because we use it and because I like to. We just happen to have a lot of HP machines around here :-) ! Xntpd has been in use here for several years and has a fair amount of mileage on various HP platforms within the company. I can't really guarantee bug fixes but I'd certainly like to hear about bugs and I won't hestitate to look at any fixes sent to me. ! Now lets talk OS. If you don't have 7.0 or later, pretty much hang it up now. ! This stuff has run here on pretty much everything from 8.0 upward on s300, ! s700, and s800. It is known to run on 7.0 s300/s400 but all reports are ! from the field and not my personal experience. ! If you are lucky enough to have a s300 or s400 with 9.03, then you no longer ! have to worry about adjtimed as HP-UX now has adjtime(2). The rest of you ! will have to wait on 10.0 which will have adjtime(2) and a supported though ! a bit older version of xntpd. ! Next, let me explain a bit about how this stuff works on HP-UX's that do not have adjtime(2). The directory adjtime contains libadjtime.a and the adjtimed daemon. Instead of the adjtime(2) system call, we use a library routine to talk to adjtimed thru message queues. Adjtimed munges into /dev/kmem and causes the clock to skew properly as needed. PLEASE NOTE that the adjtime code provided here is NOT a general replacement for adjtime(2) ... use of ! this adjtime(3)/adjtimed(8) other than with xntpd may yield very odd results. What to do to get this stuff running ? ! * If you are running an OS less than 10.0 or do not have a s300/s400 ! with 9.03 or better ! -> cd machines ! -> vi hpux ! -> (change -DSYS_HPUX=? to match whatever you are running [7,8,9]) ! -> cd .. ! * Say "make makeconfig" + * Say "make", sit back for a few minutes. + * cd authstuff * Say "./authcert < certdata" and check the output. Every line should end with "OK" ... if not, we got trouble. * Now try "./authspeed auth.samplekeys". What we want to remember here is the "authentication delay in CPU time" + * cd .. ! * Say "make install" * I'd suggest reading the xntp docs about now :-) ... seriously !! ! * One thing I have added to this version of xntpd is a way to select ! config files if you are sharing /usr/local thru NFS or whatever. ! If the file /usr/local/etc/xntp.conf happens to be a directory, the ! files in that directory are searched until a match is found. The ! rules for a match are: 1. Our hostname 2. default. (as in default.375 or default.850) *************** *** 72,76 **** --- 76,92 ---- * On some 320's and 835's we have had to run adjtimed with "-p 45" or so to get rid of syslog messages about "last adjust did not finish". + + * At 9.0, there is a problem with DIAGMON (patch available from the + response center) which causes it to delete the message queue that + adjtimed/xntpd use to communicate. (see next note for result) + + * Xntpd has been known to get really ticked off when adjtime() fails + which is usually only while running the emulation code on HP-UX. + When it gets mad, it usually jumps the clock into never never land. + Possible reasons for this are adjtimed being killed or just never + started or adjtimed being completely swapped out on a really busy + machine (newer adjtimed try to lock themselves in memory to prevent + this one). Anything else ... just drop me a line at ken@sdd.hp.com *** xntp3.3m.orig/include/ntp_machine.h Sun Feb 27 19:34:59 1994 --- xntp3.3m/include/ntp_machine.h Sun Mar 13 15:35:33 1994 *************** *** 334,341 **** #define setlinebuf(f) setvbuf(f, NULL, _IOLBF, 0) #define NO_SIGNED_CHAR_DECL #define LOCK_PROCESS - #define HAVE_NO_NICE /* HPUX uses rtprio instead */ #define RETSIGTYPE void #if (SYS_HPUX < 10) #define NOKMEM #else --- 334,345 ---- #define setlinebuf(f) setvbuf(f, NULL, _IOLBF, 0) #define NO_SIGNED_CHAR_DECL #define LOCK_PROCESS #define RETSIGTYPE void + #if (SYS_HPUX < 9) + #define HAVE_NO_NICE /* HPUX uses rtprio instead */ + #else + #define HAVE_BSD_NICE /* new at 9.X */ + #endif #if (SYS_HPUX < 10) #define NOKMEM #else *** xntp3.3m.orig/lib/Makefile.tmpl Wed Feb 2 21:20:13 1994 --- xntp3.3m/lib/Makefile.tmpl Sun Mar 13 16:27:50 1994 *************** *** 49,55 **** $(LIBNAME).a: $(OBJS) ar rv $@ $? -rm -f $? ! @if ( hp-pa || hp-mc680x0 ) > /dev/null 2>&1; then \ ( cd ../adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" ) && ar rv $@ ../adjtime/adjtime.o; \ else \ :; \ --- 49,55 ---- $(LIBNAME).a: $(OBJS) ar rv $@ $? -rm -f $? ! @if ( ../scripts/hpadjtime.sh ) > /dev/null 2>&1; then \ ( cd ../adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" ) && ar rv $@ ../adjtime/adjtime.o; \ else \ :; \ *** xntp3.3m.orig/scripts/Guess.sh Wed Jan 26 15:26:03 1994 --- xntp3.3m/scripts/Guess.sh Sun Mar 13 14:10:19 1994 *************** *** 40,46 **** guess="ultrix" ;; hp-ux) case "$3" in ! *.10.*) guess="hpux10+" ;; *) guess="hpux" ;; esac ;; --- 40,50 ---- guess="ultrix" ;; hp-ux) case "$3" in ! *.10.*) guess="hpux-adj" ;; ! *.09.03) case "$5" in ! 9000/3*) guess="hpux-adj" ;; ! *) guess="hpux" ;; ! esac ;; *) guess="hpux" ;; esac ;; *** xntp3.3m.orig/util/tickadj.c Wed Feb 2 21:20:17 1994 --- xntp3.3m/util/tickadj.c Sun Mar 13 13:55:53 1994 *************** *** 388,393 **** --- 388,409 ---- #endif #endif + #if defined(SYS_HPUX) + #define X_TICKADJ 0 + #define X_TICK 1 + #define X_DEF + static struct nlist nl[] = + #ifdef hp9000s300 + { {"_tickadj"}, + {"_old_tick"}, + #else + { {"tickadj"}, + {"old_tick"}, + #endif + {""}, + }; + #endif + #if !defined(X_DEF) #define X_TICKADJ 0 #define X_TICK 1 *************** *** 408,413 **** --- 424,430 ---- "/kernel/unix", "/386bsd", "/netbsd", + "/hp-ux", NULL }; struct stat stbuf; *** xntp3.3m.orig/xntpd/ntp_loopfilter.c Sun Feb 27 19:36:16 1994 --- xntp3.3m/xntpd/ntp_loopfilter.c Sun Mar 13 14:03:54 1994 *************** *** 349,356 **** } } #endif /* HAVE_BSD_TTYS */ - fdpps = fd232; #endif /* HPUXGADGET */ /* * Insert in device list. --- 349,356 ---- } } #endif /* HAVE_BSD_TTYS */ #endif /* HPUXGADGET */ + fdpps = fd232; /* * Insert in device list. @EOF set `sum $sumopt