# PaCkAgE DaTaStReAm DLMxntp3 1 2148 # end of header 070701000109cc000081a400000064000000640000000132fcde72000000ae000000200000001b00000000000000000000001100000009DLMxntp3/pkginfoPKG=DLMxntp3 NAME=xntp3 ARCH=Solaris 2.5.1 VERSION=5.87 CATEGORY=application VENDOR=David L. Mills EMAIL=mills@udel.edu PSTAMP=D.J. Gregor BASEDIR=/opt/DLMxntp3 CLASSES=none 070701000109cb000081a400000064000000640000000132fcde77000013c5000000200000001b00000000000000000000001000000009DLMxntp3/pkgmap: 1 2148 1 f none /etc/init.d/xntp 0755 root root 1206 26158 855432808 1 l none /etc/rc1.d/K73xntp=/etc/init.d/xntp 1 l none /etc/rc2.d/S73xntp=/etc/init.d/xntp 1 d none /var/opt/DLMxntp3 0755 root root 1 d none /var/opt/DLMxntp3/etc 0755 root root 1 f none README.solaris 0644 root root 692 60325 855432770 1 d none bin 0755 root root 1 f none bin/ntpdate 0755 root root 54872 3089 855432281 1 f none bin/ntpq 0755 root root 77300 34261 850791582 1 f none bin/ntptrace 0755 root root 27060 41054 850791582 1 f none bin/tickadj 0755 root root 10376 32512 850791582 1 f none bin/xntpd 0755 root root 210816 23153 855432142 1 f none bin/xntpdc 0755 root root 77704 2134 850791583 1 d none examples 0755 root root 1 f none examples/README 0644 root root 907 17891 850790748 1 f none examples/baldwin.conf 0644 root root 1601 3566 850790748 1 f none examples/beauregard.conf 0644 root root 919 10458 850790748 1 f none examples/dewey.conf 0644 root root 1606 62598 850790749 1 f none examples/grundoon.conf 0644 root root 7483 48423 850790749 1 f none examples/malarky.conf 0644 root root 919 14137 850790749 1 f none examples/pogo.conf 0644 root root 1335 43001 850790749 1 f none examples/xntp.init-script 0644 root root 830 64623 850791224 1 d none html 0755 root root 1 f none html/HTML.diff 0644 root root 96197 17541 850790805 1 f none html/HTMLPrimer.html 0644 root root 41128 8182 850790805 1 f none html/accopt.html 0644 root root 6600 9783 850790805 1 f none html/authcert.html 0644 root root 1813 61698 850790805 1 f none html/authopt.html 0644 root root 5925 4989 850790805 1 f none html/authspeed.html 0644 root root 1251 42246 850790805 1 f none html/biblio.html 0644 root root 9277 26004 850790805 1 f none html/build.html 0644 root root 7152 61294 850790805 1 f none html/clockopt.html 0644 root root 8471 39602 850790805 1 f none html/config.html 0644 root root 6062 55940 850790805 1 f none html/confopt.html 0644 root root 8908 13145 850790805 1 f none html/copyright.html 0644 root root 5114 34607 850790806 1 f none html/debug.html 0644 root root 15010 11463 850790806 1 f none html/driver1.html 0644 root root 5939 7756 850790806 1 f none html/driver10.html 0644 root root 3303 26867 850790806 1 f none html/driver11.html 0644 root root 4617 4774 850790806 1 f none html/driver12.html 0644 root root 2388 8067 850790806 1 f none html/driver18.html 0644 root root 9801 27345 850790806 1 f none html/driver19.html 0644 root root 3651 56263 850790806 1 f none html/driver2.html 0644 root root 3957 12508 850790806 1 f none html/driver22.html 0644 root root 4446 62760 850790806 1 f none html/driver23.html 0644 root root 1658 9132 850790806 1 f none html/driver24.html 0644 root root 1564 918 850790807 1 f none html/driver26.html 0644 root root 3370 26793 850790807 1 f none html/driver3.html 0644 root root 3667 50793 850790807 1 f none html/driver4.html 0644 root root 4896 29793 850790807 1 f none html/driver5.html 0644 root root 4799 3720 850790807 1 f none html/driver6.html 0644 root root 5247 56085 850790807 1 f none html/driver7.html 0644 root root 3586 55547 850790807 1 f none html/driver8.html 0644 root root 9858 18196 850790807 1 f none html/driver9.html 0644 root root 1914 31851 850790807 1 f none html/gadget.html 0644 root root 5477 27816 850790807 1 f none html/hints.html 0644 root root 1224 46031 850790807 1 f none html/howto.html 0644 root root 12576 29577 850790807 1 f none html/index.html 0644 root root 8069 5678 850790807 1 f none html/irig.html 0644 root root 16703 31131 850790807 1 f none html/kern.html 0644 root root 3138 27152 850790807 1 f none html/kernpps.html 0644 root root 1190 42745 850790807 1 f none html/ldisc.html 0644 root root 7500 20531 850790807 1 f none html/md5cert.html 0644 root root 998 15093 850790808 1 f none html/measure.html 0644 root root 2669 52250 850790808 1 f none html/miscopt.html 0644 root root 5723 60653 850790808 1 f none html/monopt.html 0644 root root 8552 42591 850790808 1 f none html/notes.html 0644 root root 65925 10394 850790808 1 f none html/ntpdate.html 0644 root root 6177 26201 850790808 1 f none html/ntpq.html 0644 root root 16577 60420 850790808 1 f none html/ntptime.html 0644 root root 1723 16313 850790808 1 f none html/ntptrace.html 0644 root root 2210 60322 850790808 1 f none html/parsedata.html 0644 root root 13171 52839 850790808 1 f none html/parsenew.html 0644 root root 10385 46164 850790808 1 f none html/patches.html 0644 root root 2772 51287 850790808 1 f none html/porting.html 0644 root root 2994 4092 850790808 1 f none html/pps.html 0644 root root 4562 17946 850790808 1 f none html/prefer.html 0644 root root 18369 57234 850790808 1 f none html/rdebug.html 0644 root root 3817 19561 850790809 1 f none html/refclock.html 0644 root root 4559 61095 850790809 1 f none html/release.html 0644 root root 8030 57206 850790809 1 f none html/tickadj.html 0644 root root 3141 17073 850790809 1 f none html/xntpd.html 0644 root root 6931 14740 850790809 1 f none html/xntpdc.html 0644 root root 22289 58360 850790809 1 i pkginfo 174 13681 855432818 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!070701000109cc000081a400000064000000640000000132fcde72000000ae000000200000001b00000000000000000000000800000009pkginfoPKG=DLMxntp3 NAME=xntp3 ARCH=Solaris 2.5.1 VERSION=5.87 CATEGORY=application VENDOR=David L. Mills EMAIL=mills@udel.edu PSTAMP=D.J. Gregor BASEDIR=/opt/DLMxntp3 CLASSES=none 070701000109cb000081a400000064000000640000000132fcde77000013c5000000200000001b00000000000000000000000700000009pkgmap: 1 2148 1 f none /etc/init.d/xntp 0755 root root 1206 26158 855432808 1 l none /etc/rc1.d/K73xntp=/etc/init.d/xntp 1 l none /etc/rc2.d/S73xntp=/etc/init.d/xntp 1 d none /var/opt/DLMxntp3 0755 root root 1 d none /var/opt/DLMxntp3/etc 0755 root root 1 f none README.solaris 0644 root root 692 60325 855432770 1 d none bin 0755 root root 1 f none bin/ntpdate 0755 root root 54872 3089 855432281 1 f none bin/ntpq 0755 root root 77300 34261 850791582 1 f none bin/ntptrace 0755 root root 27060 41054 850791582 1 f none bin/tickadj 0755 root root 10376 32512 850791582 1 f none bin/xntpd 0755 root root 210816 23153 855432142 1 f none bin/xntpdc 0755 root root 77704 2134 850791583 1 d none examples 0755 root root 1 f none examples/README 0644 root root 907 17891 850790748 1 f none examples/baldwin.conf 0644 root root 1601 3566 850790748 1 f none examples/beauregard.conf 0644 root root 919 10458 850790748 1 f none examples/dewey.conf 0644 root root 1606 62598 850790749 1 f none examples/grundoon.conf 0644 root root 7483 48423 850790749 1 f none examples/malarky.conf 0644 root root 919 14137 850790749 1 f none examples/pogo.conf 0644 root root 1335 43001 850790749 1 f none examples/xntp.init-script 0644 root root 830 64623 850791224 1 d none html 0755 root root 1 f none html/HTML.diff 0644 root root 96197 17541 850790805 1 f none html/HTMLPrimer.html 0644 root root 41128 8182 850790805 1 f none html/accopt.html 0644 root root 6600 9783 850790805 1 f none html/authcert.html 0644 root root 1813 61698 850790805 1 f none html/authopt.html 0644 root root 5925 4989 850790805 1 f none html/authspeed.html 0644 root root 1251 42246 850790805 1 f none html/biblio.html 0644 root root 9277 26004 850790805 1 f none html/build.html 0644 root root 7152 61294 850790805 1 f none html/clockopt.html 0644 root root 8471 39602 850790805 1 f none html/config.html 0644 root root 6062 55940 850790805 1 f none html/confopt.html 0644 root root 8908 13145 850790805 1 f none html/copyright.html 0644 root root 5114 34607 850790806 1 f none html/debug.html 0644 root root 15010 11463 850790806 1 f none html/driver1.html 0644 root root 5939 7756 850790806 1 f none html/driver10.html 0644 root root 3303 26867 850790806 1 f none html/driver11.html 0644 root root 4617 4774 850790806 1 f none html/driver12.html 0644 root root 2388 8067 850790806 1 f none html/driver18.html 0644 root root 9801 27345 850790806 1 f none html/driver19.html 0644 root root 3651 56263 850790806 1 f none html/driver2.html 0644 root root 3957 12508 850790806 1 f none html/driver22.html 0644 root root 4446 62760 850790806 1 f none html/driver23.html 0644 root root 1658 9132 850790806 1 f none html/driver24.html 0644 root root 1564 918 850790807 1 f none html/driver26.html 0644 root root 3370 26793 850790807 1 f none html/driver3.html 0644 root root 3667 50793 850790807 1 f none html/driver4.html 0644 root root 4896 29793 850790807 1 f none html/driver5.html 0644 root root 4799 3720 850790807 1 f none html/driver6.html 0644 root root 5247 56085 850790807 1 f none html/driver7.html 0644 root root 3586 55547 850790807 1 f none html/driver8.html 0644 root root 9858 18196 850790807 1 f none html/driver9.html 0644 root root 1914 31851 850790807 1 f none html/gadget.html 0644 root root 5477 27816 850790807 1 f none html/hints.html 0644 root root 1224 46031 850790807 1 f none html/howto.html 0644 root root 12576 29577 850790807 1 f none html/index.html 0644 root root 8069 5678 850790807 1 f none html/irig.html 0644 root root 16703 31131 850790807 1 f none html/kern.html 0644 root root 3138 27152 850790807 1 f none html/kernpps.html 0644 root root 1190 42745 850790807 1 f none html/ldisc.html 0644 root root 7500 20531 850790807 1 f none html/md5cert.html 0644 root root 998 15093 850790808 1 f none html/measure.html 0644 root root 2669 52250 850790808 1 f none html/miscopt.html 0644 root root 5723 60653 850790808 1 f none html/monopt.html 0644 root root 8552 42591 850790808 1 f none html/notes.html 0644 root root 65925 10394 850790808 1 f none html/ntpdate.html 0644 root root 6177 26201 850790808 1 f none html/ntpq.html 0644 root root 16577 60420 850790808 1 f none html/ntptime.html 0644 root root 1723 16313 850790808 1 f none html/ntptrace.html 0644 root root 2210 60322 850790808 1 f none html/parsedata.html 0644 root root 13171 52839 850790808 1 f none html/parsenew.html 0644 root root 10385 46164 850790808 1 f none html/patches.html 0644 root root 2772 51287 850790808 1 f none html/porting.html 0644 root root 2994 4092 850790808 1 f none html/pps.html 0644 root root 4562 17946 850790808 1 f none html/prefer.html 0644 root root 18369 57234 850790808 1 f none html/rdebug.html 0644 root root 3817 19561 850790809 1 f none html/refclock.html 0644 root root 4559 61095 850790809 1 f none html/release.html 0644 root root 8030 57206 850790809 1 f none html/tickadj.html 0644 root root 3141 17073 850790809 1 f none html/xntpd.html 0644 root root 6931 14740 850790809 1 f none html/xntpdc.html 0644 root root 22289 58360 850790809 1 i pkginfo 174 13681 855432818 07070100016252000041ed00000064000000640000000532fcde7800000000000000200000001b00000000000000000000000600000009reloc07070100016253000081a400000064000000640000000132fcde42000002b4000000200000001b00000000000000000000001500000009reloc/README.solarisWelcome to D.J. Gregor's xntp3 distribution. Here is how things are laid out: bin/ Binaries examples/ Example configuration files html/ The documentation in HTML /var/opt/DLMxntp3/etc/ Configuration files (see below) The configuration files ntp.conf and ntp.keys (optional) live in the /var/opt/DLMxntp3/etc directory, not /etc!! To make this run, you need to install a ntp.conf file in /var/opt/DLMxntp3/etc/. The examples are in examples/, but they probably won't work out of the box without reading the documentation in html/. Good luck, and if you have any suggestings about making this Solaris package better, please let me know!!!! - djg D.J. Gregor 0707010000c022000041ed00000064000000640000000232fcde7800000000000000200000001b00000000000000000000000a00000009reloc/bin0707010000c02e000081a400000064000000640000000132fcdc590000d658000000200000001b00000000000000000000001200000009reloc/bin/ntpdateELF 484 (44hhhh/Ctt/usr/lib/ld.so.1]*/[ uMsi~n0G^2!B$%:C5D9xU_`V({S>)oXQYH}Zkzthqjm<86-7IF1P"J;ElcawTO+4,N=?Avbp3KdLRy&.@fWr#'\|egD  4 H h t $ rd"L 1`@KYes tzp8xY4ˤ@H4Ph U(#l,P4X9m(APhXX_Ը@!dpntwdc{XLh xG|]I Sр ӌ(\6QBbDdN]WzfTmӐv`{ӔaHӘp$] Lp\  (.7FjXux$do,htyԠԤԨ4`Ԭ [O%Դ1L4?Gt PJZcQovԸ@|`ä_LOX,]llH\`tl!&-:d@8K,V^te khwlpptE|to$  Ԩ x%(,M@;aHHh OPTZH gdnǤx|р !ـ@ y @~ &^5`dCN4 T(_HoDxLJ4XPWZ,0`<TsocketDESauth_subkeyststousmidDESauth_setkeyDEScache_dkeysntp_optoptfull_recvbufssys_authkeysys_authdelay_startsigemptysetreadalways_stepDEScache_ekeysatoicomplete_serversemallocustotshiauth_findkeymax_no_completesyslog_filesimple_queryprognameauthusekeysetpriority_environadjtime_endmsyslogntp_syslogmaskmemmovegetpid_iobcache_keyfulllistadj_systimestep_systimedolfptoa__flsbuf_GLOBAL_OFFSET_TABLE_authnumkeysinit_authalarm_flagsigactionprettydateauthhavekeyauthreadkeys__ctypeauthkeynotfoundtstoushigethostbynameauthencryptget_systimeinit_libDESauth_parityatexitfreelistexitauthnumfreekeysopenlogMD5auth2cryptDESzeroekeystolowermallocDESauthdecryptsprintfmfptoaauthencryptionssettimeofdaybindauthnokeyDESauth2crypt_initDESzerodkeysfputssyslogitsys_maxserversstep_systime_realDESauth_dessignal_no_resettimeauthuncachedsys_numserversverboseauthkeylookupssys_authenticate_sys_nerrvsprintfsetvbuffclosesys_errlistMD5Updatesys_clock_offsetselectntp_getoptauth_delkeyscache_flagsauthistrustedstrncpy_DYNAMICauthtrusttstousloauthdecryptprintf__iob_sys_errlistustotslosys_versioncurrent_timeMD5authdecryptstrrchrauth1crypttvu_maxslewsendtonumtoa_exitauth_havekeyntp_optargtsf_maxslewhumanlogtimeenvironperrorinitializingerrnolib_initedntp_opterrVersionstrchrtvtoasys_serversauthkeyuncachedkey_hashallow_set_backwardMD5FinalfdatolfpfgetsutvtoaDESauth1cryptgettimeofday_edata_PROCEDURE_LINKAGE_TABLE_fopenmemsetsys_nerrfcntlsys_clockstrcpyMD5auth_setkeydecodenetnum_etextauth2crypt_lib_versionfflushustotsmidsetitimermemcmpadj_precision_ctypelib_stringbufauthfreekeyslib_nextbufmainDESauthencryptsyslog.udivhumandatememcpystrlennever_stepunpriv_portfdmasklocaltimeMD5authencryptMD5auth1cryptsetlogmask_finintp_optindauthdecryptionsrecvfromcache_keyidkey_filefprintfdebugauth_morememsys_samplessys_timeoutfree_recvbufsdofptoafptoaMD5Initcache_keylenlibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1l3tԸрIԨTQ`Slx(rU[2w_ ,8%DP4\Lh8tY|sXd@^(4q@LX9dp$|Ej @D# @_Kd 4@_G@, @ l"@@_<@_=㿐@/^/^  `    㿐 H!p# -+)/@?#$h""d@vp 78* $!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"P"l!0""!0!0!0!0!0"!0!0!0"##H!0#T#`$#@^`\"c"c%c %c% %cc "c`\@耢 耢 " dh,`"#`\"#@^`\"c@^`\  d`h|"#y"#v""`\@m耢   dh``\@^~ h@ ?@ W*` @*`   2  &㼀 "Q%PL"#I"#G   (&"cĀ  ah d@^K`@^@ @ d* "`h#   c @@^8$" d!` @^2 #   @^-# #䀢 "c d@ah`(6   (* @@ ( $ (# 2 d@ap@] #Ȁ !@y@ V# # d@Ԓa@] @c̀ ؐcd@]a da@Ô@]ϐ @N @0  @]ߔ?"#@J#X  c  $c@`. ,c@]Ô  !t  @]  ?@Ş$  d  d@ac  $c@@@ 2`#@ #@@@]r@'㤀 "  . !d@ i!@] . ,@'' @  .c c& ( q"c/ /?/#@'''''''''#cȑ* ?À`:/%̔ 0@ '@e  ?#2 @ #Ж 2 @  @2  *  @  &  ؀& ؐ &  ' '̒@ Ɣ 0 0@㤀 $ !d!@4  ' 'Ԑ@ 0㤀 $  !d"@ @]##@ ,& ( 6 ,h#c "  8 !d@ ՠ" @\ 8`0`/  c d@\"00  <2` z < w `   =  # jd "P @\ǒ `0c@ϐ 2  T# Zd@\"p0V' X' ؀  ܀ # Hd@\"0D#Ȁ 2 #   0!d#̠" l@ @\ l#̀@  @ x 0 2 #  `d"d#d#@\p `* -  -  2 -   " -  - % %  % % % $ '$'(% ,% Ѐ2 Ԁ  Ѐ 8 Ԁ@: 0 ,, L v " ' ' 0 ?#3` @ : @ @  @@ 2 *  @  ' , 8' '''܀ϔ ?#3` @ : @ @  @@ 2 *  @  '؀ 8' '''?#2 @  2 @  @@ 2  *  @  ' 'Ȑ 'ȕ2`Ȁ`' ' @ :`'쀢?# : 2 @ @  @@ 2  *  @  '耋 8@' '?#@  ?@W*` @% ##  !d@ Q# @  @[zM @ :@ '' &%@ Ր`. !+  " 0+  P T?  ?(R  " +   3`.p @6  `@ @+В` / .0" .`0$  & `@݈ Ѕ(02 & & & & & >& Ѕ(P& T ? & ?(>` & &  @5(0 (, $``0` 䀧@& @ @n h T@  "_  8[ 8W  "S   @8 &@2L   $*G &@ 8C  2?   䀦(@ .@ 4 @/`&&. ؀` ` `  ("```  "`6.?` * `   '?؀ `^& 6)   "?,  6 ?> > ?'?` ݂` ȴ H.?:?H4 . @8&ȴ6 .؀ ` ȁ㿐c  1  h, Y c  hc`#  c  '% h,  @wc h  d@ 9c8< #耢  #쀢    `& #@4  # !d@- 耢 !d  #h# !d@ 耢 !d #@   @   @  㿈#c#Ā@  c ' "c d@ c0 @쀢  dc@ ߔ0@  @Y   4 {4 c h$ `$c*`" $ ( {2 ` h *`   &  㿐   "'  h, @(` c؀@c6 c h㿀"# N@ cH''Ð!@'a"' @X  㿀!#`*` * " @* # ` "㐒㐀`""0"!t"    @X# P# $at e@ F`@XR # +!# '## !! @Xb  7 {7'at@Xb  6! d } e` e`H@ @X$ #Ȑ @XC   !t 2 +` @* @XB#@  e@ ``@X  䀠t  t c"P"c P㿐!t @X ? d   !e @  @ ̒㾐`)%#-+c@W ''  !t@W  ;? d@ a04@# !tP 2?!t@W dې$P ' Dc !t < $c@W՚? $ 8c$P$c $Pt$ ,`%t %`$ 0$p ' ` '܀ y  'ܐ8 ''Г2 ' @' e2'Ѐ 2'@?''?ܚ#ԓ2 @ 2 @  @@ 2  *  @  'Ѐ @'ؐ '؛2`+`2 #2'@   @ @`:`А"@@'''쀠 ' '쀢 #  @WJ    e@ `    㿐# 2 @ >㿐@ 2 @W) 2   @@W# 㿀# !e!e @נ    @  @ @V̘0 @   @VÒ 0 e !`N  1` 0 1 @V#\   / @V @   -e+e!e @Ġ!8   @, @V ,e .@Va` !e@!@V !e@!@Vx !e@!@Vpe@Vla0@ @Ve2@V_ae@VWbe@VSb 'e#e P T@2 @VG2@VAa e@V9b !e @^"    @Ɩ @V)  !e @ "@@V㿐   N! @     N 2 N - +  N +" N`.! @ "z N ' *@V+:` ,`,`@  N"`@N`?! @ ;`.5 N ' *`@V:`, ,    "N N! @ " N  N 2 N  ! # #,@  ,  *2 @$ 2  2, ,  8`  "  8&@&` 㿈 p @U!" L2 " "#"#" " l" "!x" H" @@!''c@ |  `?p( "   $@ 2 $  L ? p("$2 (c  "c2$㌐  ㌁㿐`  ="` L8 ? p*`@$2$( 2$c  "c(" L( 2 "ap , " T `@ ` 㿐@U"@  "@"`0# "#㿐 ? p*`@` `$`@`2`$```S`3`L`2 "`L"`(`( D3`(?# @`>3`( ? p*`@ 2@"@  2@"x?"x#@c"  "c3c   c#?&c#`$ax3`(@ "ax ? p*`@###@"@L  ?p`l*   "`l $  2 $ "  (  㿐 ? p*`@`!`$2@@`#``(#`L!@3`(2'"L`2`$!# 6 ##!@?$##`#`$`#`ax3`(@ "ax ? p*`@###@"@㿐 ? p*`@ # ' $2 @T @T $ ,$ , (`L"@14 (4.$`L 2 $#c  ! c#?$c @S##@S $ , $ ,$ $"4 ( ?`p* $x"  "xp?  " (2 ("@ax##ax"##"@$㿐  Ll`P"l  ` "`  !"@ڔ0@㿐  Ll`("l  `  "`  !"@  @㿐  Ll`"l  `  "`  !"@   @R㿐  Ll`"l  `  "`  !"@  @V@H " "J#H   2H2H   2(("@㽈e@Rb eb@{ U "@RҔ '"@Rz eb@_2  epb?* :  2@* TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT       e(c\젒  ecP  @  e c @ x ec@q@RE 㿀@R5`"O`x{ `w2v '' %! @ j* :  @ $@R @R]`<  * ? $*"?" ` "?` ?"@@!  *` 2` @  "@ "6 + @Q     @ * *`**` *  '**`*@ @ @ @'E   㿀 8 @CĐ"Ā *@ *`!@"Đ @Ql ?6  *2 @Q  *`*` $ *  ,@ * :  $ .:  4 . ?# . . @6 ,*     , @ *@ 8*@@ ` @ "`` -,@:*@ .@ 2 @*@` @ 0*@`@ `*@㿐@Q! e @Œc@Pѐ 㿐   f 㿐 , (!  4@Q@Q ؐ? $ ؐ`@Q``$`*@`ؔ`ؐ? "`ؐ @Q 0 " * ?㿐@" 4( "`\" 0 "( 0 (J 2"( a?*@J@ -[J` W -2 J` 2N"(( "(* @ "`0`0"`0J "`   N`@2N fN . : `:`?2Nf . :` :2 0J " \"0( f (b "(*@" \    8㿐  `  8  @ 㿐 8 Đ"Ā *@ *`!@"Đf4 4 `H4  @O p 8 Đ"Ā *@ *`!@"ba7`! @P'@P#`l *  `<*  #\'l#`#d#hf`#l@O#p(`L  "l`"l  `  "`@!p T@@@6*  @@O  (H`L   "Hl`N"l  @V!p T@_@[@@`@O `?㿐`L  "l`""l !` "`!#@&!p T@/@+㿐!#@@! @Z@ X@OL  @N [&@ ]   !N   ! N*   N  . *@N`  @ *  &@  @&@ 㿈@O1 &# `+`:` #@ :` `<@ & ?#2 @ 2 @  @  ` @*` @& ?@ & & h2`  @(@ 2 *  @ &  & & "@ & 0& "!x㿐    # fap@N! '!p $?#@ 2 @ 2 @    *` @ " "  # f@NR!8@wx#    !f!h@N=  ` ?#6  @ <` @ @ @@@ 2 *  @  ?#6  @ <` @ @ @@@ 2 *  @   2 -  8' ` L6  `?# 6  @ : @  @@ 2 *  @    X 'צ   X  ' 8# {f!f!f! ``  @  ` +`6 + 6 @`     : +`: 㤘 #: @ c <  ?#  :`  @  @@ 2 *  @  @?  ' 8 '# !f@!   @ ( @MS@Mk   f@bl 3 "  "  䀢 ^ '؀䀢` 'ؐ  `+`:`㤘 #:`@ # `<@  '܀`ђ 'ܐ8'?#`@ܓ2 @ 0 @  @` *  @  #`@ " "b ?"b" @   !f"  @㿀 ?#@ 2 @ 2 @  @ఘ  *  @   @" "` #U  ఐ8 "#``` '2+`2 #@ 2 @ @`:`Ъ"@@'''@L֒ #  !f P"X`K @@8@Lp"@'"'' @'А"?'`'"'@L  f@b # !f@"Ȓ@L8`" "` P'L'P'T'XN@L d`7`` 4!䀤/`%2 ,N@`m` %, ,  fb@K0.@L.怢 : N@@LJ@L$N@``` Ґ3b 2, , ,@L5b fb@L00'"` !  ز !!h@L" / !h!f@%#@K!f@L#@K@Lp'@L'3@L  `d f@L#@Kw 㿈`  "`# Ll`Q"l ` $"` '쀦'>? @@ '`@?@ '`@E 4` &@&`㿐 2# @ ? @ " ?  " @&  㿈`H  "`H  L l`"l 0  `6.@``' '@@ '6@@쀦 @'@ '耢  쀠`?㿐x X!#Xab3b0`0`0` 0`0`0`0`(`( <`<  < <(((3b5@((0`(0`<(.`0` <. 0`<(0`580`.`0`. (`(  *2. 6*2.6; 2 220('X@2 2 <(  8(6 @@0`)*@ `0`)*@ `0`)*@ `)*@ 660(` 'X@6 6<(@@0`)*@ `0`)*@ `0`)*@ `)*@`?㿐  XUUU5X@(1 1 1  *@6 @.#/`(@((1 1 (.`1 ( ((6 @1 (`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?( `@@1 ?( `@@`.?(@`7` @ @1 (`@1 ?(`@1 ?(`@1 ?(`@1 ?(`@1 ?( `@1 ?( `@`/`?(``qÄ(@1 1 1  <<<@05X. c/ @((. "1 (1 . (1 .` ("㿈`  "`# Ll`"l  `  +"` '66 '@ '`@? 'Ʋ` 耎 @ '``&@ &`    (`   2`0` 2 ` ( " ``0``$ `?h 8 fĐ"Ā *@ *`!@"Đؒ @H ? @H. .  $,@   , 2 @H* * @ $ *  ,@ $ & … 4 `['D'  ?#!@'Ԁ'Й*''Ȑ '̓+`'А`'Г*'Б* @'А 'Г*'Ԕ @2` @3  @ @2 *  @ 'Ѐ 'А ',Ԁ 4'Ԁ @  , @ *@ 8*@@* @  @ @`@* @@" --@`@:*@ .@2 @*@` @ 0*@`@ `*@x 8 Đ"Ā *@ *`!@"`!'@G#  X *`@ *   #\ #`gl#df@Gc㿀@H '@Gݐ 8 YĐ"Ā *@ *`!@"   cX *  #\f@Gic㿐          8 %Đ"Ā *@ *`!@"Ā f#g g @G6㿐 8 Đ"Ā *@ *`!@"Đg @G`" "H" ;j" &."  v" P.2  `? @6  &  @ & &&  @@*``   `  * *` *   #?  @E  P' '2  ?7 x 8" g`(  `   ` * *` *    @   *`X`2 *`Y *`Z `*`[x   @``` ```` `$`(`,`05ک`4x`8@ -(`0`@:1V@-- 5 ۆ )'-50os (@) 1 =_㯆@ -`'(`0`@*@- - 5*  )-5?Q (@ ) 1 `&؆@ - (`0`@"=㯆@-- 5?ֆ㱆 ) -5"W5㾆 (@) 1 "@ -(`0`@?fᓆ@- - 5)P㎆ 8-5m! 8`< '܄) 1 =b@ (`0`@0,@@ - 53 bQ (@@-53:mc -@) 1 35IJ`]@ - @(`0`@3`S@) @- 536(yb (@܄@-539cȲ -@) 1 3xsa@ -@(`0`@30cֲ@)@- 53=5Ca (@@-53V` - @) 1 3*xa@ - @(`0`@3?;c@)@- 53bٲ (@ @-53#J` -@) 1 ?B@ (`0`@!}⁆@ - 5gX"-5?yN ) 1 )/D@(`0`@㩆@- 5=҆` -5/p ) 1  &߆Ɔ@ (`0`@:I@- 55;̆-5") 1 6u49@(`0`@9@- 5蟆܄-51+e) 1 = HD@1(`0`@ʿ㗆0@ - 5*㧆5@-5?$95 ) 1 VֆÆ@1(`0`@#30@- 5?}5@ -5!aц5) 1 O@1 (`0`@?90@܄- 5(P5@-5ᡆ5 ) 1 =߆₆@1(`0`@/N50@- 5 ⻆5@-5:ᴆ㑆5) 1  & &  @& & 㿐@/C/Cਮ ? ???㿐㿠㿠/var/opt/DLMxntp3/etc/ntp.keysa:bBde:k:o:p:qst:vu%s: encryption delay %s is unlikely %s: number of samples (%d) is invalid %s: timeout %s is undecodeable usage: %s [-bdqsv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] server ... ntpdate%sno servers can be used, exitingno key file, exitting%luauthentication key %s unknownselect() error: %mtransmit(%s) transmit auth to %s transmit to %s receive(%s) receive: packet length %d receive: mode %d stratum %d receive: server not found receive: pkt.org and peer.xmt differ receive: rpkt keyid=%ld sys_authkey=%ld decrypt=%ld receive: authentication %s passedfailedoffset: %s, delay %s no server suitable for synchronization foundstep time server %s offset %s secadjust time server %s offset %s sectoo many servers (> %d) specified, remainder not usedcan't find host %s socket() failed: %mthe NTP socket is in use, exitingbind() fails: %mfcntl(FNDELAY|FASYNC) fails: %msendto(%s): %mCan't adjust the time of day: %mserver %s, stratum %d, offset %s, delay %s server %s, port %d stratum %d, precision %d, leap %c%c, trust %03o refid [%s], delay %s, dispersion %s transmitted %d, in filter %d reference time: %s originate timestamp: %s transmit timestamp: %s filter delay: %-8.8s filter offset:delay %s, dispersion %s offset %s ntpdate 3-5.87 Sat Feb 8 15:04:16 EST 1997 (3)0123456789rcan't open key file %s: %mcannot change keyid 0, key entry `%s' ignoredno key type for key number %ld, entry ignoredinvalid key type for key number %ld, entry ignoredno key for number %ld entry, entry ignoredformat/parity error for DES key %ld, not usedformat/parity error for MD5 key %ld, not used0123456789abcdefNo more memory!amnesia: unknown option -: option requires argument -%lu.%lu.%lu.%luDecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03luallow_set_backward=%d calling step_systime_real from not slewalways systime: offset %s systime: maximum slew: %s%s, remainder = %s -systime: adjtv = %s sec, adjts = %s sec, sys_clock_offset = %s sec Can't adjust time: %mPrevious time adjustment incomplete; residual %s sec step: %s sec, sys_clock_offset = %s sec, adjtv = %s sec, timetv = %s sec Can't set time of day: %mstep: new timetv = %s sec error %d%s%s %s[%d]: %ssigactionDecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%s, %s %2d %4d %2d:%02d:%02d%2d %s %02d:%02d:%02d%s%lu.%06lu-%lu.%06lut'3  4D = $L 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0cPP d'B@;xph`Xz$n6HbZlV~АJĴ>2' 2D V h z } q e Y N.B@R6dv*u*<iN`]rׄQ˨E9."&8J\ nx l !`!"U""#I4#F$=X$j%1|%&%&''( () )|)0*pB*T+df+x,X,Ҝ-L-.@./4/0)0,1>1P2b2t3334s45g56\67P(7:8DL8^98p9:,:; ;<<= ==$>w6>H?kZ?l@_~@ِASAʹBGBC;CD0D E$2EDFVFhG zGHHzHInIJbJ KWK.LK@LRM?dMvN3NO'OPPQQRR~*R<SrNS`TfrTUZUԨVNVWBWX7XY+&Y8ZJZ\[n[\\\]u]^i^_^_"`R4`FaFXajb:|bc.cd"deef ff0gyBgThmfhxiaiۜjUjkIkl=lm2m,n&>nPobotppqq|qrprsestY(t:uMLu^vApvw5wx)xyyznbVK?3'   ~ r f Z NB6+ui]RF:." y m !a!"U"#I#$=$%1%&&&''(())|)*p*+d+,Y,-M-.A./5/0)011223334t45h56\67P78D8989:-:;!;<<= ==>w>?k?@_@ATABHBC<CD0DE$EFFG GHH{HIoIJcJKWKLKLM?MN4NO(OPPQQRR~RSrSTfTU[UVOVWCWX7XY+YZZ[[\\\]v]^j^_^_`R`aFab:bc/cd#deef ffgyghmhibijVjkJkl>lm2mn&nooppqq}qrqrsestYtuMuvAvw6wx*xyy  !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqqrstuvwxy $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                                     $ $ 040 4 $ $ 0 4 0 4 $  $ 040 4  $  $ 0 4 0 4                  ""  ""  ""  ""  ""  ""  ""  ""       $$$$$$$$        $$$$$$$$                0 0 0 0 0  0  0  0  0 0 0 0 0  0  0  0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!   !!    !!! !!! !  ! !!!! !                                                                          xph`XPH@80(!2UCSduq8T o6->O`Rqn5Q):mK4[l}Pl3%N6FWhjy1Mi0 1BSLdth/ȽلK -f>-N_pIe,H)9J[dl+|Gc)$5~FEW gxa(}D  `1'ARc|tC _&{ A  , = N] _$ o y @  ԕ \ #   (x 9? J Z k |[ " w >   Y $ 4 E Vu g< x X  ܭ t ;   0 AW R b s s :  Ǐ V  q ,8 < M ^ oT  p 7 S'8IoZ6j{Rϧn5#4PEUfwl3Ok2/@QbNsj1!2TCSdup7ŬS oz6q-i>`OX`RPqG?6n.5& Q):lK3[l}Oݨk2~u%Nm6eF\WThjKy1C;2*M!i/ 1BSKdtg.ȼكJ yq-fi>-`NX_OpGI?6.%e, G)9J[cl*|F ԗᛎb)~u$m5~dFE\W TgKxCa:(2*!}D  _1&ARc{tB д^%鳊z Ay q ,h =` N]X _$O oG > y6 @. %  ԕ \ #   (w 9> J Z k |Z ! v =  ˆ } Yu $ m 4d E\ VuS g 6 - p% 7  R'8InZ5j{QߟϦm4}u#l4PdE\USfKwlB3:2)!Oj1/@QbMsۼi0!52TCjSd͟up97ӖnŬS=r @(#)SunOS 5.5.1 Generic May 1996as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.2as: SC4.2 dev 30 Nov 1995 GCC: (GNU) 2.7.2as: SC4.2 dev 30 Nov 1995 GCC: (GNU) 2.7.2as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.2ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr   DD=< )L  3 p9 ?44EHH Mhh Rtt[$$ `,@fmt`yq0707010000c02f000081a400000064000000640000000132b60c9e00012df4000000200000001b00000000000000000000000f00000009reloc/bin/ntpqELF#(4*4 (443X/usr/lib/ld.so.15bQ+J-thw%"UAe]rq=8xciSD1oB\Kv^2{.?3C|@W4)l,s'<:>P#`X 7$FM0E(fZNH69R}~_pnGVkd*O&jITa/zuYy[gLm;! d #(8L `   d 8"""B 'P0d* 9'TH'S#(tZfTkW(@u8~p4'@P}xl(X0(@V|(\yh`4`\0 &@ -@@!2(`<C0TGSOLXa w(dT((h *t \ *x*|+p2?HM*Zbi $xD++\+LhtxhL$hP+)A2+A+PSTXPc`p+v8|>lT-$=$XH=(? (6=@tLH QL[dd? p8v~|@ @@APL8@0<t  D-AT8lAJ(\!R\[bxHl|wAX}l PHH8A\0AAHp~D| h,"(B /E-7ER"Yd sy<a\4 @ ` TXB`(h ! r@X)x6xBI$LN ]\cDhqL{Hhx4hyyy X&.`7t<?y L$decodetimesockfdsocketDESauth_subkeysDESauth_setkeyDEScache_dkeysntp_optopt_startsigemptysetreadprintvarshextolfpuinttoaeventstrDEScache_ekeysatoirefnumtoaustotshiauth_findkeyatointgetpassprognameauthusekeytvsoutfindvar_environ_endpeervarlistmemmovedoqueryflash2flash3_iobcache_keydecodeuintnextvardolfptoa__flsbuf_GLOBAL_OFFSET_TABLE_authnumkeysinit_authsigactionocttointprettydateauthhavekey__ctypeauthkeynotfoundgethostbynameauthencryptinit_libDESauth_parityatexitexitout_linecountauthnumfreekeysinttoaclockstatstrMD5auth2cryptDESzeroekeystolowermallocDESauthdecryptsprintfinfo_auth_keytypeauthencryptionsauthnokeyDESauth2crypt_initDESzerodkeysopeervarlist.umulfputs.uremrawmodeDESauth_dessignal_no_reset.remsetjmpauthuncacheddecodetscurrent_outputauthkeylookupsasciizepktversionserver_entryccmdsqsortnntohostassoc_cachefclosemaxhostlenMD5Updatesys_vargetservbynamepeerstatstrsetbufatouintselectcirc_bufntp_getoptauth_delkeyscache_flagsauthistrustedstrncpygethostbyaddrgetnetnummfptoms_DYNAMICauthtrustnumassoccurrenthosttvoutstrncmpauthdecryptout_charsprintf__iobustotslosequencevarlistinteractiveopcmdsinfo_auth_keyidstrcatMD5authdecryptwritepromptauth1cryptfdopennumtoa_exitauth_havekeyntp_optargnumhostshextointenvironhavehostperrorclocknamelib_initederrnontp_opterrVersionclktypesstrchralways_authhostaddrstatustoainterrupt_bufauthkeyuncachedkey_hashfreecloseMD5Finalclock_varatolfpopensysstatstrstrcmpfgetschostspktdataDESauth1cryptgettimeofday_edata_PROCEDURE_LINKAGE_TABLE_fopenmemsetsortassocstrcpyMD5auth_setkeydecodenetnum_etextauth2crypt_lib_versionfflushjumpcaltontpdecodeintustotsmidmemcmpgettstamp_ctypelib_stringbufshowhostnamesauthfreekeyslib_nextbufnextcbmainDESauthencrypt.udiv.div__filbufceventstrstrlenpeer_varnumcmdslocaltimedelay_timeMD5authencryptMD5auth1cryptnumtohost_finintp_optindauthdecryptionscache_keyidfprintfdebugauth_morememlongjmpisattymstolfpbuiltinsMD5Initcache_keylenconnectlibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1(\3(hG@M]Nw $0<H{T#`6l.xa?gs)X I,8pDPf\hbt`yVU"(C @D# @s#@s@s, @ ʖ\"@ @s @s 㿐@/r/r       㿐㿐 "``G R"`/rI !ʦ#%+r!8@" X@0?6? 1* $$%<%<%<%<%%<%<%<%<% %<%#hc$#h!T*" $ %b8"#X#h`cϐ`$#h*`"Ǣ``" `X 0r@ra@@r bhcl!"clВb*r!h" К" #l h##l* @*" h "h#h #b8 2Р @rg  @rb -  $b8"8  M@$c,ch @+"@#l  Ъ" ʦ# @@ #h @ % @-`h@ #l `@r 㾈!#` r!xr@ra  $#``X 0r@r a@r ! r@r !@y !G ! r!@q1#\ ! r!@qc @q#P&#\ϐ# @q 3cH  `cH 6 @q& !ɀ?$#Pr!pc8@  #P@qה ? r"pc8@   "c\ 㿐!! r"@q#P@q? !r" ϒc p@ {8 ? $  r@q"8@%r#r??2@qH bP@q @r@q"H 㼐&6ѐ!'   @q 2#8#8#@#@ ''  #ɘcP 3( +@ @qk !!`r"X@qM? rA"p5cP `А 0rb@q1 ˰!А 0rb@q' ! r@q*"Ѐ #r=b=@q   r"r#@q!"@q&? !r#(pc8@۔ ?   r@p"8 ?+r)r??2 @pbH  "P@p@r@p"H  ! jr#0@pْf2`   ! [r#X@pʒ W `` ! Or@p#L񀊠 ! Br@p#?!P@  ! 5r#@p 1 @ ! )r#@p%@! 2` s 0@p "!0@! s `@pz! <   ?s @pl' 0s @pc' ?@s @pU#\s@! @pP "@s !@@%' s!Xs!h@p:!! s!x@p2?*2 @ ! s@p&!`   ! s@p!  !@ ! 's!@p !  !! s@o"(!! s@o"P  ! s@o"`w! }"j   `   /  ==@ @ 4Rހ @/  * }2  E , 22/  2=2=  6ѐ!@@o% #   , == @ &! s@oq"㽐 А 0sb@o[{  /7777 "PaP*  8 /7@oh  @*>     "H  K !@*>   !"@?2s@"耢?$"@А 0s&b@"@ 3"D 2ss# #0@o)J "@@bD3@b@  А 0sc@@n 0 b@@" 0㿐\#\  `А 0s@nђc`?aP  2aPbzDq  >  ! aP 2aP 9 !      0O $J 0ȕ* ? @̔@ b" '̒``&"" @ .""*` J >'J    А 0t@ma0>t@mȒaʀ  "cА 0ta@mp@m#80+Ȑ "bВ` "#"""8  !@m!\ !""T0"T $"T"T 1#€"$"T @m#Ȇ"("@J "  " J   ( J     2 ("㿐 @mg `' LJ@2  @mT 2  J    2@ 2 "&0& 㿐    "\&[ W @V Q O N &@m А 0t;b#d@  tА 0b8@l6 * ˒a$. -&  %p@lL * @*`p&"@&L 2p`  А 0tbА 0tbh@l & 㿐@ @t`b`3`@lȚ ` @lǐ @@l  @lu  А 0tb@l^ 㿐#X ?@E0  @0@[x7N i @  `- &`&@?/ N  *`*` /А / N -    * /۠ #t @OJ@2  @lc    ` ` /N -[ N i @ T7 N  **@7* : ?В@7  2N&`T&@ 9 N @ 4 ?/ N  *`*` /А / N :  N @  ?/ N  *`*` /А / N : N @   ?/ N  *`*` /А /gl@07&@&` pN 0 "N  x X2N'  " N  "Ѐ 퀢@ : *@ *@J "` @ *@А  @/ @ 2 㿐@㿐'HN 0N  x X @H0@H0@㿐N 0N  x X@Ԑ 0@0@SP&@ʠ iN   ʒ i N 2 N !  ʖ i`" ** N  * 2@   &@ h  n   ؀ '̔J@ ?"p̒  '## '̒, ̤ '"p ` Q@k⨠   @j>p&<  ` L@jt@jcH B5t/t-@j2>p>p@j|`  h<"@js   0!` BА 0tcpА 0tc@jX0 `t@jQc@ 㿐@j@㿐tc 't%t@j<     @j. ``r@j&bH㿐  2 88# *$ ,  @jq, tc@j 0@jn#"88* "@*`@ *`" *" *  * "㿐  2 ސba7 *$ ,  @jK, tc@i 0!     @j8#3ޠ&`@j5#b@j4a7``&   & 8&`㿐   #\ u`u`    u`8@i "#d#\ u`P@i 0u`p@i㿐u@i`㿐  2 "@u@i~`0u@iz`0""@㿐  2 "D u u u @ic0J M d D  m   "bD "bDu@iH`㿐!"@?2s@="耢?$"@u@i6a0"D 2ss# #0@iQJ u@i!a(0"@@4bD㿐  2  #X u'a@u$aXuJaxJ ax@iY 2  "cX uJaN a@iI "#XА 0ua@h㿐  2 au<auJaJ a@i( 2 )"! uJaJ a@i 2 a "a uJaN a@i a?"au@ha0aua@h㿐#\ @h#P@h 㿐t@hc`㿐 ""Lu@h~aЁ㿐""Lu@hua㿐  2  "H u'bu$b(uJaxJ ax@h 2  "bH uJaN a@h ""HА 0ua@h?㿐  2   bPu@h2bP0?  А 0ubx @h' 0*"P㿐!Р 0`Xu@hb@hu@hbp@hI#8㿐@g xu"@hi u@hib2 @hd !Р 0ub@g@hذ@? $@@hU ``$` @  ?:@, А @,@h ؐu@hbȀ  @h `-@@* M - ^ ? @ ***@2**** `@* @*㿐@@r ^ @ " ? & M@g & M*? & -@g  & -*   ? & ^@g`&*@? & @)  & @+*? & ^@gn`&*@? &  ? & ?*? &@gT``&*@`@@* @㿐? & @g:0 & *㿐@@@ ʆiO@,"`@`@*O@@ɸ!/` @  O@,@=  ʀ@"O?O@,=  2u O?i" /?O?2?/Ʉ@ &O@,  2 `@2`&@!#P&@O@@ iɺ`@: O@@  ɸ!, /`"  @*O@ ɀ 2! O@,  ʴiO?@?8O?@/`&@!#Ʉ& 㿐  " ` "``NJ@2 `@f `@   㿐"L @0@G㿐!u@0"Ж@f+?ʲ iN 2  N "  _ ? '@f&   ' *^*N ʁ x㿐@f@f` `J? & ,@e  &  ,* x`"  "x  H? & @e  &  * "x`" ? & @e̒  &  * x`"  "x@e? & =@e  &  =*@eД @  x@ #  "x㿐 ? & @e0  &  *㾐@e  /񀤠$$, ", @ @e 4 L@,   L@,`L@   @,E㿐p㨦#8"㨀 *@ *`ϐ!(@"㨐ub@eZ@eL &   <u@etb@e?,  -t )u  h@@e:"@e,6  ` >, ?,  ,'H'L     # "X H 0u@db0 !u@Р"Ж@dxز@HL W *  * ?`Ұ W!*`@]^^^^^^^]d_,__`(`P` @-耢  "    @Ȕ   @ ` @ $ |@} r@s@ʒ h g@c@ Y@dd 4a ?=\  C`@ 0/`/ 1/` 1//#B ђ )u@dCc 2  @t˔ t   ? А 0uc(@c H!! * @c@*|P*|QʔH:㿐#d`X!$ @cᐁ@ ?@ 㿐 ?#А 0w@c|ax 㿐@c @c2 А 0w@cja@cb @c㿐"bN@J@2  @c   *b: 㿀@c'H'!#wH;䀢  Ґ2@ 0@c-a0 2`&@ "@c&`䀢 "&`㿀@cV'H'!LH 䀢 /@  А 0w@ba@cq` `@ck`!L``" &`` &@&` ` *`&`&@㿐"  @cH$  @cA&  㿐@" 6 , =   "/$@b` @b @ @, @b `"  , @b   Ҥ$&@㽨!'\#\#`㿐 "w@baa0%w#w @bQ @bMb *㿐 #L㿐 (#L㿐`#L㿐#Lƒx#\ 耢 ' 耢 䀦`w"w"8w!`@b w"@w"8w!`@b ј 㿐      `f  ` #L  x  "     M #\#L  K耢 耢 w@abp0   㽐      !  @a"    W    fx    ( @a" 8#\  `耢 w@adbp0  2㿐      " #L  㽐        @aL"  $   M㿐?#`А 0w4b@?А 0wb*#d ?ː!$  @ @  @2   @Ж 0w" @`߰ 06&&&& 㿈  耢 耦'w%ˢ!$. 쀦@`L     㽈  耢 + @`"  $ Y耦'w%!$. 쀦@`L  \   x#\#`      1 w@`cb( А 0w@`[c  "cd˚!$ #d`*`2@ '@ 2`'##d? ' %w!#d `w@`-cP0̐w@`(cpw@`$c#d @\ 4\!Tp˦!$*2  `"` 2  w#w#Ww@ # x x x  "P #   E* ppTp`plpxpqpx7 x4 0x1 @x. Hx+ Px( p "x    xx !`x   x  x `w#!`? * qhqtqqqx x  x  x x !``"!`@ U x``#\#`#d#h#l@_ʚ@_@ J @ *@wb@_gp#d`@K㿐   㿐ِ  㿐 㿐  x #\#`    S 耢 xa0@_$0  J?."*? @2   @ 㿐@ -.$. xa`@_T <,xah@_J <`  @_D xaxxap@_.'P'Tx! ? @^ @V]!  .PTȖ vcP 8P* udxutttvw4wtttv4x(twtwhttwww@ , 2/ΐP@ $ <8       u - l b m!LP@ | P|@ ]/!P/J@   @ |  | x!@^ 4//@^T@^@*v*x 2p/oPt iPt d/ a'tp \Pp W/ T'pl 2N/MP˒耢 2F/EPÒ 2>/=P؀ 26/5PrЀ 2./-Pɒh 2&/%P/aȀ P'' h {2r  @ ? "Д @ pt@4`4 `&  "P  * > `#@ 0xa* @]H > `#0J@#l  ϐxb8$@] EД@ o @ h @ a xb@x#\#`#dl#h#l#p#t@]l x#\#`     2 耢 x А 0xb@]I 㾈ʐ ecl 6!Ъ"'Ϩ  @  #l@]q$ #l@]k$$#l `!#l  x$bx"@] x@]b#l  a$ %x @]a$ x@\c cd ' ˢ!$ `2  @~ d `㿐 㿐 㿐S %x@\ƒcpx@\’ccd @' ˠ!$ L 2  LG d`@ 㿐 Ӓ㿐 ͒J-   8 7J! ʈi33J  2* **JЖJ` "@ "@ 㿐   N i @     N 2 N - +  N +" N`.ʐ i @ "z N 'H*@\:` ,`,`@H N"`@N`?ʐ i @ ;`.5 N 'H*`@\`:`, ,   H"N N i @ " N  N 2 N  ʐ i # " ,@  ,  *2 @$ 2  2, ,  8`  "  8&@&` J  ʚiffJ   2*5 **JЖJ"@ 㿈А! @[!"!2#"#""t""|"#"!"#" d"!"#@@!''ʒb@  `?Є( "   $@ 2 $   ? Є("$2 (bt  "bt2$t  t㿐c  ="c!8 ?А!*`@$2$( 2$bt  "bt("!( 2#ʐ"`` , "!  ɐc@ T 㿐@[q"@  ޔ"@"`0"| ""|㿐 ?А!*`@` `$`@`2`$```S`3a`2#"a"`(`( D3`(?# @`>3`( ?Ж!*`@ 2@"@  2@"d?"d#@b|"  "b|3b|  ޔ b| ?&b|#`$`d3`(@ "`d ?А!*`@# #@"@  ?Єa*   "a $  2 $ "  (  㿐 ?А!*`@`!`$2@@`#``(#`!@3`(2'"`2`$!"| 6 "| !@?$"|#`#`$`#``d3`(@ "`d ?А!*`@# #@"@㿐 ?А!*`@ #ޤ ' $2 @Z~ @Z@ $ ,$ , (a"@14 (4.$a 2 $#b|  ! b| ?$b| @ZX# @Z $ , $ ,$ $"4 ( ?Вa* $d"  "dЂ?ʔ  " (2 ("@`d #`d"|# "|@$㿐 !`P"  c "c #!"@q0@̔㿐 !`("  c  "c #!"@  @ǔ㿐 !`"  c  "c #!"@   @㿐 !`"  c  "c #!"@E  @㿀@Y+`"O`x{ `w2v '' %ʨ i @ j* :  @ L@YH @Y]`<  * ? L*"?" ` "?` ?"@@!  *` 2` @  "@ [ "6 + @X     @ * *`**` *  '**`*@ @ @ @ .' W  8* l  < "? ?d  ; (  dŀ* Jb( * * * * * * m@ (( ( (r  (  (h"| @T" *@ *`ܐ"@"ؒ @W ? @X7. .  $,@   , 2 @X%* * @ $ *  ,@ $ & … 4 `['D'  ?#!@'Ԁ'Й*''Ȑ '̓+`'А`'Г*'Б* @'А 'Г*'Ԕ @2` @3  @ @2 *  @ 'Ѐ 'А ',Ԁ 4'Ԁ @  , @ *@ 8*@@* @  @ @`@* @@" --@`@:*@ .@2 @*@` @ 0*@`@ `*@㿐"l (!Т 0"t@WE@WB 0? $ 0`@WC``$`*@`0`0? "`0 @W3 0 " * ?㿐@""th "aT""p "h"p hJ 2"h a?*@J@ -[J` W -2 J` 2N"hh "h* @ "bpbp"bpJɐ "c   N`@2N yN . : `:`?2Ny p. :` :2 pJ "!T"ph y b "h*@"!T 㿈@V А"?@?/!@'`'b&"̚ +`: #@: <   (&  "@ & 0& J  ʘiJ  9(Ѐ`Ɇ  J2J"@ 㿐  N i @     N 2 N 'x*`@V[:`x"`,  ?  N & x& 5"8 N ." N 'x*`@V3:`x"`,`@   N & x&  " N  ʐ i 2&@ &@&` 㿐"| @" *@ *`ܐ"@"y`@U   |㿐  `  8   (N i @    N 2 N -2N -* N`.ʐ i @ "V N i @ `J@ 2`"@   0* "@  .* .*"@ "  0*?  *  *N .2N N i @  N*  N  *ʐ i  㿐"| k" *@ *`ܐ"@"y4 4 `ȕ4  @UB 㿐"| I" *@ *`ܐ"@"4` @y` `y` @U㿐? 'D  D @U@ D"|  " *@ *`ܐ"@". O@U OJ  ʚiJ  Ȅ(  * J "@ p"| " *@ *`ܐ"@"ba7`! @T'@Tb *  b*  #\'l#`#d#hya#l@T#p㿐"| " *@ *`ܐ"@"ya@Tk   @2` `@ (a  "`"  c  "c@Ԑ `! @ݐ@ٔ@6*  @@S  (a   "`"  @ `! @@@@`@T= `?㿐a  "`^" !c "c!ɠ"@w `! @@|㿐!ɠ"@@r @@ X@S  @N [&@ ]   ʤ iN   ʖ i N*   N  . *@S`  @ *  &@  @&@ p'@S'3А@S aX z@SW#@S 㿐@? @ 2` `@? 1ɰ#0{`@SRa㿐1{"ɘ#{"{" {"(@S= 1ɰ#㿐"| C`" *` * ܘ" " 5>`  >`0>`0 `\@Rϐ{b0@S3>` `@S+ {@S%b8@S">` @S@S`ha\ { "@* "@ .  .  .  .  .  .  . { "H* "H .  .  .  .  .  {@RbP @ 0 {bX{b`@R  {@Rؒb0G`ܒ@Rѐ{b0@R̒>`T @RƐ`@Ra ! !+@RL{@Rbp` @R㿐 ?!’!\ 㿐 a㿐 2㿐 ,㿐 &㿈c  "c"!`" c $"cɠ#'쀦'>? @@ '`@?@ '`@E 4` &@&`㿐 2"#ؐ@ ? @ " ?  " @&  㿈a  "a#! `c" 0 ɰ#T6.@``' '@@ '6@@쀦 @'@ '耢  쀠`?㿐x  !#Úab3a܇0`0`0` 0`0`0`0`(`( <`<  < <(((3²a5@<((0`(0`<(.`0` <. 0`<(0`5´|0`.`0`. (`(  *2. 6*2.6; 2 220('@2 2 <(  8(6 @@0`)*@ `0`)*@ `0`)*@ `)*@ 660(` 'ᜲ@6 6<(@@0`)*@ `0`)*@ `0`)*@ `)*@`?㿐  ƞUUU5@(1 1 1  *@6 @.#/`(@((1 1 (.`1 ( ((6 @1 (`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?( `@@1 ?( `@@`.?(@`7` @ @1 (`@1 ?(`@1 ?(`@1 ?(`@1 ?(`@1 ?( `@1 ?( `@`/`?(``qÄ(@1 1 1  <<<@05Ŵ. c/ @((. "1 (1 . (1 .` ("㿈c  "c"!`8"  c  +"cɠ#'66 '@ '`@? 'Ʋ` 耎 @ '``&@ &`    (`   2`0` 2 ` ( " ``0``$ `?" "H" ;j" &."  v" P.2  `? @6  &  @ & &&  @@*``   `  * *` *   #?  @E  P' '2  ?7 x 8" {bx  `   ` * *` *    @   *`X`2 *`Y *`Z `*`[x   @``` ```` `$`(`,`05ک`4x`8@ -(`0`@:1V@-- 5 ۆ )'-50os (@) 1 =_㯆@ -`'(`0`@*@- - 5*  )-5?Q (@ ) 1 `&؆@ - (`0`@"=㯆@-- 5?ֆ㱆 ) -5"W5㾆 (@) 1 "@ -(`0`@?fᓆ@- - 5)P㎆ 8-5m! 8`< '܄) 1 =b@ (`0`@0,@@ - 53 bQ (@@-53:mc -@) 1 35IJ`]@ - @(`0`@3`S@) @- 536(yb (@܄@-539cȲ -@) 1 3xsa@ -@(`0`@30cֲ@)@- 53=5Ca (@@-53V` - @) 1 3*xa@ - @(`0`@3?;c@)@- 53bٲ (@ @-53#J` -@) 1 ?B@ (`0`@!}⁆@ - 5gX"-5?yN ) 1 )/D@(`0`@㩆@- 5=҆` -5/p ) 1  &߆Ɔ@ (`0`@:I@- 55;̆-5") 1 6u49@(`0`@9@- 5蟆܄-51+e) 1 = HD@1(`0`@ʿ㗆0@ - 5*㧆5@-5?$95 ) 1 VֆÆ@1(`0`@#30@- 5?}5@ -5!aц5) 1 O@1 (`0`@?90@܄- 5(P5@-5ᡆ5 ) 1 =߆₆@1(`0`@/N50@- 5 ⻆5@-5:ᴆ㑆5) 1  & &  @& & 㿐@/K/K ??? ??㿐㿠㿠Sntpq> refskewkeyidsystemprocessorleapwarningleapindicatorclockerrorfreqphasepeerpollreftimerefidrootdispersionrootdelayprecisionstratumleaphostpollpeerpollpeerportpeeraddrdispflashfilterrorsentreceivedpmodefiltoffsetfiltdelaydispersionoffsetdelaytimervalidreachxmtrecorghpollppollhmodedstportdstadrsrcportsrcadrauthenticauthenableconfigdeviceflagsfudgetime2fudgetime1baddatabadformatnoreplytimecodetypeROOT BOUNDSBAD STRATUMPEER CLOCK UNSYNCBAD AUTHPEER BOUNDSPROTO UNSYNCBOGUS PKTDUPLICATE PKTset key type to use for authenticated requests (des|md5)key type (md5|des)keytypeset the NTP version number to use for requestsversion numberntpversionalways authenticate requests to this serverauthenticatedo cooked mode variable outputcookeddo raw mode variable outputrawprint version numberversionset keyid to use for authenticated requestskey#exitexit ntpqquitset/change debugging levelno|more|lessdebugspecify whether hostnames or net numbers are printedyes|nohostnamesspecify a password to use for authenticated requestspasswdpoll an NTP server in client mode `n' timesverbosenspecify the host whose NTP server we talk tohostnamehostset the delay added to encryption time stampsset the primary receive time outmsectimeouthelptell the use and syntax of commandscommand?c:dinppeersusage: %s [-dinp] [-c cmd] host ... localhostntpudp%s: ntp/udp: unknown service Got ntp/udp service entry Opening host %s Closing old host %s socketconnectSending %d octets write to %s failedPacket data: %02xselect() returns %d select fails%s: timed out, nothing received %s: timed out with incomplete data Received fragments: %4d %d last fragment received last fragment not received readShort (%d byte) packet received Packet received with version %d Packet received with mode %d Received request packet, wanted response Received sequnce number %d, wanted %d Received opcode %d, wanted %d (sequence number okay) Error code %d received on not-final packet Association ID %d doesn't match expected %d Packet not padded, size = %d Packet shows signs of authentication (total %d, data %d, mac %d) %08lx %08lx %08lx %08lx %08lx %08lx Authenticated with keyid %lu We don't know that key Auth okay! Auth failed! Got packet, size = %d Received count of %d octets, data in packet is %d Received count of 0 in non-final fragment Offset %d, count %d, too big for buffer Received second last fragment packet Packet okay Number of fragments exceeds maximum Overlapping fragments returned in response ***Internal error! qsize (%d) too large Keyid: Keyid must be defined, request not sent DES Password: MD5 Password: No password, request not sent ***No host open, use `host' command ***Server reports a bad format request packet ***Server disallowed request (authentication?) ***Server reports a bad opcode in request ***Association ID %d unknown to server ***A request variable was unknown to the server ***Server indicates a request variable was bad ***Server returned an unspecified error ***Request timed out ***Response from server was incomplete ***Buffer size exceeded for returned data ***Server returns unknown error code %d ***Command `%s' unknown ***Command `%s' ambiguous ***No file for redirect w***Error opening %s: 0123456789***Association value `%s' invalid/undecodable ***Association for `%s' unknown (max &%d) ***Illegal integer value %s ***Value %s should be unsigned %lu.%lu.%lu.%lu***Can't find host %s DecNovOctSepAugJulJunMayAprMarFebJan Commands available: %s %s%sCommand `%s' is unknown Command `%s' is ambiguous function: %s usage: %s [ %s ] %sprimary timeout %d ms delay %lu ms current host is %s no current host current host set to %s current host remains %s still no current host poll not implemented yet no keyid defined keyid is %lu keytype is %s md5deskeytype must be 'md5' or 'des' Keyid must be defined Password unchanged hostnames being shown hostnames not being shown yesnoWhat? debug level is %d morelessdebug level set to %d Output set to raw Output set to cooked authenticated requests being sent unauthenticated requests being sent NTP version being claimed is %d versions %d to %d, please %s: : /dev/ttyr%s0status=%04x %s 0x%lx;Unknown datatype(0x%x) in cookedprint %03loInternal error in cookedprint, %s=%s, fmt %d obtain and print a list of all peers and clients showing dstadrlopeersprint peer list the old way, with dstadr shown rather than refidopeersobtain and print a list of all peers and clientslpeersobtain and print a list of the server's peerspeersprint status information returned for a peerpstatuscvread clock variablesclockvarclread the clock variables included in the variable listclocklistmrvread peer variables from multiple peersmreadvarmrlread the peer variables in the variable list for multiple peersmreadlistwrite system or peer variablesname=value,[...]writevarrvread system or peer variablesname=value[,...]readvarwrite the system or peer variables included in the variable listwritelistrlread the system or peer variables included in the variable listassocIDreadlistprint variables on the variable listshowvarsremove all variables from the variable listclearvarsremove variables from the variable listname[,...]rmvarsadd variables to the variable list or change their valuesname[=value][,...]addvarsprint last obtained list of associations, including client informationlpassociationsprint list of associations including all client informationlassociationsprint list of associations returned by last associations commandpassociationsprint list of association ID's and statuses for the server's peersassociations***Invalid association ID specified Malloc failed!! Variable list full Variable `%s' not found No variables on list %s %s=%s No system%s variables returned clockNo information returned for%s association %u done! (no data returned) ***Invalid association ID %lu specified ***Association ID %lu not found in list No association ID's returned ***Server returned %d octets, should be multiple of 4 No association ID's in list ind assID status conf reach auth condition last_event cnt =========================================================== yesnook badnoneinsanefalsetickeliminateoutlyersynchr.dist.peersys.peerpps.peerhi_dispsel_candsync_candIP errorauth faillost reachreachableclock expt%3d %5u %04x %3.3s %4s %4.4s %9.9s %11s %2sNo information returned for association %u %ld%ldm%ldh%lddsrcportreftimerecdispersionoffsetdelayreachppollhpollstratumdstadrsrcadrrefid0.0.0.0***Remote host didn't return peer.%s for association %d %-*s %c%-15.15s %-15.15s %2ld %c %4.4s %4.4s %3lo %7.7s %8.7s %7.7s ***No information returned for association %d %-*.*s host remote refid st t when poll reach delay offset disp =============================================================================== remote local st t when poll reach delay offset disp =========================================================================== ntpq 3-5.87 Mon Dec 16 00:45:01 EST 1996 (1)01234567890123456789abcdefamnesia: unknown option -: option requires argument -0123456789abcdefABCDEF%ld%lu.%lu.%lu.%lu%s(%lu)REFCLK(%lu,%lu)DecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu%luGPS_HPHP 58503A GPS Time & Frequency Receiver (26)TrueTime (generic) Receivers (25)USNONaval Observatory dialup (24)PTB_ACTSPTB Automated Computer Time Service (23)ATOM_PPSPPS Clock Discipline (22)GPS_VMETrueTime GPS-VME Interface (21)GPS_NMEAGeneric NMEA GPS Receiver (20)WWV_HEATHHeath WWV/WWVH Receiver (19)NIST_ACTSNIST Automated Computer Time Service (18)GPS_DATUMDatum Precision Time System (17)GPS_BANCBancomm GPS/IRIG Receiver (16)GPSTM_TRUETrueTime (old GPSTM driver) Receiver (15)MSF_EESEES M201 MSF Receiver (14)ATOM_LEITCHLeitch CSD 5300 Master Clock Controller (13)IRIG_TPROKSI/Odetics TPRO/S IRIG Interface (12)GPS_ARBITERArbiter 1088A/B GPS Receiver (11)GPS_AS2201Austron 2201A GPS Receiver (10)GPS_MX4200Magnavox MX4200 GPS Receiver (9)GENERICGeneric reference clock driver (8)CHUScratchbuilt CHU Receiver (7)IRIG_AUDIOIRIG Audio Decoder (6)TRUETIMETrueTime (generic) Receivers (5)WWVB_SPECSpectracom WWVB Receiver (4)WWV_PSTPSTI/Traconex WWV/WWVH Receiver (3)GPS_TRAKTRAK 8810 GPS Receiver (2)LOCALUndisciplined local clock (1)UNKNOWNunspecified type (0)sigactionleapsync_alarmleap_del_secleap_add_secleap_nonesyncsync_telephonesync_wristwatchsync_udp/timesync_ntpsync_local_protosync_uhf_clocksync_hf_clocksync_lf_clocksync_atomicsync_unspecselsel_sys.peersel_sys.peer, hi_distsel_syncsel_candidatesel_correctsel_sanesel_rejectclkclk_badtimeclk_baddateclk_propagationclk_faultclk_badformatclk_noreplyclk_okayeventevent_clock_excptnevent_bad_dateevent_clock_resetevent_peer/strat_chgevent_sync_chgevent_faultevent_restartevent_unspecevent_peer_clockevent_reachevent_unreachevent_authenevent_ip_err%s_%dno events%d event%ss, /PPSunreachreach, conf, auth, unauth, last_""Tcr~  d  d 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0Nh8 0(      ¸ ¨ ˜ ˆ €xp88Ĉxh`XPH 0 @ ( 8 0  (  x øè à!Ð"È#Àp` P @88 İĠ (  Ę Đ8p`P@0(D\ 888D\ 888GH888ȸG888ȈȀH܁p888@I8088J8888ǰKpǨ888phLHX88880Ml8888 Ml8888 xI888M8888ƸM8888ƘƐM8888p`N Ǩ8880 N888J888ŀ88888( 0hr\````r````ܰr````p`r````f```۸۰f۠```xhf````8(g ````g```ڨڠg```ڨڐh\```H@i (``i (``i``ٸ٨l``h`l``hPm(`( m(`(jp```jp```jȂ(``بؠjȂ(``بؘr```h`|l````0(|````}H````נט}`````X````` .+* x.-+#*o d'B@;@P=\z2QhH@80( xph`XP!2UCSduq8T o6->O`Rqn5Q):mK4[l}Pl3%N6FWhjy1Mi0 1BSLdth/ȽلK -f>-N_pIe,H)9J[dl+|Gc)$5~FEW gxa(}D  `1'ARc|tC _&{ A  , = N] _$ o y @  ԕ \ #   (x 9? J Z k |[ " w >   Y $ 4 E Vu g< x X  ܭ t ;   0 AW R b s s :  Ǐ V  q ,8 < M ^ oT  p 7 S'8IoZ6j{Rϧn5#4PEUfwl3Ok2/@QbNsj1!2TCSdup7ŬS oz6q-i>`OX`RPqG?6n.5& Q):lK3[l}Oݨk2~u%Nm6eF\WThjKy1C;2*M!i/ 1BSKdtg.ȼكJ yq-fi>-`NX_OpGI?6.%e, G)9J[cl*|F ԗᛎb)~u$m5~dFE\W TgKxCa:(2*!}D  _1&ARc{tB д^%鳊z Ay q ,h =` N]X _$O oG > y6 @. %  ԕ \ #   (w 9> J Z k |Z ! v =  ˆ } Yu $ m 4d E\ VuS g 6 - p% 7  R'8InZ5j{QߟϦm4}u#l4PdE\USfKwlB3:2)!Oj1/@QbMsۼi0!52TCjSd͟up97ӖnŬS=r `X8(xp H8    hX80XH(`P0(H8(p `XxhXH8 p`H0  $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                                     $ $ 040 4 $ $ 0 4 0 4 $  $ 040 4  $  $ 0 4 0 4                  ""  ""  ""  ""  ""  ""  ""  ""       $$$$$$$$        $$$$$$$$                0 0 0 0 0  0  0  0  0 0 0 0 0  0  0  0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!   !!    !!! !!! !  ! !!!! !                                                                          @(#)SunOS 5.5 Generic November 1995as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr    d d$ )   3#(#(988?LLE``,XM R[dd `880df""m""t""V`"]* 0707010000c030000081a400000064000000640000000132b60c9e000069b4000000200000001b00000000000000000000001300000009reloc/bin/ntptraceELF4f4 (44KKKK&LL/usr/lib/ld.so.1|'m=]`;E9Ir!l48M_U d2qa-X\?K,n&hb[)(ozJw@jDW^FL6g"yx#s~v{O3C1RuV:<Nf}$7B0%.G5*T/+eiQcPpYStZAkH>dPCC C K L L NaaaMStee+t2N>MC*4Kat@TOdO peyeNr;<O$MNph@!eN21=@LMK /Xe #Ot,M:0XdF-OLVg_LdMkMs-LzN(LMON8N|NNNgNLM,i@`gM\ ++M3MAL JWtSM8Zh@`i@`mYtvNNdkM.MkkA\e!kNNNBk kk"Bt)N6a=L WMt^ggkqN@xK C MD]tke !k@rNXM@MPN4rN.LN"Mh+M 3N9NErS([*0sockettstousmidntp_optoptfull_recvbufs_startalways_stepatoiemallocustotshimax_no_completesyslog_fileprogname_environadjtime_endmsyslogntp_syslogmaskmemmovegetpid_iobfulllistsys_retriesadj_systimestep_systimedolfptoa__flsbuf_GLOBAL_OFFSET_TABLE_prettydate__ctypetstoushigethostbynameget_systimeinit_libatexitfreelistexitmallocsprintfmfptoasettimeofday_initfputssyslogitsys_maxserversstep_systime_realtimesys_numserversverbosenonames_sys_nerrvsprintfsetvbufsys_errlistsys_clock_offsetselectntp_getoptstrncpygethostbyaddr_DYNAMICtstousloprintf__iob_sys_errlistustotslosys_versionstrrchrtvu_maxslewsendtonumtoa_exitntp_optargtsf_maxslewhumanlogtimeenvironerrnolib_initedntp_opterrVersiontvtoasys_serversallow_set_backwardfdutvtoagettimeofday_edata_PROCEDURE_LINKAGE_TABLE_memsetsys_nerrsys_clockstrcpy_etext_lib_versionfflushustotsmidadj_precision_ctypelib_stringbuflib_nextbufmainsyslog.udivhumandatememcpystrlenfdmasklocaltimenumtohost_finintp_optindrecvfromfprintfdebugsys_timeoutfree_recvbufsdofptoafptoalibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1e&e6i@NhWgqL;LLBL=M_M M M,MM8VMDvMPM\PMhMtpMM]M8M+M~M>MCM3M?MSMRNNmN'N(AN4N@sNLLNX}Nd[Np,N|G @D# @M @M@M, @ "@ @M@M㿐@/M/M℮       㿐㿐 E"L+- #'@$АP@g?k? 78* ,<DXb %b%@Mtc"b@Moc"" P c@Mdc"" Q`@M\ ""   "& $ aА Q@ME`0@M: "@* !"` " aȔ @@M6$" " b Q@`x"& 2Q*`@ @o@M  @|@@M 㿐"`"" !Q @9  @U @L@L  @%@Z  " Q" !Q @  @0 @L֐0@LӐ H#b " / !Q@ @LĐ/ /?/@''''''''"'Ȑ 0*`@v/ 0' 4'Ԑ@S 0b !Q @ՠ Ȓ@Lp)%#+-b@L 'l  "h#'h@L   ?"  Q@Ly <  Q@`5 @6` 2? Q@a@LU $ '\ Dc # < $c@Lc\? $ 8c$$c $`a$ ,%ad%$ 0@$@`#b "`8!Q @g!@L.!Q`@`!(@L'`8`/ b Q@L!0@ ` @ b tQ@L!P4 `<2  `<b gQ!h@L & ` b \Q@K!h   `=  " JQ ! @K ` `T'`X' 0 b 4 b 4Q@KҐ! `<2 . `= " . `?. `@& `D& `H& `L& `P& $`\'``'`d& (`h& ,Ѐ`2 (Ԁ "а  ( 8 (2ʰ Ԁ: (İ `,, L v " ' ,'`0 ?#3` @ : @ @  @@ 2 *  @  '`, 8' '''܀ϔ ?#3` @ : @ @  @@ 2 *  @  '؀ 8' '''?#2 @  2 @  @@ 2  *  @  ' 'Ȑ 'ȕ2`Ȁ`' ' @ :`'쀢?# : 2 @ @  @@ 2  *  @  '耋 8@' '?#@  ?@W*` @ #Ȑ& @̒`& D@& 8   @' 㿐!""@ b   "b Q@Ja @ H @JД H 6@"&  {6 `$"#*`" 㿈@v쀢 ' Qb@" 㿐!"`*` * " @* " ` "쀢`""0"!"!̐   @J#"# $c Q@b@J` !" @Jx c 2* * @"c""c ∝㿐# @Ja ?#   !Q @v"0 @㿐@ 2 @JI 2   @@JC @&@ !N   !* N   N  .  *@I`  @ *  &@  @&@ 㿐" ` 2 !@ @  D!Q @"@  @ @I˖  wQ@IĒbp@vo!Q @" @I 0 Q "`N  1` 0 1@IQ@IbȐ@U !Q 8@"В   <@o @I  @!Q D@"@I !Q @#   @U @Iv   !Q@I# @Ik !Q@#8@Ic (!Q@#X@I[ 0!Q@#x@ISQ@IOb㿈`  /`@Ic Qc"  @s`Qc@`Q`x@I*㿀"Ȁ @C" *@ *`#@" @I$ ?6  *2 @I%  *`*` $ *  ,@ * :  $ .:  4 . ?# . . @6 ,*     , @ *@ 8*@@ ` @ "`` -,@:*@ .@ 2 @*@` @ 0*@`@ `*@㿐@Hǐ Q @!c@H 㿐   f 㿐" (! "@H@H ? $ `@H``$`*@` ` ? "`  @H 0 " * ?㿐@""⸀ "c"" "" J 2"⸀ a?*@J@ -[J` W -2 J` 2N" "* @ "bb"bJ "a   N`@2N QN . : `:`?2NQ#. :` :2 J "#"⸀ R b "⸑*@"#    ȝ㿐  `  8  @И 㿐"Ȁ " *@ *`#@"R4 4 `04  @Gך 㿐? 'D  D @GȔ D"Ȁ " *@ *`#@". O@G Op"Ȁ " *@ *`#@"ba7`! @Gz'@Gb *  b̑*  #\'l#`#d#hR`#l@Gf#p㿈@Gl &tt!t `+`:` #@ :` `<@ & ?#2 @# 2 @  @ #` @*` @& ?@ & & h2`  @(@ 2 *  @ &  & & "@ & 0& "#㿐    " Rc@Fѐ! '# $?#@ 2 @ 2 @    *` @ " "  " R@F! @wx"    !R!P@F##` ?#6  @ <` @ @ @@@ 2 *  @  ?#6  @ <` @ @ @@@ 2 *  @   2 -  8'# L6 #?# 6  @ : @  @@ 2 *  @   # 'צ  #  ' 8" {R!hR!R! c  @ + `#t+`6 t+ 6 @ct     : t+`: t #: @ at <  ?#  :`  @  @@ 2 *  @  @?  ' 8 '" !R@!   @ ̔ @E@Eْ   R@al 3 "##"  䀢 ^ '؀䀢` 'ؐ  `t+`:`t #:`@ !t `<@  '܀`ђ 'ܐ8'?#c@ܓ2 @ 0 @  @c *  @  #c@ " "c ?"c#$ @   !RT" @㿀 ?#@ 2 @ 2 @  @  *  @   @" "` #U  8 "#ccttc#t'2+`2 #@ 2 @ @`:`Ъ"@@'''@E "  !R "@c @@-@D"@'"'' @'А"?'`'"'@Dג  R@b " !R@"@Dc" "c P'L'P'T'XN@L#`7`` 4!@䀤/`%2 ,N@`m` %, , #Rb@D0.@D怢 : N@@D@DN@``` Ґ3c 2, , ,@Dvc Rb@Dq0'# ` !   !!@Dc / !!R@"@D!R@DX"@C@Dh"Ȁ " *@ *`#@"ؒ @C ? @C. .  $,@   , 2 @C* * @ $ *  ,@ $ & … 4 `['D'  ?#!@'Ԁ'Й*''Ȑ '̓+`'А`'Г*'Б* @'А 'Г*'Ԕ @2` @3  @ @2 *  @ 'Ѐ 'А ',Ԁ 4'Ԁ @  , @ *@ 8*@@* @  @ @`@* @@" --@`@:*@ .@2 @*@` @ 0*@`@ `*@x"Ȁ B" *@ *`#@"`!'@CE#X  ( *`@ *   #\ #`gl#dR@C%c㿀@CG '@C&"Ȁ " *@ *`#@"   c( *  #\R@Bc㿐         "Ȁ " *@ *`#@" R#R#R#@Bǘ㿐"Ȁ " *@ *`#@"R @Bc㿐@/B/Bమ ??? ??㿐㿠㿠kdo:nr:t:v%s: retries (%d) too small %s: timeout (%d) too short usage: %s [-dnv] [-o version#] [-r retries] [-t timeout] [server] %slocalhost%s: %s: *Timeout* *Timeout* DoTransmit(%s) DoTransmit to %s timeout select() error: %mno buffersReceiveBuf(%s, %s) receive: packet length %d receive: wrong server receive: version %d receive: mode %d stratum %d receive: pkt.org and peer.xmt differ too many servers (> %d) specified, remainder not usedcan't find host %s socket() failed: %msendto(%s): %mstratum %d, offset %s, synch distance %s, refid server %s, port %d stratum %d, precision %d, leap %c%c refid delay %s, dispersion %s offset %s rootdelay %s, rootdispersion %s, synch dist %s reference time: %s originate timestamp: %s transmit timestamp: %s '%s'[%s]ntptrace 3-5.87 Mon Dec 16 00:45:43 EST 1996 (1)No more memory!amnesia: unknown option -: option requires argument -%lu.%lu.%lu.%luDecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03luallow_set_backward=%d calling step_systime_real from not slewalways systime: offset %s systime: maximum slew: %s%s, remainder = %s -systime: adjtv = %s sec, adjts = %s sec, sys_clock_offset = %s sec Can't adjust time: %mPrevious time adjustment incomplete; residual %s sec step: %s sec, sys_clock_offset = %s sec, adjtv = %s sec, timetv = %s sec Can't set time of day: %mstep: new timetv = %s sec error %d%s%s %s[%d]: %sDecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%s, %s %2d %4d %2d:%02d:%02d%2d %s %02d:%02d:%02d%s%lu.%06lu-%lu.%06luLaaapd  LP 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t000000000GGHHHHHxHpHhH`HXHPHHH@HHHHHHHKXKPKHK@K8K0K(K KKKKKKKKxKpKhK`z$n6HbZlV~АJĴ>2' 2D V h z } q e Y N.B@R6dv*u*<iN`]rׄQ˨E9."&8J\ nx l !`!"U""#I4#F$=X$j%1|%&%&''( () )|)0*pB*T+df+x,X,Ҝ-L-.@./4/0)0,1>1P2b2t3334s45g56\67P(7:8DL8^98p9:,:; ;<<= ==$>w6>H?kZ?l@_~@ِASAʹBGBC;CD0D E$2EDFVFhG zGHHzHInIJbJ KWK.LK@LRM?dMvN3NO'OPPQQRR~*R<SrNS`TfrTUZUԨVNVWBWX7XY+&Y8ZJZ\[n[\\\]u]^i^_^_"`R4`FaFXajb:|bc.cd"deef ff0gyBgThmfhxiaiۜjUjkIkl=lm2m,n&>nPobotppqq|qrprsestY(t:uMLu^vApvw5wx)xyyznbVK?3'   ~ r f Z NB6+ui]RF:." y m !a!"U"#I#$=$%1%&&&''(())|)*p*+d+,Y,-M-.A./5/0)011223334t45h56\67P78D8989:-:;!;<<= ==>w>?k?@_@ATABHBC<CD0DE$EFFG GHH{HIoIJcJKWKLKLM?MN4NO(OPPQQRR~RSrSTfTU[UVOVWCWX7XY+YZZ[[\\\]v]^j^_^_`R`aFab:bc/cd#deef ffgyghmhibijVjkJkl>lm2mn&nooppqq}qrqrsestYtuMuvAvw6wx*xyy  !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqqrstuvwxy!2UCSduq8T o6->O`Rqn5Q):mK4[l}Pl3%N6FWhjy1Mi0 1BSLdth/ȽلK -f>-N_pIe,H)9J[dl+|Gc)$5~FEW gxa(}D  `1'ARc|tC _&{ A  , = N] _$ o y @  ԕ \ #   (x 9? J Z k |[ " w >   Y $ 4 E Vu g< x X  ܭ t ;   0 AW R b s s :  Ǐ V  q ,8 < M ^ oT  p 7 S'8IoZ6j{Rϧn5#4PEUfwl3Ok2/@QbNsj1!2TCSdup7ŬS oz6q-i>`OX`RPqG?6n.5& Q):lK3[l}Oݨk2~u%Nm6eF\WThjKy1C;2*M!i/ 1BSKdtg.ȼكJ yq-fi>-`NX_OpGI?6.%e, G)9J[cl*|F ԗᛎb)~u$m5~dFE\W TgKxCa:(2*!}D  _1&ARc{tB д^%鳊z Ay q ,h =` N]X _$O oG > y6 @. %  ԕ \ #   (w 9> J Z k |Z ! v =  ˆ } Yu $ m 4d E\ VuS g 6 - p% 7  R'8InZ5j{QߟϦm4}u#l4PdE\USfKwlB3:2)!Oj1/@QbMsۼi0!52TCjSd͟up97ӖnŬS=r @(#)SunOS 5.5 Generic November 1995as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr  dd< )PP  3.9CC?CCECC"MKK RLL[LL `NN(faamaataaae0707010000c031000081a400000064000000640000000132b60c9e00002888000000200000001b00000000000000000000001200000009reloc/bin/tickadjELF x4%h4 (44     /usr/lib/ld.so.1CP5I@BJL%F);N"4$6A>?G98O*1DM=CK#+:7H -2&,./(!<30E'<< L d x      ! "#### " xt "%!*#3"?#H$M#@!R"[  q"!!!"""8"  ""P"#@"!$"#!" #x""" ("+"0"t5#<! V"h`"\j  q ~"D" T ""!#t!$",ntp_optoptwritetickadj_startreadatoiprognameunsetdosync_environ_end_iob__flsbuf_GLOBAL_OFFSET_TABLE_writeopttickadjatexitexit_initfputskernel.remsetnoprintfntp_getopt_DYNAMICfilekvm_openprintf__iobwrite_exitntp_optargdokmemenvironperrorntp_opterrwritetickclosefdkmemopen_edata_PROCEDURE_LINKAGE_TABLE_kvm_closekvm_nlist_etext_lib_versionfflushquietmain.divlseek_finintp_optindfprintfdebugsysconflibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1#!#3!'!K!)!(!5!!M"2"I" <",O"8,"DF"P1"\C"hB"t?"9"J"4""*"$ @D# @E!@E@E, @ "@ @E@E㿐@/E/E       㿐p C +- #)@$㜐G@; ?j? 3e*  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@ @@@@  @ ` %`%""""@E ` "bА#G`0""""@D` "bܐ#G㜒`X`@D#t c#G@D`@D֐ !"@՘`쀢`$"G@DҐ G@Dΐ G@Dʐ G@DƐ!"܀  쀢  #G@Da "Ԁ  耢  #G@Da8"؀  䀢  #G@DaX"䀢   2 #G@Dax쀢` "@@D#''耢` "@ؒ##@Dx'''䀢`"@`"@@Dg""؀ 䀢  G#ȒaG@DM@DB @DU @DJ"@'܀ ؐ : #'@D@#b`9'쀢 "GG!@D0G@D,!耢 "GG!@D$G@D "䀢  Ԁ G"(G"@G"H@D  Ѐ G"PG"HG"@@D ܀  #c#G@Cbp@C b@@C}x!@C'`. @*`@*`" G"@Cޒܒb@* $, , @Cؐ@Cݒb@ 4   耢 G"@CÒ"Ѐ 2"Ԁ 2"؀ "܀  "䀢 bЀ@C@ bЀ "Ԁ 2"b"@ڒ 'b䀢`$䀢 #b 2 !#ȐG@Cb@C@Ք b '#G@Ctb'܀쀢 #b 2 !#ȐG@Cbc@Cr"@b '#G@CRb'Ѐ耢 #b 2 !#ȐG@C@c @CP"@b #G@C0b"؀ !䀢 #b 2 !#ȐG@Cc@@C-"@n b 2#G@C b@C"@B@ 㿐   !#@C 2 ##G@Bc@B @Cb? ##H@B`@Bܐ @B"̀ #H"""""@ "b&&@&'b&b`&@` &`0'㿐@Bْ H#Ȓ` @BG@Bϐ#X@B 㿐'L@BȔ ?2c#H@B`0G@B#X@B L@B   c#H@B`HG@B#X@B{ 㿐@B ?2c#H@Bs`0G@B#X@Be @B  c#H@Ba``G@B#X@BS  #H`x@BS @BH 㿐#x (!##@Bq@Bn#Ȑ? $#Ȑ`@Bi``$`*@cȔcȐ? "cȐ @BY 0 " * ?㿐@"#t "`"#| "t#| tJ 2"t a?*@J@ -[J` W -2 J` 2N"tt "t* @ "c|c|"c|J "c   N`@2N HN . : `:`?2NH . :` :2 |J " "|t H b "t*@"  㿐@/A/A` ??? ??㿐㿠㿠/dev/kmema:Adkqpst:%s: unlikely value for tickadj: %s %s: unlikely value for tick: %s usage: %s [-Aqsp] [-a newadj] [-t newtick] tick offset = %lu tickadj offset = %lu dosynctodr offset = %lu noprintf offset = %lu No tick kernel variable No tickadj kernel variable No dosynctodr kernel variable No noprintf kernel variable %s: can't find %s in namelist dosynctodrKERNEL tick = %d us PRESET tick = %d us KERNEL tickadj = %d us PRESET tickadj = %d us dosynctodr is %s onoffkernel level printf's: %s %s: the value of tick is silly! calculated hz = %d.%02d Hz recommended value of tickadj = %d us setting noprintf: done! writing tick, value %d: writing tickadj, value %d: zeroing dosynctodr: noprintfnsec_per_tickhrestime_adj/bsd/stand/vmunix/netbsd/386bsdhp-ux/mach/unix/vmunix/kernel/kernel/unix%s: kvm_open failed %s: kvm_nlist failed %s: open %s: %s: lseek fails: %s: write fails: %s: read fails: %s: read expected %d, got %d amnesia: unknown option -: option requires argument - ##< < ! d L, 00<0H0T0`0l0x00000000000000 0,080p`X @(#)SunOS 5.5 Generic November 1995as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr T <<<< L L ) d d  3 x xd9?EM R [!!H `""f##m##t##X# $0707010000c032000081a400000064000000640000000132fcdbce00033780000000200000001b00000000000000000000001000000009reloc/bin/xntpdELFP44`4 (440000J<</usr/lib/ld.so.1-`o3 ]"KU8~y9ul^+,|Pj k2 je5kr %:pD4u$p V YtwC6qqZcJ:!nbv<!g^,S {/@IhGF I\[ym#RE;` .sm*~dAibr-41xW7vMQtE=*fQlBiR'1aDLF>X7W'0zV;#2Jws?(xT8X9oe[5)_%]3&/)n-YOH.=aH?0"KPf CBTd@_U& S N{O\(NzcL+|}hM6$}Zg<A>G3KKP`t  0 <  """l )ڴ0ed@J0h Y fuPtTD x T ی x(+4$@qItT> cD<ob4x,dn`80lpM4$48"0H48F@O`V<eTr+P'T@DH9X(LP< mDT$X5\EXݐa`jr`w\8d hڄ7Hl`p\lQ@!ptht$+S7RDxS0|eDLnw0 |+0, `܈\t@ ,'h06= EdPTds|l@dݜܬ4QTdHd0AL PnH#07@<8K(PFP`Hel`o zܔ40t(c$@$ \x4*x8CQ HQO^ݨfP,zP0}tTd|$x8`P4P8P<P@x \LL\){d3PDCPUPH_PLnd \|@(PP`ۀPTx8PPPP $ P  $0 *$\4 4X <ݴ BP J SR ^  ]9 lٔ s٬ {S`  `l q  b  (  < NPd Q,  * ! (Q4 7  >IL I2 V/ dQ8 p xQ< Q@ Q Q )x( LdL | < .( X > @d d Q  ! 3L ;  D5X P( YQ ep lQ@ rS`  و Up ` Ut Ux ڜ U| l 8  +T $O3yh$CI W_UjxXT3PUUUDܠUU~L4, ,U7VDV,NWHYd<gWLsWPoWTx`!h<NHWڠWW$PW$+p`1>_HRWbWkڨp$vLXXrAP|X( |Xb XX,0<YFLPWX^ekuYYq,tc $Y Y" L%|+:@MٸTe4oQxYYY;Y ,<h|\tY$ Y(#Y,-ڐ4Y0K1t@ZgY4w0 ~3 -xL|>Y8l0Y<Y@ YD%@5~`dBYHNK@XdgYLu !|YP@___@ 8\m( _ۤ __%_8nBۘG_Xbbi`,u@|(D`0*H`48@l`8 NPp(`X`\*``:(DBHQ`[0ft lw`,`^@38Mx٠`-X t `u<&`4EBM@|YH40_q<g`tܸpeer_configrefclock_hpgpsleap_warningsocketDESauth_subkeyststousmidDESauth_setkeyrestrictlistDEScache_dkeysntp_optoptfull_recvbufsnumctlinputfragrecord_loop_statssys_authdelay_startfindpeersigemptysetrefclock_ptbrefclock_pstreadleap_timergmtimegetconfigsigsuspendrereadkeyssys_pollset_sys_varrestrictinit_timerrefclock_ioctlfield_parseeventstrDEScache_ekeysinit_peer_starttimeconfentriesatointp_intresatolrestrictionsrefclock_trueclock_stabilityinit_monrefnumtoaclock_selectnumrequeststimer_xmtcallsctl_clr_statsemallocrefclock_wwvbustotshistrtoknumctlinputerrleap_setleapauth_findkeysyslog_filemax_no_completeatointsys_unknownversionleap_hoursfromleapprognameauthusekeysendpktnum_ctl_trapssys_bclientsetpriorityinit_restrictnumctlbadopnumctlbadversiontimer_overflowsrecord_clock_statsvfprintf_environadjtime_endmsysloghandler_callsinit_iontp_syslogmasklast_timememmoverefclock_receivetransmitsys_precisionforkgetpidinput_handler_iobcache_keyctlsettrappll_statusrefclock_atomadj_systimestep_systimeconsensus_leaprefclock_transmitdolfptoa__flsbuf_GLOBAL_OFFSET_TABLE_authnumkeysinit_authinit_refclockleap_dayofleapmonitorsleepalarm_flagsigactionunblock_io_and_alarmtc_countermon_startsys_badlengthauthhavekeymon_stopauthreadkeys__ctypepeer_all_resetauthkeynotfoundleap_indicatortstoushileapbitsio_unsetbclientcalyearstartabortgethostbynameauthencryptnumctlinputrespget_systimefptomssys_newversionpktclocktimeinit_libsigaddsetDESauth_paritypackets_sentatexitsys_peerpps_sampleexitprocess_privaterandinit_leappeer_clearalarmwas_alarmedlowater_additionsmon_fifo_listleap_actualauthnumfreekeysactivefdspeer_timeresetgetrecvbufsclockstatstrpeer_resetopenlogrefclock_leitchmon_mru_listrefclock_traktimerqueueMD5auth2cryptDESzeroekeystolowerclient_limit_periodsys_rootdelayhourly_statsmallocDESauthdecryptsprintfinit_controlnumctlbadoffsetnumctlfragsfilegen_setupreq_filesys_limitrejectedunamefdppsmfptoarecord_raw_statsinit_utilauthencryptionssettimeofdaybindauthnokeyctl_auth_keyidDESauth2cryptcalleaptableap_monthofleap_initsigdelsetDESzerodkeysdefault_tickfree_varlistlast_offsetsetsockoptsys_rootdispersionany_interfacemsutotsfhimaxactivefdumask.umulfast_xmitadd_varfputsh_errnosyslogitgetstartupcaljulianrefclock_unpeer.uremrefclock_nmeaadj_host_clockkvm_readstep_systime_realDESauth_dessignal_no_resettime.remtimer_clr_statsdrift_compauthuncachedrefclock_processcfsetospeedres_limited_refcntsys_stattimesys_reftimeauthkeylookupsclock_frequencynumctlerrorspackets_droppedsys_authenticatesscanfpackets_notsent_sys_nerrleap_maskpeer_clr_statssys_stratumpll_enablectlpeerstatusinit_systimefindinterfacevsprintfqsortFindConfigio_multicast_delsys_oldversionpktcalleapwhenrefclock_gtlinfclosesetvbufsys_errlistpoll_updateio_addclock_simpleMD5Updatereceivepeerstatstrdup2default_get_precisiontcsetattrrefclock_openinit_randomsys_clock_offsetwaitatouintselectsys_badstratummktempntp_getoptauth_delkeysauthistrustedcache_flagsstrncpyleap_processcallspeer_hashpps_controlsys_badauthinit_protomfptomsrefclock_conf_DYNAMICauthtrustrenamerefclock_controlfindpeerbyassocfscanfpeer_freetcflushrecord_peer_statsstrncmptstousloauthdecryptkvm_openpll_controlprintf__iob_sys_errlistustotslofilenonumctlresponsesnum_refclock_confinfo_auth_keyidcurrent_timestrcatpeer_free_countleap_processsigsetioctlproto_clr_statsrefclock_actssetsidMD5authdecryptprocess_controlwriteclock_combinestrrchrsys_bdelayrefclock_usnonewpeerlocal_clockctlclrtrapauth1crypttvu_maxslewsendtototal_recvbufspps_enablepeer_unconfiggetppidnumctldatatooshortio_timeresetctlsysstatusnumtoa_exitauth_havekeyassoc_hashctltimeresetsys_phonentp_optargadj_frequencytsf_maxslewres_timeresethumanlogtimectl_trapenvironperrorsrandclocknameinitializingloop_configerrnolib_initedntp_opterralarm_overfloweventsunlinkVersionclktypespps_updatestrchrtvtoaclock_updatestatustoainet_ntoaauthkeyuncachedkey_hashfreetypesfindbcastintercloseio_clr_statsallow_set_backwardsys_offsetMD5Finalrefclock_buginfocfsetispeedsys_refskewatolfpopennumctlbadpktssysstatstrres_not_foundpackets_receivedrefclock_as2201req_keyidio_multicast_addstrcmpunpeerfgetstcgetattrtimer_timeresetsys_lastselectutvtoaio_setbclientDESauth1cryptset_tod_usinggettimeofdayloopback_interfacepeer_demobilizations_edata_PROCEDURE_LINKAGE_TABLE_kvm_closefopenrefclock_heathblock_io_and_alarmmemsetrefclock_arbiterkvm_nlistsys_nerrnumasyncmsgssys_maxdclient_limitbuftvtotsmsutotsflofcntlsys_refidrefclock_reportfindexistingpeerdefault_tickadjio_closeclockleap_happenedres_foundio_addclocksys_clockstrcpycurrent_association_IDMD5auth_setkeyreport_eventpackets_ignored_etextauth2crypt_lib_versionrefclock_newpeerfflushcaltontpleap_consensuscloselogustotsmidsetitimerfilegen_confighandler_pktsstats_controlpeer_allocationsmemcmpinit_loopfilterstats_confignumresppktsgettstamprefclock_localadj_precision_ctypelib_stringbufauthfreekeyslib_nextbufsys_processedwait_for_signalprocess_packetcalyeartabmainDESauthencryptassocpeer_callssyslog.udivres_callsfindpeer_callstotal_peer_structshumandate.divassoc_hash_countceventstrmemcpysys_authdlystrlenkill_asyncioleap_notcloseproto_confignumctltooshortreset_entrieslinkrefclock_datumlocaltimestaterrorcounterMD5authencryptMD5auth1cryptstatessys_leapcorrect_anypeer_hash_countinit_peerinit_requestnumctlreqsetlogmask_finintp_optindset_varauthdecryptionsrecvfromcache_keyidnetofrefclock_samplefreerecvbufranp2fprintfdebugauth_morememgetauthkeysclock_filtersigprocmaskmon_enabledtimersysconffree_recvbufsfilegen_registerdofptoafilegen_getfptoaMD5Initcache_keylenconnectlibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1`aSQ=Q(4b@L7Xd?p<|و@ٔ٠ ٬ٸ=& !x$0<oHT`mlxڄiڐڜEڨڴIY -,8HD*P\hntۀی1ۘۤ۰ۼ 5(:4@LX0d3pn|܈ܔܠ]ܬܸO| LQ$0<ZHT`Llx/݄ݐ`ݜݨݴzb @D# @  t@@, @ k`"@R@@㿐@//  `    㿐㿐@@@ߒ 2 `@@@&`@ 2@ 㿐 @@̐ 2``@ 2@ 㿈'8В`8`؀ 2* `0@e 㿐"  %)?@k" H8aH@}?H d"` l ? D 8H8 %`@H%` `H@ზ 8ۦ@`x?"  H@#`" " %"@q@n"%"@l"%"?"" H@ `8!<b"!k`H@U`@Q`@Ma(@Ia`@)  쀢  "b!Hbؔ @@?$X "!" !,' @k"HH" # @)"\?<"b <a@"a@ @p ?`@a@ @d U" ?#8aH@|?? 4* H@b@8 H@b8WXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpX4XpXpXpXpXpXpXpXpXpXpVVVWXpW@WTXpXpXpWdUWtXpXpWXpWWWXpX4XpXd  @4 8H` %`@H%`!H@ 8H@Iǐ 8 "`\@KH8 8@4ɒa8H@I 8H@t0 0  4@4 t8H@I o8@^H   H@ bxa8@u ]8H@B V   #@Q8M" K!<"!k`H@=`@9`@5a(@1a`@ @n@!b0Д@-,` V!*`@;@c;@bZZY ]Z`$`axY Y acddee`gY jkk^mmn`8ppq0^L_o<o   ,   @~b@g ?   ?     @|  @^b?   '$ ,  V#4;7@c 8,* ][T[\ \\\\\,? @3bk  ;@ߓ  `  a, c ;@  Y,,? @cPN   ;@ZG'$,? @ch=  ;@e `$5 4,,? @c)  ;@Q  4!  ,,? @ےc ,? @ђc   ;@1  , w @ @cؤ #\#` $@"#d @{ @cؐ֐#\$@#`ʐ, @H   , @H  @H  , +@ǒ`x?"  @k`%? " ?@޸@޵?@޳?""?"" @R` @L`, {#?; J -  - = +"J ` `J`+`?`= `?` $b  b @$b  b *@$b  쀢 b ;@\ 8, Ƞ = @2 8,  1;@  ,@2 ,   8@2a, % JXJ@2 @X  @2i J`J@2 @ ` 2 @2X   @~`h, @I,  @~`֐JJ@  @ߒ਀ '@}   '$?', M X"l;7@Kc@ 8?,* cHbbbccccc c(c0c@,? @~a`$  ;@G  ,````` `  `@ `$ '$a,  䀢 "'Ԁg $@C_, [@q0  0 @~`N  @~`E4@1 @, ;#@L;  ;@}a ,@rr ,  %, !@q(  ( @}a8`  @}֒a`  쀢 @!("!t, @  @}a" L,  @}a@  ސ  , ?Z #Р;7@gc " ,  "DC,,@ ? a ;@ /, b;@}t ',? b8@}j ,  ;@P   @ ,@ys  @}Pb`,, ? {`72 7․  @C  g@yM @}*b^,  @} bT@   N?   8@y-  @} b> @e D, ? Z {7@ǒc ,, jhhiLiiiiiȲ` {@oܒ\  :@x @|גc v, r/:` {@oǒd  :@x @|’c@a, ]/:` {@ol  :@xФ @|c`L, H/:`p{@  :  >/:` {@p2$ $  @x @|c*,    :$ :$   :  :  @ /:$ 9*/9/9?, ?b`8@4 , @D֐ , {'%#@L; ;@|8, $`;``@|c` .`,  Z,  @|cQ@K   @|` E ` ,'$ M`[ `;8@ϒ`? 8>,* lxlm m(m0m8,?  `@  ',?  `h@{ܤ,  ;8@`8 '$ `;@{ʤ ,  ,  ,`; '@K,  @{`ܐ@,`  @`   # @Jǐ,  @{`@o   @{{a 쀢 @ՒaH@ڱ @"  "!,  @{_a`@ǹ ̀?x @{Qa@ڮa@ڋ @ v" ,,  @{9am@nΒt t #t|@  @{(b\@څb`@b @Ӕ t9M""x,  @{bpD@n 2Ȑ @{b4@]b@: @ 9%""|, !#8;@`x "/ @.{ ,  ,  #8;@`x " @.e ,  , 3b   <`<;@ , ?*`" * * @H" @9㿐 $@J " "J #" "  &H   # J :   2J J " J`# ` `* J #  2**J " "J #     " "#&7@b㿐#` 2@ c(@z' LJ@2  @e 2 `@  k L   k * L   !`L  . `*@U , 쀢   #X@-``$L` c@yє 쀢 #@  @$  6@ {6` 쀢  &`!@uՠ#@ 㿐@ 㿀\#Hb `H"Đ` @ @@`0 $b `8@y0 쀢  P@Ӓ#\#`#d#h``H"@Қ㿐!H" "$"@$"H@"āx!H"  @y_`@ؙ @ز!t`$"?#"a"!@mm! 2@ @ @@@Ò @   */! @pxH""`< ]a@y"t@ج?@ت@W @y @C @y`@J   @y `А @y 㿐I@؎"@ " LJ*#J*#k" L#T P*`&؀@6*`&㿐 쀢 #h@/J#. 4 K4 !K b  `, K" @n$ K a?Ka ?K!Ka @a  "a 㿐-쀢 @#K " $ < 8 "K`  "! =  D ". < 쀢 @ސ# 8 4 `4 "`4  kb "b  jc "c  @k`< "`< `4 "`4K2  *a `` 쀢 @ש#k`X "`XJ*K+K3K XK*   *K =*!+b%b.b >K2K"!K*"K"!K"! "a B22 B" 8K F2!?  = a s"a ?# 4쀤 1 +b` $b  8@Z@l+b 2  8 쀢 b@N XKb@nB"   쀢 @@ p .b쀢 @8 %bK "b K"b8R!P*!PK#K%K'R ဢ@2 쀢 $?@`?   b L@ €0 R? kT `"T !~ !@   !|2  !}2 k2 *!@?    *2``@ d2` !*`( ! * 2  < =(k / "-  98 2 X(*`J@J݅(@  * 2 㿐 KK!  Ka"a *a"a *KJ#"@` `" J`而``"*@JK !? @*K!2 K " +2   -'#T &  X? '*`* 8@ `- $5  @  $ 4 $ $ (8KK " ` KK`而``"*@KK!J!#"@lK@a?Ka?K!Ka@ `8 "`8ap "apKKJ#"@"㿐+ K "aKJ#쀢@! `" ,*@K "@  G `" *@`" *@ "`" *@ "5K@ Ka / @K&@"N`, N   =,  ", `$!"@ 4 @֔, `$ N(, N   =,@`@r4 , N  ($x N(, N   =,@q , N  ($Y N(, N   =,  @o , N  ($8 ȔN(, N   =, @*`LL 2 ($ ȔN(, N   =, @ `LL 2 ($ ȔN(, N   =, @`LL 2 ($۔ N(, N   =, @`@̒`LL 2 ($ N(, N   =,@ql, N  ($ N(*@ N`  =*@&  (*@ N` ("@} N(, N   =, ($  ,   `" ,  ,`@@p @9 4 N,   N, N  @߀`($; 㽰?`b *`@D\t(Tl,@X8! `X08! a!08!kJ`l08!`008!`0 !! 8!=a 0!Va 08!`08!j c0k"`8>!!``08!>`08!X`08!qa0@q8"08" k b08"j~ c08"!J"8"$!I"@ӌ0|8",i 0w8"4`0q#8b<@x$!Ѐib<b<@Đ@Ò`@j^` ,^@ @2`@]` , `@ӣ`@ 뀊 @8"H1  2-  , @2!`"J`="`J  `" , `@E `@ ۀ @   ", ,$& 㽸?`#:c!H*`@$8(<P,L`t  `*8 "l`*8"t2``*8"|2` `08V"8"` 0a`8`"`+  `    `` `"`0  0`8"` 08"` 08"`!08"~`#08"y`%08"t`&08"N`$08"*`008"D`40`# 8`* 8"` 0"`80"`808"`<08"`08"`08#`08# W`d08#tR`,08#.`c0{!x`T8#&" 0s8#$a,0n8#,a40i8#4a00d8#<`X0_8#D`fǒ`h0Y8#L`f`0S8#l`fa0M8#T`"0H8#\aT0C8#daP0>!8#@&!Ѐ6##@R@Q`@~ހ` ,~@ @2`@` . `@1`@ 뀊 @   ". .& 㽸?` d"D*`@xHt| 8` "8J 8#@08#``08#` 08#|`08#w`08#r`0ɀ8` 8#`$08` 8#`,08` 8#`402`4` `4 9 `80 ْ`809` 9 3`0` `N@  99 a 0y @80q19 @/$!Ѐi  @{@z`@!` , @2 @  ,  @Z  뀊 @`@`2 ` 2.  ,` @2"` "`J`=" J   " ,  @ ,`  ڀ @   ", ,$ݔ 㿐7K Kk H," & 9K" 7K   2 19 Tk3K @2z``NN2t`=b:NNNN =*NN=2U" b N"b*Nb".bN, =.bb#b*<"" 25"  bKN"b*Nb N," b. b*N. kN."" b#`@ 㿐K!• @ ݐ 0 JSJc2`z 㽸 쀢 K!@ K!• 0; Jc2`! ,````4>( 4>(` !  2`|$`%,`ה 0 @:  0ŐJcK 2`,8 #` #    㿈K!• JcK 2`J*#8bH+8 @|  %@k/ @ϙ a ` "H `  @* @ ,/   "`9``$ 8bH      @  " "H @>T "H x`  s@08 "P` "P   8"H`a` ]` " ``@* ``O@  0I@ ֐ 0EJcK 2`,@j % @  % )8 "`*쒒 `  @,   "`Β``$$ 0 @'08 #` #   @: 㿈K!• z?Jc2`?8!^`  8"HޒS` Z ` Y J@  @b耢  [ 0R 耊?H "'@@z`@w@j$ `J`=*J   =*@θ@_ `@А@γ8 "  0  0?@  0  0  0  0 @K!• %k"`" `* 2/'  ! `` `"  `* 2``2 `*`` `@  `* 2 'Ӑ 0А @R@t0` @'K<Jc2`)8@  @i @ # `  ` Ѡ @* @ ,/   "` `` $ 耢 G   C @  "  @ͣ 耢 0`  +@09 (`  ( ”   耢``  `" ``@x ``@  @Đ@ 㿐7 㿐`@`/ 0  K   $@   ǐ 㿐`   $@    㿐@!" & " &     ~  *&!x  " t" #TxH k  2 ?x. ( + `L?#`L `+`2+("`4&(2#(" & `"( 2`2  "("  & " (@:( (  (2" # " !x2$""" " " " "*' *& k *&k`L  "`L㿐@" `&  *`&k`L ?"`LT x:   " (2  (2 (@ ( (  <`J cހ  *c'J ݐ @?" !@n!* @n2 *  @l3` 쀢 !@n!@* @n2 * @43 `,L?`   @i @h  a`.a`.a?" "@n[* @no2 * 2 #\ a@l 쀢 *!@n?!* @nS2 * @3`k!@n(! @l!@n" @Ք0k L K *aK"!K *bK*"KJ#"aKaԀ A"a44    y`' @$!"X* 2` ʔ   耢`]` 2Y` " ``@ˀ ``J@  D`` 44a  $ 6`' `@$!"X* Z2` `   `` 2` " ``@=S ``@  @    p 8 8 4k j k < 4k X k T x     㿐`@f*  &@?,`@F,`@f2@@"`2 2 "  2  㿐`A?`5` 1` J`="JN@ 2 JJ`=J "JJ@2 `=`2  @ @fP$ @ 4 " @㿐8"H㿐     @   @̐㿐K"#Ԕ K#Ԁ "@"b0K"# "!" k""j"#" "!"!4"!k"""!<k" d"!"! a@" @@ {@ 쀢 `@?"hP 쀢 ".@12`Q! 55 % 8b@A ?%,%H%L%P %@  @l   @jƒb@ ?#$$"0@Za 6? @jb@ #`?#ت@?#@ `T` %@$`$`$` $`$`0a$`@($` 6@ @jcv "s $ @@  $ @@   @  `$ @" 0a @  @j]c@T @ @$  $   @$  `$  4 4 0a@ 6@ @j>ch@x $  $  $  $ $ 4 4 0a@ϔ@ 6@ @j&c@` $ ( $ ,  $ 0  $ 4 ` `T2  TT `i @ɩ!a$ " k" @[   6aQ!Ƞ? `T @@ `$ Ta` Q?#ĢQ!-?+  $@ @@w   @iʒc  TQ!" 22?#Ȕ ?"`a` 6   \ @ @/  TQ! 쀢 <"`!a @#  63a?#@8#  @@Ҙ @+$@@ʐ  @   @ $@@ȿ8T ,@$@@ȵHa ؠ Ta 㿐a` @ Q! l T @  2 T @  @$ `$ @T`@ T㿀< @8  a'!@۠ X @i,0  6Q!` v 2@ 4 ` 4`@  `T  ,**Q@bȠ?@ @\ T 4@@"  {2  @  6$@ @L T % '!@Ȑ  @h '?$ 0@`@@ $,'',* * Q!  @o ?'! @f' @h @a` " @"㿐a` @!Q? " @  @  @$  ?$ @`@ Tx<8  '!@d! @h09''a  @2?)Q! @ &a`#  2a` !@  @Ǿ T$$   @ ?2@ @hOa(@ ?$@a `@ՠ Tئ ''D  @ڔ 6 @h4aP@n !?# @Ԙ   @h&a@Д  6Ha#<!8T @ `?#\@q#` @h @Ǯ J?@>  쀢  T!@E`䀦4"`6 k+   ,@  @#  # D@LJ   @gْc`?c @x   @gʒb0 쀢    !@q"P@ 㿐@\6 k"*   * *@`䀦 "      2*  +@ 2  2" a @ Q|\lT @"  T   @  TTT`@ T㿐1 쀢  !jk d!<@ƭ"h!j#`  쀢 @ƣ"1 @Ɯ"K"# $#K`##! @g=b0@b,* KԀ"@"b0ሐ "`k"ሐ "㿐@!K&`"Ԑ @5"`㿀 쀢 @c* @c'` ##@#P @@G#\ `D /@ @Ɣ ?2 &`D @fcX 2   5"  K  2? @"@?@ @{ ?$ `P &`P`#Ѐ %" "  K" 8 " <  !@bŠ# @f0 `Lk &`L`"K", 2@K Ԑ &*  2 ( @+@ - #?+*K"ԝȆ 'D`'<',/7Kkd'  "d'k<@Ԕ ''  <@ w<Dk  c@fD` ck<@Ů  X%#4 * ,  ?p( `\@ ?` @f` 4 0:@c['D<a Ē@ d"<31K-j)`\, 4*   p(@"N*@` "p`@Ũ!a ?&a% !@`&Ԁa( `<@Ŕ?$`8 c@eҔ$@&Ԑ  % $`$`$$`($`,#$`0 `$`4K"#$@@$@"@&#  %` $  %  `a ? ?k9Q!,* * `1 '4`2 @4 " &4,*   p(@"*@` "p`@ 2  . 'L`! P@L 쀢   TH@'H@Ęa4 Z"a4a V"a'L! LԒ%`<@`@&԰?$`8 @e(`  $@&` 7% 0@i2 쀢  H`@Ľ'H``@Y$`$$`(K#$`,䀢$`0|#$`4K"#$@$@"Kj"c H "`% H "T` |I`a   Q   T   4 k  k d <x 㿐@a  &䀢 " "k  2+   * @@#  㿐@!a Đ&@;$ Ā " @$  䀢@4"k  2+   * @@#  㿐a`Ā2 "` "@"`2@` @da`0 㿐 c @    @dO` 㿐c @   @d@`@z 㿈 r@cP@a{p@@ 'r#P'! @ #Ѐ  @!0@N 㿀@ϐ@ϒ @̒  @є 㿀@ÿ@ÿ  @Ĕ 㿀@ò@ò @ï  @ô 㿀@â@â  @ç 㿀  @ß@ß @Ü @Ý㿐Š `䀤  ` ( j(k(j  k( 0 <k  P $k Dxa<@`"a<@\  7"@@䀢 ;6 *! $k "` "$k "   `&!̀ 2#j`2? ''@a ?"  @؀ !@!p!x@cW j`0 "`0j*#T!@`P "`P @k` "`k`D "`DT!@  k*"k*""@ T!@$ 0#k b j # 2*b *!  @ k*""@  X a,k*"!, @xj 㤝㿀@`?@[n  7" @ ?T!@8  @bޒa j*#? kj*#k*" k  " 0aL" ̇00("  a k j (  k h k 0  ؝㿈`- &@# kh !x"h!xah"`a0    aD" @ !@^q!@^` @' `'쀢  '8 '耢# \  ! @^O! @bS\? 耢 k1&#@"k" `'j*#$G@_ڐ?"  @ !" # @^$b8 @b'Z  ŀaS" !* ! 7a`%j #@8a :  a< 5"``- 1 `(* 6j*j #4 "  :  < ` "`" Ȑ@*   :`" "  :@ " a ̀@4" @6`'"`' * ?#@  ?@*`V  @ #& j ck *" ?"?"`'?+c"7 j #k`   "` "``(+#"`' ' ؀ ?# 3` @ : @ @  @@ 2 *  @  ' 8' '?#  !?W*   #@* $a   "4"!& k0 <: : "@@"0"`!xk `Ԁ  "h"`a ! Ƞ"@@]:` @\  @\ j #@L j #@*㿈!xkh T!@8"h`?#@2` @ 0 @@` *  @  #`?#? #?!!   x ?"  @`bx$!!̀ !$ @a Ȁ6: :  a "@ " Ȑ : ":k"`" ' `- 2' `* '쀢 '?c: *   ' ' ?#: @*` @'?'@^]`à"` "`㿐 쀢   @!`@\U"@ !?@#@   ?@*`V` @ #"a ̀@ 4" &"㿐" a""a""a""a""a В @"k#x @ 4k" @{ 4㿐! $ #ab܀  ka""a""a@""А $bk#x" " k"" " $ $"  (  aa@  "@""АД`kx  k 㿐 a  Ъ -`@ < <    $2 . K 2 $a"Ѐ #aa"Ԁ"Wkcc ?" "c@  "`    "`bЀ b@]b$b$  $ !x$ $$ $  4 ,, . 2  , / $$ ( $ @ " (@"$  (@  !x $  $  2  , /  4 ,"  "`kc|$ c|?$ c|" "c|, 0a Е-`$"k|$ |?$ |k" b"|$ b̐?$ b" "b́㿐@Z$( a"В &""А4"a"aؒ`("Ԑ "؁a $Є(@2 "@2 㿐!@ `!# "@ "@ "@ "@``|$"@ "!D"#"!"#k" ,"!Ȕ a"Ȁ"@"a "#"!|@[> !4!0*   4!0㿐@Y' Ȕ"@"a|`"㨐 "|` 0@(@ "  @2  2  㿐   㤓2  a@*  :"'  @21  @2, 2   + "@`, @@` @Z~  @^[b@" * + " *  2 `2$`  c*   "c*0 `  2 ` 㿐` 2  ,` `"?$  * @!@ 2 $ ``2@`2``,` ! " @Z" @]"@ ` ,` ! "  " `2``2 c,` ! " @Y# @]ǒ D"` D`  H"` H D"@& H& D&a|"Ȑ "a|㿀\`  d@Y #\#`#d#8@ ` ", ` ג2   `. !. ). '. ( ' '. & *. %  @ . * < 8   . + . +. b& X#\#`@  * . *㿐\#a| `a|Ȑ?$a|"Ȓ @!$  $  $  `$  $ $  $   < 8   , +     @   , +, +, !, ), ', (, b$ X$!0 ' ', &, %! , ?, $ , #!,$!H$!( *!"04 ` *` 20`20!x?$!L$!\  $!X@* < $a|"Ȑ N"a|$ Lz#c̀`$ Pk, ", '2  ",, ' *  $ T T2 '* @*`k#@` 8$ H$ D D"`" @2  * ``$ "  "  ` * c&  "  " 㿐 Œ "?#@!  `* `"` ``   `**`! *`*7  2 `*   D xk t  "!P"!T"!`"!d"!h"!l"!p"!tx"!x"!L㿐!@ @ " ` ``|$@8 !   @ k"` X  `- 2  `*  "@ ! +   ! @  *    @P X   X  X )**` `8 !  !!/`` @k/ l@*:  :@ & / 0/' ?`#܀  `? R`* @   " j" #! ''   '' ' ' ' ' * 'ئ@Q[ 0@Xڐ  ?#j2 @ ##@2 @  #` @*` @ & ?@&  &  ' 'Ԑ@QZ 0@X  : 3  @ @  @2` @*  @ ' @8@' '?#j㠓2 @ 2 @  @@ 㠘  *  @  ' @' ' , ,"` " , 㠀     + ? " b 0 쀢 $B!P! @W$#jcc`@V @I1!P +   ` @ @X4  ' 'Ԁ     + ? " b Ř 0 쀢 $ !P !@V#@!P &!P ! "g * d`" d *  . ! d*  1. d `  퐒 *  k@`!x&!\k" 2 # '>. e #@( e '7. e   '. e1. & & (@,`. &). %` c ?. c & '@. &'' @W * @ @F *  . c & (@`. & *  @ !  %. &?j #. & ' & *. & D`"  & H"` H D"@& H& D & % 8  ' (  %@ 8  * !x & T2 '* @*`k#@`   8& H& D D"`"㿈 쀢   !@V%#@R7@   <2    <kb  "b k`@ "`@a( "a(    5 `@` `0  0!@?b  `"@! # @Uޢ ` !@Y0  a4 "a4 $ (  8`3 Ѐ 0 @ `0   쀢  X@ܔ Dk` j"` `쀢`  x@͒ 2    `   {    `!   @U~ ` @Y[0:1 @Mv - @N6 ` `&"@ 0!@O 0   쀢    ` `" @v 8` }#ԓ*`@ Ԓђ k P    $   #\#`2   !@U! @X0!x *`$!X" * d " * X *$ X $ X , *" ( *  " @@2 * 멒 * , * !`?  " ! ( #! @ !?`~!*`@(p`}~!*`@ ,k ! iI`c~"L*`@` ,@U PH@D+( ` B   0;: 80  $   #\#`2  ,@)   @ F00 , `     , ! , *` * *@`!` &!````"` '`$'`('`,'@  " `'`' '&  & . ,Ȁ@  @2   ̀@* !l &!l Ȁ@2 @ ̀@2@ , . ,@   @2!h Ā@ !h  ,`&!h . ,Ѐ Ԁ "  ,  Ā  , . ,& & ` &@. % 2@ , . ,@2   `Ȁ@ T!@* * , . , * 2```4 ,` !!@4 ,   , @. ,#@ #@ $ , , . , ,  쀢 ! @S!@ ,@R`   @P @°  И  @!b`@2 . @ . "`0& \ K k !4"  & \` " . #`. $& 0& 4` & 8`& <`& @ d 2  d!x&!\ '. e. & d . d'' 􀢠Д ?#3` @ : @ @  @@ 2 *  @  ' 8' '''Ā ?#3` @ : @ @  @@ 2 *  @  ' 8' 'k@J l'ؐ 8'ܔ  "  r"@ *`"C!H ! 2!8 `. *!8w?# : 2 @ @  @2  *  @  '!4ؐ8@'ؐ '܀`[ 'ܐ8'?#@  ?@Wܓ*` @ #&!H'!H* '!H ?"@'?#3` @ 3  @ @ @@2 *  @  '耊'ؐ 'a!,, I" ?#3` @ 2 @ @  @2 *  @  ''ؐ 'ؕ2`؀`' ' @ ֑:`'쀢?# : 2 @ @  @@ 2  *  @  '耋 8@' '?#@  ?@W*` @3 # 쀢  !@Q!h@P   @Oz @)#@ #@ $ , , . , , " 쀢 ! @Q!@ ,@P   @OR @ 2  茒 ؔ@  耒@k" "  *  . ! 㿐 쀢   !@Q!@Ґא *  !,2`!0@ݔ!4@Qk" # a! *a!  `X 8 "!  "` `"`!,&  0 "`0?!4#@  ?@*`V!8 @ #& !0!D  4@ !8 ! "k #,`X  ` @  " ? !0 !0 @P `" "`@q ,`X"  "   !0!D@ X" ג  !! В 㿐 쀢  ! @Q!@. *` l ! h  & %. &`@ j # @ (  ( ' *  . & (@8. & '@*. &. & % &8 '*   ?@Q *@x@@ ax*  D` D T %`" & T H"` H D"@& H& D& T2 '* @*`k#@` ( #   8# #" "㿐!@ @ " `@ ``|$@k"  ?" @ @TQak"" *a!㿐 쀢 "  c !@P^!ؒ@ c @ &!0  '. &"a@ 6"a '= @.!|.!}.!.!~ & p 쀢 ! @P3!@`@P @O    @M @N! !,!( f"@&!(*a "a"a`ha: @", ,   f* " h f@* " `" ?@# f@ *  ?@*`V` @ #"Ƞ    f* "!>'Ѐ"% f 6#4? $ ` @+#?+@` ` &.@ݠ f 6 f* 2  86 f * #@S&!0h&!, *  &!4 !4?#@  &!8?@*`: @ #&!<   #*`@a&!0 * a `ȑ*  Ȕ@,   ? 2 !0!, &!0  0 4: a,a " " &!@      쀢  @j""#ب #'А?' '' ` @ ``|!9 `1  g@!g@!g@! `9999``d h ` #`d`<# hl "l9@M dg"a9@M hg"a9@M lg"a  !@?#!@+g'g `/,`* +a~+a+a| `*+a} +`*!, `d!a@"@  #a@ `# ``8 @"@8 @ !!8@a0(`ap #ap`<@: `-at #at" Ð" 2 `/ `*  `/   `* ޮ  +a~g!- "@a4'a8'a@'a@ *`' 2 2`  @ @ *  @ ' ' '褄 a,᜘ * *  @4a2 #  ` a# ?a, " ᜐ @"`"@"䀢  :  2 @@  @2  *  @ '8@' '耤a,᜘ * *  @4a2 #  ` a# ?a, " @"`"@"䀢W  :  2 @@  @2  *  @ '8@' '耤a,᜘ * *  @4a2 #  ` a# ?a, " ᜐ?@"`"@ "@`2+a~|$!, 쀢 " -+g'ga,@ᜓ* @*`   @Mq@Ò&a L (g! g! ,*` *   "` (*` *   "`@`*` * 'А '*` * 'ؐ 'ܑ,`( -~g!  "  .!~g!"k"    ?" @ @Pak"" *a! 쀢  !@L"8@L @5 N g !, @a4 4> a8@:6؀422+aa8܀@:*+a `# a@*  @(?:!(  : "`"@!(`"@ "?! 쀢  1g+'gᤑ,@ @L@K bP@˒` gg, +a| `4 a0,a( " #?g!/@7 ?#  ?`,?M 3?1(!4'!8'!82 3  @: @   @2 *  @ '!48@' '耊@ 쀢  '8 '耢@4#@ W*` @ !4#@ 02 @"!D?* @ (` * `6?( @"`"? 쀢 ! 6-+ga,@K a@a4a8@K @J p@? @*!8#g'k !-a,*a}a `* @*`*a & a # #@ a8  -a8 `- " Ⰰ@" `* " a< %؀"$Ⱔak"-  k/  k""&D4 "`䀢 8`R"`   !G" .#؀ *! &k""'!D!4!"`䀢 !8` "`?"  @O3b!x 쀢 %" `!``"؀`g!k""g!@: 쀢   `!``"@K@Vk"@# ?  @K: @K #kb  ' j*?" @ b #c@N`2 k.` # #"`!@.`.`Ԁ( .`&ش?`?&?&??.` .`!4 !8`  & ?@ + + ܆000'p't . 6>  2`@('t@ 8'p'ptp0't't 8'p@ * 7`,' t0p't't8'p@  6 tp0't't8'p&0&t6`6 @@ 2(p't 'p'p+ + Ԁ: .`&ش?`?&?&??.` ؇.`p t bx | 8  쀢    !@J #0@8`  <  8 3? l X*  `8  a!/`` @/ ( /k l`0/'* :  @:@" ?`#܀  `? R`+  @   "h" #! ''   ''(',' ,' 0`''ؐ@CK 0@Jʐ?#j2 @ ##@2 @  @#` @*  @ '?@@' '''А@CK 0@J : 3  @ @  @2` @*  @ '@8@' '?#j㠓2 @ 2 @  @@ 㠘  *  @  ' @' ' , ,"` " , 㠐 ? $0 쀢 ! @I"#jcc`@H @G0 @J=?А ? $ܘ 0㿀 " @` #Ц"@@@U"`@`@ @  @?"  cH@L#@4 @ :`@?㿈 *`X *a!k*`l" 0" "! `" "` "  " k""j *c@Iِk" P!"a"!j"##" ," "," "!4"!(k""k" k" @"#"!"!$"!@!,"!㿐` H"Г*`@+D+++++d+|*+++88"!$5"!/ 0.O 0+)"!@k" Pݞ㐞|k "`P 0k "`P㠐 0a 2 :   "a "a"! @Lc` 4 (k k @k    @x 㿐 `)``c "c`c "c2 `!c "c `!`*`!*`"?" "! @H#@M|  @K՘ 㿐: #` :"g! @   " ?<" : #` `㿐 ?    !@GŠ#Д 2: #` @   :",`   ` @K 0j@k@Fx#b  @ޔ#ga,`, " & . -. .& L & P *` . *, #!x$# . # '& 8. (@€ 2 '@:  (. & # . %# & 8#̀ k, ", '2  ",,& T & ax* @& T T2 '* @*`k#@` 8& H& D D"`" 㿐  : -"*`@  .€@ & 㿈!P -  .`@HJ&!P d*` . d`':ax &!\:` c ?. c''  * @ ::  . c:", @ € &  T* @& T2 '* @*`k#@`   8& H& D D"`"@4 2?`: ?@ `@ 㿀     ܘ #\#`@C 2 m  = +`:> #:?@` <   ' M" <c$< ": |  *@'?#@"2 @ 2 @  2  *` @'"' '& &   : 2 @ @  @2  *  @  ' ܀8@' '@x&`' '`@`Ȇ(" " `Ѐ  `Ȇ  ``"``"``Ȁ ``І `Ȑ  &`Д"}"}`Ȁ ` `@`Ȁj ?#@, 2  : * ''='=쀢L' 3  @: @   @2 *  @ 'ܐ8 'ؐ 'ؚ}쀢+ :  2 @@  @2  *  @ '}耋8@' '؀@8  2܀@*   =" ͐# ?$, @='='ܑ( 쀢/ ?#3` @ : @ @  @@ 2 *  @  '耊 8'ؐ '?ؘ#@ `?@ *`Wax   " # !x"  `!x " @&` &`&` 㿐!T\` `&!T! @E) 0@`@D @D   @B @D ?@ |  N !`!x`&!`&!X *`? `"  . *. @ & ` &  & &  & <  & @! 2&  !    . " d 2 d ۙ dN $ . d @: " ` 㿀 8 < , ' D 0 w'@@d q䀢g?# : 2 @ @  @@ 2  *  @  ' 8@' '耢 2J , 쀢 8  ! (@DX P@@D䀢-?# : 2 @ @  @@ 2  *  @  ' 8@' ' !@D+ p@~ '" " ' 0'$@?   *@`* "@ 4*@ 쀢    ! (@B @D&&` @Δ!? `W@Œ ! L`''̐('А@@ '//'Đ`@eĀ  `@G 쀢 !@Ā!А 7'А`@  a@@    ah@  @5 a@G h 쀢 !@̔`` @GvaЀ` @Gpb  ` @Ghb@ 㿐 ?  2: #` @ `g!*`,`@@ `W `  `$&"`(&"` "``,&"`0&"` "``4, #` " #`8&# # 8 #$ 8`  # &#` @&#` " `# &#` @&#` @" `# &#` @&#` " `# &#` @&#`  o * ."&$"&("&,"&0 #&4#&8#.!x#" &# & #&#&#& ".= !.< #. $&  6 (& :b*   㿐 ?  W2: #` `@Q Ng!*`+ @@ F  .@&`&` &`&`&`&`&` &`$Ȑ .`  .`?&`&`H&`L&`P&`T `&`X쀢 *  &`\"``"`d`` `:b*    €k 4 Hg  t8 ( 㿐g *㜖*?* *.2 22&`8.  & 㿐 쀢 @u"1g#. . 6 h"#h"#h"!h"!h"!h"!h"# 㿐1h# - 쀢 @R"!g ,#?hh#h##c'ha%h᜖ , 4 ݘ  ha!Hh@x#!H$$a&# $a!h!h!h@ $!@ a " 쀢 @"!1g# 쀢 @ "h! h "#1h! 㿐 쀢 h!@"h! gh!   gh#hcM 0 *㜖hah#hc *h!?h!2p aH "aH㿈 <    $ > ?@# <0@ؐ <2   р А = ̐ @2 ǐ B2  8?Ѐ  >  9  p 09 |T@?@ *`:  "T@` T@?@T@?)ޖ 0 쀢 @n#8T` "{    !t " 0@" 8 쀢 d!t  0#X@R2`\D  쀢 i#@G e` @9 2 ( 쀢 D#@6@ ,% . ' ,' 0 ?#3  @ : @  @@ 2 *  @  ' , 8' '耢` 쀢 ֐ '8 '耢  !t@: 0 2 [ 0 T` / 2  " @ o G 0  쀢 @א#Ȑ`㿐N  !@ !k `3@ ",`") "@ 2` !*`*` * 2*`"2!| ` *`!| "!} ` @*`!}  ` *`; ْβ`㿐 쀢 @#  !@ v`"o  "l  쀢 @h a`  `+  `    `` "`&&` & ` 6 `#. `&. `%. `d. . k"@2`* . `* "`*  . `* "`*  . `* "`*  . `* "a|  . a| "a}  @. a} "`!  . `!. a,& a4& a8& a0& @`  㿀 @   7 s İ Ő 7 ' `   +      ` "`&& &  k. "6  . *    . * " *  . * " *  . * " |  . | " }  @. } "   . . !. X& \& #.  %.  &.  $.  ).  c.  d.  e.  ,. H& b. `6 0& ,4& 08& $T!x"@& (<& 4@& 8& <& @& D& H& L& Pf? & *  h T*@ ` t` x  ! g?"@ ` + + ``4& 8& ,& 0& D& ̰ <'㿀 @0  7  Pv w 7 ' j`   +      ` "`&& k"&  6 6  6 *    6 * " *  6 * " *  6 * " |  6 | " }  @6 }   6 !xX"@& T" & \"@& P& `& $d& ,h& 0l& 4p& @t& D |C. L 㿐 8kb`` " `!*"* X* !!*k l* 0" !" "(k 0! "4"`"``"j #* k P " * !   * !$   * !   * !̀   * !   *    @* !@   * !"$",j#"0㿐 ,ax""@ " a4a(" " kbk`@" " k`c" " a`@" " (㿐l 4``!xk#t"@#"2!| #2"!D !" " $**|g㿐= (axa" a"2 `jc2 2 kba2 " a4`" " kba" " k`da<" 5" $㿐  axa" c"" k`\k`8" " w㿈 `"``" 2`'*``'?'"" k !xk h""@"Mp /@   2      2  @ 2 `@" K   @+  7 {7?  ?    + &   ? ``* ' ? ? ? ?#\ ? #`#d  @ >㿀 7 {7 /@  'ῐ `* 2  " @   / '@ 㿐@  㿐@ 㿐 / + ?$              㿐 쀢 @C#– jc ` "@ "` "` 2`  2` )㿐@ 㿐@  㿐@ p /@ ` ? 2 ` > 2  2` @ 2 `  @"`'   @ В @  77А@'?'  @Р @ %㿐 쀢 @ (  00( k#|#|?#5`x ""@ ""`  ""`"` "`  $"` ,2` .*` /#*` {㿐 쀢 @o @ ϖ 0C k#|#|?651x "@" "@"  "@"" "  $" 0   (     (` "`"" 0" ,2 .* /* Д%㿐 /   9"8` "8@"    @ c㿀 7 {7 /? '䀢 "`?``  / '8? +㿐@! 㿐@  㿐@ 㿐 /@@2̒`? 㿐 $k`|kb" " akb" " `D`" c" axgc" " "q k  D  xg 㿐k L  0.Ԗ  1!5#z  ?ꀢ@2` ""?"?2?x2 ?"@" ?"@"?""`` ((㿐@  㿐@ 㿀 @   7 {7 / 2   'А2  #   '    7 2ϡ  6   8㿐 /   #!t%㿐 /   # L㿐% <axb" "``" " ap`8" " a `4" " kbjc" " k`<`4" $" (k`Xa" ," 0k`Ta" 4" 8p㿐  `X*k b*j #*k " b`  *j#ax" "!< 0""  Pk ""k D!$"";8 @C  7 {7 4 /??'   2'y 0/ Z$, , , , $ $ $ $ $ $ $ $ $$ ($ ,$ 0[@¢8 @  @ D 7 {7 /@M"?'   ݽ 2 < ? (* jjkkk, ' 'А / ' 'ؐ / 'ܐ / '  /  / /  Ӕ @ 8 @  7 {7!L /@T-?' @@S   @a!HD 04$4 ,  *@  4 *"`  4 ,  $ *"`L"`P@@#h$c!h# @ Ȓ  c`` $$c h "ch#" " j"c h "c"#"!(" "#P "a#.$`," `X@ @ː < `,@`p@ 1 㿐j# ` " {`?` `8 ` 2 @` "@ @`2` jc   % ` "`a( "a( !'쀢 a!`,@;Ӡ @   쀢 @t  k"k"Ȑ?@hc|+ax` ,"@ @쀢 $X` @7+`$ax`@T" M` `. `쀢 $A` @7`$@? `.8` @;`$@;쀢 $-` @7`$@;|`$a8@(!` !`$@ 쀢 @6`$@`$ ` @6ܐ @` @ax 쀢 ! !!!ؐ @!% >!x% 㿐`j# " # ` `8 2` ` @ `2  8 @`2` D   `0vO`0s2,`h# h@5J d @ d h``&@"`h "chhch㬐?"c&`&`6`@ ""&@&`! `"`;6``8`! `? "`% `*(6`&` "` h@&?`a "`? "`  @W hh&@c" "c㿀k" "#i "`|i."`"!xk" \k" 8"! k#"" " `g  @:MbT '''' @ 㿐!!xi| @$!x`"|j#`!x@!x2  '* *k#` #kx @`8$" "" `€$`8 xi!x@n@"̀kԆ 0 k \k 8x 㿈@a'쀢 @!쀤 耢2? @9Fb@ #(А @9<b0@v "@@ % $L@!Вb6 $!$!?#>?" `! = +`8 #@8 <    $cL bX@9 쀢 L!cL@O"a," "a,㿐  @     @ 2 @8b@" 9b@?2 @8ےc@ @ז   @8ϒc @ 2   @@#&@  9"x  &@   А"@@ &@  " 9 c0@8@ߐ ""` @ @8cP`@   @8cx` 2`` `@\#耢 & &` `9"| `& ``4  & ` c@8c@ @d 6 @8Xc@  쀢 @@#Ё㿐i" i" i" !i$  #9b$ @3/  #$ *# * * * * * *  *  * * "` *`@*`!i$  $ @3   $ * * * * * * * * * * "` *`@*`!i$  $ @2  $ *  * * * * * * * * * * "` *`@*`!i$ ̠ $ @2  $ * * * * * * * * *"` *`@*`㿐?"  `!``@3 0 @2  j #@7'i %i@`X  @7``0! @2 x@ْ@Ԑ@ m  %i00  `@!i@ $$ `@ @2I$@2F !i$ @ @ݔ`  @א'l'h@` #Ѐ  @72`` `p@37p   @7!`@v ֶh0{@ph@*   `@7 0l֤0i@I# `@7#0_@2`!9"@i` `? ?@D$?`@Ԑi9"@ ? ?@3$?`@Ði9"@ ? ?@"$?`@i9"@!? ?@$?`@0@`X! `@60 @!@@x!@ ?@ !T!@j!'@ #@^ 'i ꟒b@j@  !@2 @2l @1o   @0 #\#`#d#ha@@m㿀!@ 5@͒ !T!@%!'@ͪ #@ %i ꟒b@%@   @2* @1- #\#`a8@}@2㿀!@ .@ !T!@!'@ #@ސ !i  ꟒b@@  @2 #\aP  @I@ h!@ Q@^ !T!@!' @]'#@ +i` ꟒b@@ `̀ 2@1 @1`  @/٘   @/Ҙ    @/˘  @ `@/Ę #\#`#d#h#lah`@@`́㿐@Ӑ#i`  @`@`$`#i` @0m $``@  @,`㿐i @,㿀@(%쀢 @!!@)|!  # !@5Sa@ `<@aȠ2 `< `<@5Ea@ @x@쀢 @`<@K @ !:" :@j  " `p i : $`$"@5 @3 " @R @9 ` `* $`` $$"@"" $"@ "@͐"㿐:b $:b?"bb:b b?"bb@ 㿐@  @4Ԓa@ :b  "b 2㿐\`@ @/@D@/ ""* * ****":b ""b@ 2@"@㿐@  2   `? @@  㿀!:" 2  @ ?$" @4qb @  @ʔ  7 {7 '" @ ?2" @4Xb8@ @s ? @4MbX@ 㾸k#:b 6'h'h'lp @  b 2* * @"  bh@ܐ   b@ٔ D @{ b2 * ,  @n D /  /! /" /# 7$ 7&(@ #a 0@)'P@/?c2  *   '@'`''L'Ha@)˔ 0: 0@ p @3ђbpװ  @+   !:h"3(  +@  'h@m'l4 "  @3b  @a D Ԡp @3b 4  @3bƠp @ 쀢 p@֐"p  쀢 p@ː#p2 `    쀢 p#(@ p!   쀢 p@#Pp ?# @b   쀢 p"#@#p|p$o  &2 2`  쀢 lp$#& o2 @ bp/#*@DD,%  @3c  @3`  @3 `0  @3``   @3`  @2`Ȱ @H " "H "@ J   H 8HH 2(("@@-"@. w 'Ő $ @2@   ` ' @&@ 2  @2@ِ   `    aX@2@Ɛ     ax @2~@    a @2r@   Đ a@2f@ }"  a@2\@ @ 2`Д #\#`㿐:" ##쀦    2   @23b  "   Y  … @^ @[  @-  @rb0  "O  "$42  0\ N   b8 @1 . @,b@OS @,ڐ Gb@)@,Ґ b .@9#\= @)ؒ@,  !@" .+`@#3`' @)’@, b@ . @)@, bؔ  .@, b .@  F@X 9l<  , p  @,v !@": .`@ @{  c@1l@@ސ  c c8@1\ #Ѐ  ch@1R@c`쀢`# @ 2 #Ѐ   c@170 "&@&  & @R  #Ѐ  cȔ@1@@㿀  ? `@cp  "3  " F< 6 @ >0D@7@(/// @)&@N@b&@ <@(///@(ڒ///`"@ 7 /@)k @)ΐ !xTa@$  㿀 @ " @ 2   2  : @9 4 "@ 쀢     # #\#`@ϖ @’ " . @ @@+c & @.  . @,)O㿐 " N ` N@ .N` . N`  / @r /2N@ 㿐:"Ā @" @| 2   2 쀢  8@r 㿐:"Ā`"@"&" @\ "  ` @* $" @E@* "@@ 쀢 "`@@ X㿐 "#" @ " @ 쀢 2)@@c @ @ː  @p   p@  @  @ @?2@ @/`x@@ /`@!$ I @ @ ?" "  <a @/`  @Ք? !#@0 @0  @0  @0 @0c @/`4 @/ @#7 -@@+_@+g˲_1̝B x"#̐ 1 k""3k=``$b&`b   g` $b&`?b  k$b  4@ 20ρ㿐@R 㿐쀢   "`@/ 㿐쀢  ?"`@. kl`*`$ $ *`#  㿈`!x$`"$``c `@*$c  `c #\帒b?b#@  ?@*`Tb @ #F$b$b$b$bxؐ`@ 演 "+ @) @E"  @ `"p$ $ $ $  ?$ .`$!$ $!  $# $@@&@ 㿐` @H `  Z˔&  `$  * *  2 & &   , ؒ"@6  a $` (- 쀢 !( @ - #\#`#d #h#l#pa@ǖ  @n Oѐ% 04 8 . . !x" & OԀ H2!h! &# `# #$`8 v   0  ܔ ' " ''   #\㿐`` ? , $, `($ `ap@  Ւ 0c  $c xؐax@* Ք "+ @( @^"  @ `" $ $ $ $  ?$ .`$!$ $! $# $@@?@4 㿐` @+h   (  2 6  2,  , $ $  &  & $ $  ,  I$ 쀢 ! @   '  // #\aȔ  @  #\ #` #d #h#l (a @x    B?y, ?* : `$9#ē*`@X`ht #    "T! 06O瀢   . O倢 L2.  . !x"& #     ,    9,  Ē 0  ܔ ' "''   #\㿈`` ?੒  $   R T/`@   0c  $c xؐb@ 䗔 ". @'r آ@ %  @֔ `#$ $ $ $ Ґ ?$ .`$"$ $"0 $# $@`$`$`@@ 㿐` @㿀    ( 㣒%쀢  6 "8Е*2@ `Ѐ ?$ " $ *@  $` @z$$ 쀢 "P@T$,  #\ #`b`   @9 "N * 0p : . . !x&  쀢     ! @%"x  ܖ  @% @'Ɣ @ 6   0A      #\@J (  $# /`$ * %:Ԥ*"@ *`@6@ԑ*`" * @ܐ@$* * $, @ϐ@Ԓ`$ԑ*`" * J "$ԁ㿐` @ ?t 0"@@'1  b@  f 0#  $# 㿐i  @ xi!\ @ i!` "@ ``㿐 쀢 !@b㿐! 쀢 !@b 0. "* i` V @  %6 @ !b@u (b@9    쀢  ! 0@db   0@+c 6 @㿐  c8@*0@`&` i`4!].` i!``8. "@i!\ i. "* i a] *#i!`. @"8 @* D . .i!]. &4i!`@&8#X&#`& P c@*v i!\   c@*j ؐc@ @y! ,  c@*U "* i  @ x@d 6! <`''(' '//`@Y 6 (` @S  &! %. 06 @ 6 B#l& & & $& (ŵ  i.`$&`0&`4!] , .`#i!`@ &`8  ,`@@*:@ݐ 㿈 쀢   !`` 8 <@  8 T @#ؓ*@ |8@ 1 쀢 !b@_x (`x@#   쀢  ! 0@Nb  0@)c 쀢 !T 4@=` 4 @@ T 4T :T >T <  , t#\ D@##` | 쀢 ! D@`<c$< B"2 |  *@$ H ,$ \ 0$ ` f4 @@Ĕ T 4T :T >T <  , t#\ L@"#` M 쀢 ! L@`<c$< B"2 |  *@$ P ,$ d 0$ h 74 @@ T 4T :T >T <  , t#\ T@"#`  쀢 ! T@`<c$< B"2 |  *@$ X ,$ l 0@ $ p4 @  0@)M`p l' p' D' H' `  \ ?# 3` @ : @ @  @@ 2 *  @  ' \ 8' ' 쀢  \ ` D H!#\`@h#` L' P' h2? d # 3` @ : @ @  @@ 2 *  @  ' d 8'ؐ '؀ 4 ܀  ܀@*'' 쀢  d h L P!#\`@"#` T' X' p2? l # 3` @ : @ @  @@ 2 *  @  ' l 8'ؐ '؀ 4 ܀  ܀@*'' 쀢  l p T X!#\`@#`   d#\㿐 !m@ d 2 !n@! !m!n㿐 8 $t  <А 8n  =А 8h  >?А 8b  ??А 8\  @?А 8V  A?А -*:*`:`Б*` * ?Д6`2 ?N >*:Б*` * ?Д6`6 AN @*:Б*` * ?ДV`6`  6`8;"O*J@ :   # V`6? 6`4  `4* : @ 6`4V`2 Z$'А'l!m  V`6 `4?6`4 <Є M =?Є 8G >Є 8A ?Є 8; @Є 85 AЄ .* : (8Ѕ((А2`: ?J>* : Ѕ((АR`:2`> AJ@* : Ѕ((А 2`<4 * 8<  xؐ`@ ߞ 4 @"y @'+  @ݔ `# $ $ $ $ ِ ?$ .`$ $ $!a$#& @    ] @@ 㿐` @x   ( ޤ 6 * 2 N (`* )@ 耢 "@ ܀@ @2@& ܒ 1쀢@& @*`@* @@ E$@@"ݐ` ( 쀢 !  @\ #\a8   @E O 0 02.  . !x& ` & ` Z&  0       #\㿐` @ ђ #  $#  $@h%il @ * liap@-*!i@T!p$!p@ x!Xl!p*" $` $`8$`h$`l@ $` @U  ''̐)''/ܐ /``@$@ $`$` !x$```$`$$`  ?.`$&`0&`4.`#!&`8l  $l @&vah@` 㿐 @&laial @? %i p,`` 21l`p@ p@l  ?@* `p@l`@*`ialp*`@ " @p$p@p $p`@p a@&%㿐ial ?ii% !p*  l  ad@/  " , a@Ӑ, a!p b@%i pi l(i(d(d(((((㿀 L a <  8 ,$ ( 0$ , 6 aL a   * Y a , a* :  Θ YL Z ( * ** :`*` *   [$ @ \ 02`*` *   $ D p2`*` *   ]$ H p2`*` *   L ^$ L L : * @*`@*` * *  _@ @2@ $ P*`" * * D$ T H 8#\ 0@#`  = @%lb00x (6 >? T` 0 +`:  #@ :  <  $ 4' 4' , ?#3` @ : @ @  @@ 2 *  @  ' ( 8' '   < ( X$ <#\*`2 @' #bP #bX) h B #b`9#Fbh< hb` ##bxD#bp B Fbp B#bD< hp 'Ԡؐb@L  i `@~Ԁ  !` @ " @$ҒY @ 0@nP  @$ 0`"$ $ $ $   ?$ .`$"$ $bb$# .`' .`( @.`/ 2& @F@;& "ax& `& 2 '* @*`k#@ " &  :&  && "" 㿐`@` `"``@"@&`&@ @А % /^ `(`۸`4`* 2  @c ِ 4` 쀢 #  @  "   `"`"@tc( ^c0@o@ P@ec8 @_c@ @YcH ` ? "` "@& &?" ! !@ #P @#`(0@9cp }`  "` "@& &!x & 2 '* @*`k#@:.&@`  '&cp@1 `  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`&   -& `  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`  & ` 2`#\`#``#dx#ht#lh#p`#t#x_#|`(cx`@| V 0O_ * # c `@i  |` ;"*` 4 &|   |  '||;"ܑ*` 4q |   |  '||t`$` ,` ` 2,`  ,` !xO_$` `# <& '`' (㰅D=B>?'` +`:  #@ :  <  '`?#2 @ 2 @  @ 2  *` @`$` $` $``  > (@""@ 2 ֬ 08 6b?#@  ?@*`Tb @! #v`(` `` `  #\sc ?$c& `" ` "` "@& &`^@ & @+`  k#Ⰴ@"#j `'*`&㿈  ``'@ 0 b"`"`D 2B G$`   $ >$` 2`k" 2`!xk`h" .(/$` '. &?" !"' !@=#  k" / " '. &?" !$` !@'#ؔ !@!# @! 2`!x$` <$`2 '* @*`k#@:B$@@`  ;$@* "@*`"J@ 8(ْ ?" !"  !@  @!˒` ?`$@ H!x$` <$`2 '* @*`k#@:$@@`  $@`$``"["`@c ?" !"  !@ p @!`@0`*"@ *`@}@?" !! @  `+ " *@!t $``ax $` ` $ $`2 '* @*`k#@ " $@  :$@  $@$`""㿈  '`@` ?" ! ! @R  `@!/ 쀢 `@u $`!x $`2 '* @*`k#@:$@@`  $@`$``""`㿈 /`@D`쀢` @E`@`?`@  2     `&)?4'  `&"?4   ` &?4  `&?4  `& ?$  @ ?4  㿈 ?2 2  : '@Ɛ &쀢 4쀢 2xؐa@ ؠ "+ @{ @)"  @ߔ `"$ $ $ $ ې ?$ .`$!$ $!@ $# $@@ @ 㿐` @0   ( ׯ6  &  &  '$ 쀢 !H @ #\#`#d #ha`   @l߀ O# 0 A PO 4 O &  "& Oဢ $ ' ' '''7 al'?''G''@E &   `' '& ؖ TԀR ;#(*` 4H &Ԛ   Ԕ  ';#X*` 40 Ԛ   Ԕ  'O& k @ 2.   . !xO& Б*` *  * &     ӓ 0       s#\㿈`  @`'} $@`#  @$# k @*` `@xؐa@~ h "0 @C @~'  @~ `#$ $ $ $  ?$ .`$!$ $!a$# $@ @! @~͐@~ 㿐` @~㿀   ( r4 *  @̐  $  $  & 쀢 ! @~F,  a@~6   a@~/  ð  @ kJ @ "J J J J J @’ J Aҹ 0@ JJ?Б+  *  J?ДБ* J*  ?К?J` $ *` J*  ?g$ d ;#* 4] @ 6"$   `@ $ ;#ԑ* 4G @ 6 $   `@ $ @h JБ*` J*  ?$ J Б*` J*  ?$ JБ*` J*  ?$ $  ; ;, x  Ӧ$  0 0    #\  㿐` @ ? "@# a $# @㿐@}L@~)?  J,"` J  㿐@ߐ  @}H `?"`.`$!"`$" "c $ @"`i"!t 㿐`it`"t` N @}_㿈i!t 2 F? ''   ?c>  *   ' ' ?#>  @*`@'?' @}y Ȕ*" "  Ѐ 2  Ȕ    "` "` Ȁ ` А `$ В @}$@ ꟒b~ $ $  㿈 `  ( ˖ 6 ''  ?c: *   ' ' ?#: @*` @'?'쀢`  '8' @} Ȕ*" "  Ѐ   Ȕ :  В  "` "` Ȁ ` А & А $@4 2?`: ?@ `@ ``c ` $c @ '? '"@` $9 \?Ȑ@|Lb  "t$`$`$` $`@  @|{Ԓ 0#؀  ,` !x$`  ,`  "}?"}` `@|`Ȁ j ?#@,2  : =* '='='=􀢠L' 3  @: @   @2 *  @ '8 ' '}􀢠+ :  2 @@  @2  *  @ '}8@' '@8  2?䀢@* ?  =" ͐ $ ,@='='+ 􀢠r ?#3` @ : @ @  @@ 2 *  @  ' 8' '?#@ `?@ *`Wax    "  !x"  `!x " "  ,` 2  : *  =$`=$`?#2 @ b 2 @  @ 2  *` @`$`b $` $` ` $`͒ `` `  #\`ҭ p 'Ԡؐb@{ Ɣ i `@{MԀ  !` @à"( @Y @ 0@{=P  @z 0`#x$ $ $ $  ?$ .`$"H$ $bpbx$# .`' .`( @.`/ 2& @{@{ & #ax& `& 2 '* @*`k#@ " &  :&  && "" 㿐`@` `"``@"@&`&@ @zА % /n `(`҇`4`* 2  @zdb ܐ 4` 쀢 "  @z\  "   `"`"@zCb ^b@{>@zY P@z4bȀ @z.bЀ @z(b؀ ` ? "` "@& &?" ! !@" @Ė`(0@zc `  "` "@& &!x & 2 '* @*`k#@:.&@`  '&c@z `  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`&   0& `  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`  & ` N`#\`#`#d#h#lx#pp#to#x`(c``@zo ' 0Oo * # c `@z:  ` < <*` 4 &     '< l*` 4v      'x $`O + - ,`  ,` ,` !xOo$` `# <& 'p' (XD=B>?'` +`:  #@ :  <  '`?#2 @ 2 @  @ 2  *` @`$` $` $`p  > (@yZ"@ 2 x 08 6b?#@  ?@*`Tb @! #B`(` `` `  #\?c ?$c& `" ` "` "@& &`n@ye & @+`  k#Ⰴ@"#j `'*`&㿈  ``'@ 0 b"`"`D 2B G$`   $ >$` 2`k" 2`!xk`h" .(/$` '. &?" !"' !@ #`  k" / " '. &?" !$` !@# !@# @˒ 2`!x$` <$`2 '* @*`k#@:B$@@`  ;$@* "@*`"J@ 8(̥ ?" !"  !@# @` ?`$@wې#!x$` <$`2 '* @*`k#@:$@@`  $@`$``"["`@wb ?" !"  !@  @_`@w`*"@ *`@}@?" !! @g 8 `+ " *@@ $``ax $` ` $ $`2 '* @*`k#@ " $@  :$@  $@$`""㿈  '`@w` ?" ! ! @ X `@ 쀢 `@wA x$`!x $`2 '* @*`k#@:$@@`  $@`$``""`㿈 /`@w`쀢` @w`@w`?`@w۔  2   ˰ 㿐?.`$` $`$ А ,$c .`' .`( @.`/,  @v ,$ ($`$  ax$ `$ 2 '* @*`k#@ " $  :$  $$ "" 㿐 쀢 !` @ ؒ@v` `  "` "@$ $@`  "` "@$ $@vސ0  `(`Η`4`* 2 ` @vt` 5 34` 쀢 !@vn `ϓ*`#@hh``(a@wV@vq P@vLa @vFa( @v@a0 ` ? "` "@& &?" ! !@!8 @ܖ`(0@v aX 2)?`  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`4& " !! @Š!` @0`  "` "@& &!x & 2 '* @*`k#@:&@`  &`& `""`  & ` ! i!#\`(aixi!|i@va   쀢 @u![ 0d  a& _ [,` i!x$`i!|i!$`$`i!!x$`$`  @v˧"@ 2   쀢 @uz!* 03 1?b#@  ?@*`Tb @! #`(` `` `  #\c ?$c& `" &  "` "@& && @`  k#Ⰴ@"#j `'*`&   `Q'L`A (@u` ?" !  !@!ؔ @Ēa@?" ! ! @ՠ" @ $ax $# ` %# $2 '* @*`k#@    :$  $$"" b""D 2B G$  # %# >$ 2k" 2!xk`h" .(/#$ '. &?" !"'# !@t"0  k" / "# '. &?" !$ !@^"P !@X"p @6# X!x$ <$2 '* @*`k#@:$@`  $(@tyb%@t! P !@)" @0!@u"@tb@t?@u@tؐ(@tTbȐ  @t`0u`L@t 6  !@"ؔ @ג#@% % % % 4 @to0@b 2 !@ݠ# @B@t/@tQ0B Ȱ ?" !" # !@Ġ#0 @# ?%# 쀢 $@s#`@&0"` @t1 !x$ $2 '* @*`k#@:$@`  $`$`""` 'l `@t l` !$` @}# `@Z 쀢 `@s#ِp`(@sb@s!x $`2 '* @*`k#@:$@@`  $@`$``""`㿈 /`@sf`쀢`#@sg`@t8`?`@t1  "   x'L'P'T 'X# 2`  ` @ @L`ؐ @sO`@s9`  & ia @@s=$ @s3 &     @s.` @t&xؐ`@s* Ք 0 @ @s^'  @s `Ð" $ $ $ $  ?$ .`$ $ $a $# && @.&  @s:@s/ 㿐` @s&h    ( ߖ 6 * 2  * (a o $ ON ( ?2N -@ 0ـ + -E (N 1 + -? (a @s܀ 5 (?`#V @ #  !8!@ "'"'""&"&"&"&"$' !HaP@ 0ah@s\؀  (ؐ N`2`3 ؐ@ 0{@ 0xap0t@rCa 2 N (@ ?" $f a N S2N +N 1 W E2N +N : +2N +@p ?" $L a@Ҕ0F :AN . :=N 1 :9#\ (a   @s ,O׀  . * . . !x& @=  @7            {#\$ ƍ㿐 c @qĐaz`@rt 0c  $c 㿐 `( ?" $# `!<!$*`@" ` < *`@"`< ؓ.`@" @B  `"<!$*`@" ` < *`@"`< ؓ.`@"  `Đ#*`@TP` ` 0`  `zb8 $ tb@``" 0Jb8? O `Ő .`@L (LLL8ObP $ HbX $ Ab` $ bh ? S ``" 0y)bp%bxb  j$ ? 8bH0a `^Ő!*`@|0`@qb I$ `9 `  0` $ b07@q``  $  -$  $ ڒbP0%@q`` $ ̒b $ @q` `  $ ے 0 $ @qV 0@q@q㿐`` ?$Ē -  $ c  $c xؐb@p , < @ 'H@p3  @pk'H`Ɛ $ $ $ $ g 2$ @p@p ?.`$"$ $"b$#& & .  &  & &  @q  ߒ  㿐`` @pqА  `. ( ( ) 쀢 6 #*`2`@p   `%  '1 "@" 4 %  * @p8   %  Ր`{ 0ѐ`wh& &  % -  @p%@p >`ؒ"@ *?xL@ "` "`h@p E@p s 쀢 #(@o cP@p  Z cXg@pf   쀢 @o#` Og -"  T +,5Of(c @pw `  쀢 @ow#_  `   ; vW 쀢  @oc#K  쀢 OgOf@oX#@ 2' #\ #`[#dZ#hY#lX#pW#tT#x` `\@p0 `  쀢 @o0 0  쀢  `@o& T     @`* :  `WT `@   쀢 @o   ` \4   2<'<<!P*` ڒ  '!m   \  '\!m!*`   !n   \  '\!n  "  &  "@ &  < & ?&  `; &  &  ```\& ? '\ ? & @nՒ! !n!m'\ ` \&  '\  '\ & \OW`0&  ". OY -"  0 +  ". .  .  쀢 OY@nf ȐN !x&    2 ܐA  ' #'  ! @     @   @    ܖ  @   @n.     #\#  %  a8@n   㿐` @ ?¼  "@ aH@n֔  ¯ 0#  $# xؐaX@n Ư "+ @  t@n8"  @m t`Ȑ"$ $ $ $  ?$ .`$!h$ $! $# $@@n@n 㿐` @nx   ( ž ` &  & $ $ a@m  2 *a, \ a@m    @m˒ *# K Kaa@mo    ,@m * =aa@ma   ,@ma@m * *aa@mN   ,@ma@m * aa@m;   ,@ma@m *˒ a@n 0a @n 6   ,  쀢 $! @m q  @m`. >ק / #\ #`a  @m 9 ?Б* : `/ɐ!*`@&&D&D&D&&&&&& &D&D&D&D&D&D&D&,&8&D&D&D&8   ?"q j=  $ %.  . { 0. x  "&  l 0  ܔ ' "''   F#\㿐` @ ?Q  $@ a@mk  D ,` #  $# ,` J-   8 7J! k33J  2* **JЖJ` "@ "@ 㿐   kN @     N 2 N - +  N +" N`.k @ "z N '<*@m:` ,`,`@ N"`@N`?k @ ;`.5 kN '<*`@l:`, ,   "N kN @ " N  N 2 N  k  # <!,@  ,  *2 @$ 2  2, ,  8`  "  8&@&` J  kffJ   2*5 **JЖJ"@ 㿈# @k!" 2!8"!k""k""" H"#" k" |" " D@@!''c@xT `?( "   $@ 2 $  耢 ? ("kk$2 (b  "b2$k✐  ✁㿐a  ="a 耦8 ?#*`@k$2$k( 2$kb  "b(" ( 2!8k"`p , " j jc@  㿐@k"@  㐀"@"`0k" ""㿐 ?#*`@` `$`@`2`$```S`3`耢`2!8"`"`(`( D3`(?# @`>3`( ?#*`@ 2@"@  2@"k|㐐?"|#@kb"㐐  "b3kb   bk#?&b#`$`|3`(@ "`| ?#*`@###@"@8  ?cܑ*   "c $  2 $ "  (  㿐 ?#*`@`!k`$2@@`#``(#`!@3`(28'"耣`2`$!k" 6 "#!@?$"#`#`$`k#``|3`(@ "`| ?#*`@###@"@㿐 ?#*`@ # ' $2 @j  @i $ ,$ , (`"@14 (48.$`耤 2 $#kb  ! b#?$b @i##@i $ , $ ,$ $"4 ( ?c* k$|"  "|?kk  " (2 ("@`|##`|"##"@$㿐  耦ܐ`P"܀  `H "`H !8!"@ ֔0@$㿐  耦ܐ`("܀  `H  "`H !8!"@   @㿐  耦ܐ`"܀  `H  "`H !8!"@  @n㿐  耦ܐ`"܀  `H  "`H !8!"@   @r@H " "J#H   2H2H   2(("@㽈@hbP bX@ X ͨ#"@h '"@h bx@ <2  pb?* :  2@* 8|8888888888888t88888l88888888888888|8888888888888t88888l       (b\젒  c  @   c@ @ x cp@q@h 㿀@g`"O`x{ `w2v '' %<k  @ j* :  @ @h @h]`<  * ? *"?" ` "?` ?"@@!  *` 2` @  "@  "6 + @g     @ * *`**` *  '**`*@ @ @ @ 'E      ( ( ( *`@ *`@ *`@Є?@ Ꞔ#@  `=+ 2`> 2`? `<@ #` 㿐)u! " ?썐#ᇔ# >x   `@g <.`@g <@g <.`@g <, 4 @g .`@g  <*82  ,`= 8  @** @ # 6`gl6@+ * 2 !l> <""+ 2  @    ` .`<" *@# .`)u?썄ᇖ >x 8 <@  *??(""@ "8* l  < "? <?|  ; (  <|ŀ* <b<z( * * * * * * m@ (( ( (r  (  ()u)urᇆ@ (@<—@ ?9"@     @  㿐?. . . . " . . \" @`Ő&@  @@ @'@ @8C&@  @@ @ &'@ @'@ &@2 '@ "@8?W!@    @@ @'@ @8&@#@@  @@ @ '@ @ &@&  㿀<" @R㔐"㔀 *@ *`!P@"㔐 @e ?6  *2 @f  *`*` $ *  ,@ * :  $ .:  4 . ?# . . @6 ,*     , @ *@ 8*@@ ` @ "`` -,@:*@ .@ 2 @*@` @ 0*@`@ `*@h<" @㔐"㔀 *@ *`!P@"㔐ؒ @e* ? @e. .  $,@   , 2 @e* * @ $ *  ,@ $ & … 4 `['D'  ?#!@'Ԁ'Й*''Ȑ '̓+`'А`'Г*'Б* @'А 'Г*'Ԕ @2` @3  @ @2 *  @ 'Ѐ 'А ',Ԁ 4'Ԁ @  , @ *@ 8*@@* @  @ @`@* @@" --@`@:*@ .@2 @*@` @ 0*@`@ `*@㿐@eT  @c@dA 㿐    㿐    㿐<" (?`&= +`: #@: <   (&  "@ & 0&  <  ⠝㿐  `  8   㿐  `  8   㿐<" 㔐"㔀 *@ *`!P@"㔐4 4 `4  @c( 㿐<" 㔐"㔀 *@ *`!P@"㔑4` @H` ``  @bjj"hjbd?#"h* *@" 6#"h#bd 6#bd *? @㿐j "bdj 6"bh@cƐ  j!<# @b$  $?Ā @2` `@ (D`  "Dܐ`c"܀  `H  "`H@k p @@@ΐ6*  @@b  (`   "ܐ`2"܀  @ck p @l@h@@`@c] `?㿐D`  "Dܐ`"܀ !j`H "`H!j"l@3k p @<@8㿐!j"l@@. @g@ X@bP  㿈@b2 &=>? `+`:` #@ :` `<@ & ?#2 @!0 2 @  @ !0` @*` @& ?@ & & h2`  @(@ 2 *  @ &  & & "@ & 0& "!,㿐     쀢 `@a! ' $?#0@ 2 @ 2 @  0  *` @ 0" "   쀢 @aq!@wx     ! !Ȓ@a\!,!,` ?#6  @ <` @ @ @@@ 2 *  @  ?#6  @ <` @ @ @@@ 2 *  @   2 -  8'#L L6 #L?# 6  @ : @  @@ 2 *  @   ! 'צ  !  ' 8 쀢 {!"" cL    `F +`6 Gఙ+ 6 H@`     : =+`: > #: ?@ ` <  ?#  :`  @  @@ 2 *  @  @?  ' 8 ' 쀢 !@@"    N " @`r@a   @bhl 3 "!,!,"  䀢 ^ '؀䀢` 'ؐ  `=+`:`> #:`?@   `<@  '܀`ђ 'ܐ8'?#a0@ܓ2 @ 0 @  @a0 *  @  #a0@ " "?b ?"b?"  @   !" @㿀 ?#0@ 2 @ 2 @  @0  *  @   0@" "` #U  08 "#a,F`Ga,H '2+`2 #@ 2 @ @`:`Ъ"@@'''@_ג  쀢  ! J"a,E @T@@_"@'"'' @'А"?'`'"'@`  @c  쀢 !@I#(@_Wa," "a, P'L'P'T'XN@L#Ѐ`7`` 4#䀤/`%2 ,N@`m` %, , !cH@_:0.@_怢 : N@@_`@_ N@``` Ґ3?b 2, , ,@` b cX@`0'?"` !k !!!k H@_ђ /  H!@q#`@^!@_#h@^ߘ@_p'@_@'3@_@ cЀ @_7#x@^ 8 0  ? ?? 㿐@? @ 2` `@? 1j"`@^bp㿐1"xj""""@^ 1j"ԁ㿐<" `" *` * !P " 5>`  >`0>`0 ?b$@^b@^>` ?bL@^ @^b@^>` @^{@^x`?hc$  "* " .  .  .  .  .  .  .  "* " .  .  .  .  .  @^JbȀ @ 0 bb@^=  @^7b?Gb@^0b@^+>`T @^%`@^ ?cl !?"+@^@^b` @^ 㿐 ??#l?#$ 㿐? b㿐 2㿐 ,㿐 &㿈`D  "`D# 耦ܐ`U"܀ j`H $"`Hj#'쀦'>? @@ '`@?@ '`@E 4` &@&`㿐 2j##@ ? @ " ?  " @&  㿈`䀦  "` T 耦 ܐ`"܀ j0 j#6.@``' '@@ '6@@쀦 @'@ '耢  쀠`?㿐x @d!#Adab3?c0`0`0` 0`0`0`0`(`( <`<  < <(((3?c5@@((0`(0`<(.`0` <. 0`<(0`5@D0`.`0`. (`(  *2. 6*2.6; 2 220('@d@2 2 <(  8(6 @@0`)*@ `0`)*@ `0`)*@ `)*@ 660(` 'Ad@6 6<(@@0`)*@ `0`)*@ `0`)*@ `)*@`?㿐  DdUUU5Bd@(1 1 1  *@6 @.#/`(@((1 1 (.`1 ( ((6 @1 (`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?( `@@1 ?( `@@`.?(@`7` @ @1 (`@1 ?(`@1 ?(`@1 ?(`@1 ?(`@1 ?( `@1 ?( `@`/`?(``qÄ(@1 1 1  <<<@05Cd. c/ @((. "1 (1 . (1 .` ("㿈`D  "`D# 耦ܐ`"܀  j`H  +"`Hj#'66 '@ '`@? 'Ʋ` 耎 @ '``&@ &`    (`   2`0` 2 ` ( " ``0``$ `?x<" A㔐"㔀 *@ *`!P@"`!'@[F  F d *`@ *   #\ #`gl#d@Zc㿀@[s '@[j<" 㔐"㔀 *@ *`!P@"  F `d *  #\@Z]c㿐         <" 㔐"㔀 *@ *`!P@"㔀 ###ؐ@Z*㿐<" 㔐"㔀 *@ *`!P@"㔐 @Z c" "H" ;j" &."  v" P.2  `? @6  &  @ & &&  @@*``   `  * *` *   #?  @E  P' '2  ?7 x 8" c  `   ` * *` *    @   *`X`2 *`Y *`Z `*`[x   @``` ```` `$`(`,`05ک`4x`8@ -(`0`@:1V@-- 5 ۆ )'-50os (@) 1 =_㯆@ -`'(`0`@*@- - 5*  )-5?Q (@ ) 1 `&؆@ - (`0`@"=㯆@-- 5?ֆ㱆 ) -5"W5㾆 (@) 1 "@ -(`0`@?fᓆ@- - 5)P㎆ 8-5m! 8`< '܄) 1 =b@ (`0`@0,@@ - 53 bQ (@@-53:mc -@) 1 35IJ`]@ - @(`0`@3`S@) @- 536(yb (@܄@-539cȲ -@) 1 3xsa@ -@(`0`@30cֲ@)@- 53=5Ca (@@-53V` - @) 1 3*xa@ - @(`0`@3?;c@)@- 53bٲ (@ @-53#J` -@) 1 ?B@ (`0`@!}⁆@ - 5gX"-5?yN ) 1 )/D@(`0`@㩆@- 5=҆` -5/p ) 1  &߆Ɔ@ (`0`@:I@- 55;̆-5") 1 6u49@(`0`@9@- 5蟆܄-51+e) 1 = HD@1(`0`@ʿ㗆0@ - 5*㧆5@-5?$95 ) 1 VֆÆ@1(`0`@#30@- 5?}5@ -5!aц5) 1 O@1 (`0`@?90@܄- 5(P5@-5ᡆ5 ) 1 =߆₆@1(`0`@/N50@- 5 ⻆5@-5:ᴆ㑆5) 1  & &  @& & 㿐@/V/V0 ? ???㿐㿠㿠t5tickadjticklogconfiglogfilephonedisableenableclientperiodclientlimitsetvarpidfilestatisticsfilegenstatsdirfudgetrapcontrolkeyrequestkeytrustedkeybroadcastdelayrestrictkeysauthenticatemulticastclientbroadcastclientbroadcastdriftfileserverpeerttlmodeprefermaxpollminpollkeyversionlimitedntpportlowpriotrapnotrapnopeernomodifynoquerynotrustnoserveignoremaskinterfaceportflag4flag3flag2flag1refidstratumtime2time1nolinklinktypefileageyearmonthweekdaypidnonestatsmonitorppspllbclientauthsyncclocksysallallsyncallsysallpeerallclockallstatisticsallstatusstatusalleventseventsallinfoinfoabc:dD:f:gk:l:mp:r:s:t:v:V:xlogconfig: illegal argument %s - ignoredDebug1: %s -> %x = %d alogging to file %sCannot open log file %susage: %s [ -abdgmx ] [ -c config_file ] [ -e e_delay ] [ -f freq_file ] [ -k key_file ] [ -l log_file ] [ -p pid_file ] [ -r broad_delay ] [ -s statdir ] [ -t trust_key ] [ -v sys_var ] [ -V default_sysvar ] /var/opt/DLMxntp3/etc/ntp.confdaemon_version="%s"settimeofday="%s"Debug2: %s -> %x = %d command line broadcast delay value %s undecodablecommand line broadcast delay value %s is unlikelycommand line trusted key %s is unlikelyrNo address for %s, line ignoredattempt to configure invalid address %speer/server version requires an argumentinappropriate version number %s, line ignoredkey: argument requiredminpoll: argument requiredmaxpoll: argument requiredttl: argument requiredmode: argument requiredconfig error: minpoll > maxpollconfiguration of %s failedlogfile needs one argumentntp_syslogmask = 0x%08lx (%s) yesnoshould be `authenticate yes|no'restrict requires an addressdefaultmask keyword needs argumentbroadcastdelay value %s undecodablebroadcastdelay value %s is unlikelytrusted key %s unlikely%s is undecodable as request key%s makes a poor request keyidset info_auth_key to %lu %s makes a poor control keyidno address for trap command, line ignoredtrap port requires an argumentinvalid port number %s, trap ignoredtrap interface requires an argumentcan't find interface with address %scan't set trap for %s, no resourcesno address for fudge command, line ignored%s is inappropriate address for the fudge command, line ignoredfudge %s time1 value in errorfudge %s time2 value in errorfudge %s stratum value in errorfudge %s flag value in errorno statistics named %s availableenabling filegen for %s statistics "%s%s" no id for filegen command, line ignoredunknown filegen "%s" ignoredfilegen %s file requires argumentfilegen %s type requires argumentfilegen %s unknown type "%s"no value for setvar command - line ignoredno value for clientlimit command - line ignoredillegal value for clientlimit command - line ignoredclient_limit=%luno value for clientperiod command - line ignoredillegal value for clientperiod command - line ignoredclient_limit_period=%ldno value for tick command - line ignoredillegal value for tick command (expected 900-11000) - line ignoredtick=%ldno value for tickadj command - line ignoredillegal value for tickadj command (expected 1-50) - line ignoredtickadj=%ldenable unknown flag %sdisable unknown flag %sconfigure: keyword "%s" unknown, line ignoredgetnetnum %s step %d buf %s temp %d netnum %lu configure: "%s" not valid host number, line ignoredconfigure: "%s" not valid host number, line ignored getnetnum given %s, got %s (%lx) /tmp/xntpXXXXXXwopen failed for %s: %mresolving %s %s %d %d %d %d %d %d %lu internal error in do_resolve_internal: res_fp == NULLcall to ntp_intres lostfork() failed, can't start ntp_intressys_var_listrefskewkeyidsystemprocessorleapwarningleapindicatorclockerrorfreqphasepeerpollreftimerefidrootdispersionrootdelayprecisionstratumleappeer_var_listflashfilterrorsentreceivedpmodefiltoffsetfiltdelaydispersionoffsetdelaytimervalidreachxmtrecorghpollppollhmodedstportdstadrsrcportsrcadrauthenticauthenableconfigclock_var_listdeviceflagsfudgetime2fudgetime1baddatabadformatnoreplytimecodetypesending control error %d in process_control() invalid format in control packet unknown version %d in control packet Packet length %d unrounded recv_len %d, properlen %d, wants auth with keyid %ld, MAC length=%d keyid %lu unknown authenticated okay authentication failed opcode %d, found command handler %lu0x%lx%ld0x%08lx.%08lx="read_status: ID %d system event '%s' (0x%02x) status '%s' (0x%02x)report_event: system event '%s' (0x%02x) status '%s' (0x%02x) peer %s event '%s' (0x%02x) status '%s' (0x%02x)peer %s event '%s' (0x%02x) status '%s' (0x%02x) report_event: err '%s' (0x%02x), no peerreport_event: peer event '%s' (0x%02x), no peer refclockstatusinit_io: maxactivefd %d create_sockets(%d) wildcardcreate_sockets: socket(AF_INET, SOCK_DGRAM) failed: %mget interface configuration: %m - exitingFailed to get interface flags: %mFailed to get interface addr: %mSIOCGIFBRDADDR fails: %mSIOCGIFNETMASK failssetsockopt SO_REUSEADDR off fails: %mcreate_sockets: ninterfaces=%d interface %d: fd=%d, bfd=%d, name=%.8s, flags=0x%x sin=%s bcast=%s, mask=%s cannot add multicast address %s as it is not class D...multicast address %s using wildcard socketmulticastsetsockopt IP_ADD_MEMBERSHIP fails: %m for %x / %x (%s)invalid multicast address %ssetsockopt IP_DROP_MEMBERSHIP fails: %msocket(AF_INET, SOCK_DGRAM, 0) failed: %msetsockopt SO_REUSEADDR on fails: %mbind() fd %d, family %d, port %d, addr %08lx, in_classd=%d flags=%d fails: %%mbind() fd %d, family %d, port %d, addr %08lx, flags=%d setsockopt(SO_BROADCAST): %mflags for fd %d: 0%o getrecvbufs: %ld handler interrupts, %ld frames getrecvbufs called, no action here getrecvbufs returning %ld buffers too many recvbufs allocated (%d)%ssendpkt(fd=%d %s, %s, ttl=%d, %d) MCAST *****setsockopt IP_MULTICAST_TTL fails: %msendto(%s): %mselect(%d, %s, 0L, 0L, &0.000000) error: %mBad file descriptor %dclock read fd %d: %m%s on %d(%lu) fd=%d from %s dropignorerecvfrom: %minput_handler: fd=%d dropped (bad recvfrom) input_handler: fd=%d length %d from %08lx %s internal error: refclockio structure not foundioctl(I_SETSIG, S_INPUT) fails for clock I/O: %mioctl(I_SETSIG, S_INPUT) fails for socket I/O: %msigactionleap second occurred, stepped time %s 1 secondforwardbackattempt to set leap bits at unlikely time of monthlocal_clock: offset %s peer %s watch %ld) time error %s is way too large (set clock manually)time reset (%s) %s ssteplocal_clock: phase %s freq %s err %s allan %ld poll %d pps sync disabledloop_config %d %s two instances of default interface for %s in hash tablepeer struct for %s not in table!peer struct for %s not in association table!peer_config: addr %s mode %d version %d minpoll %d maxpoll %d flags %d ttl %d key %lu transmit auth to %s %s transmit to %s receive from %s rejected mode %d request from %s - per net client limit (%d) exceededreceive: pkt is %d octets, mac %d octets long, keyid %ld receive: bad length %d %d receive: his mode %d bad mode %d received from %sreceive: untrusted keyid receive: authdecrypt succeeds receive: authdecrypt fails receive() failed to peer with %s, mode %dinvalid packet header %s 0x%02x %s %s offset: %s, delay %s, error %s clock_update(%s) poll_update(%s, %d, %d) synchronisation lostclear(%s) clock_filter(%s, %s, %s, %s) clock_select() select: endpoint %2d %s select: low %s high %s select: candidate %s cdist %s select: survivor %s offset %s, cdist %s select: prefer offset %s pps sync enabledselect: pps offset %s select: combine offset %s synchronized to %s, stratum=%dfast_xmit(%s, %d) precision = %d usecproto_config: illegal item %d, value %ldclock %s fault '%s' (0x%02x)clock %s event '%s' (0x%02x)refclock_newpeer: clock address %s invalidrefclock_newpeer: clock type %d invalid refclock_receive: %s %s %s %s) refclock_gtlin: fd %d ldisc %s sigio %s refclock_gtlin: fd %d time %s timecode %d %s refclock_open: %s: %mrefclock_open: fd %d tcgetattr %mrefclock_open: fd %d TIOCMGET %mrefclock_open: fd %d modem status %lx refclock_open: fd %d tcsetattr %mrefclock_open: fd %d tcflush %mrefclock_open: fd %d ioctl failsrefclock_ioctl: fd %d flags %x refclock_ioctl: optional clk streams module unsupportedrefclock_ioctl: required chu streams module unsupportedrefclock_ioctl: optional ppsclock streams module unsupportedrequest: preparing pkt request: sending pkt request: giving him more data request: into extra buffer request: flushing packet, %d items prepare_pkt: impl %d req %d found request in tables failed auth %d info_auth_keyid %lu pkt keyid %lu bad pkt length %d failed auth mod_okay %d process_private: all okay, into handler wants peer list summary sum: got one wants monitor 0 list wants monitor 1 list client_limit=%ldclient_limit_period=%ldlimited clients check: %ld clients, period %ld seconds, net is 0x%lX no limit - monitoring is off checking: %s: ignore: too old: %ld checking: %s: ignore mode %d checking: %s: different net 0x%lX considering %s: found host considering %s: same net this one is rank %d in list, limit is %lu: %s ALLOWREJECTkernel vars: tickadj = %ld, tick = %ld tickadj or tick unknown, exitingtick value of %lu is unreasonably largetickadj = %d, tick = %d, tvu_maxslew = %dadj_precision = %ld, tvu_maxslew = %ld, tsf_maxslew = 0.%08lx nsec_per_tickhrestime_adjkvm_open failedkvm_nlist failedkvm_read tick failedProblem getting tick: %d != 1nlist didn't find a value for <%s>kvm_read tickadj failedProblem getting tickadj: %d != 1kvm_close failedtick = %ld, tickadj = %ld peerstatsloopstatsclockstatsrawstatsoffset %s sec freq %s ppm poll %dwcan't open %s: %m%s .TEMPr0%scan't read %s: %mdrift value %s invalidvalue for statsdir too long (>%d, sigh)Can't open %s: %m%d%lu %lu.%03lu %s %x %s %s %s %lu %lu.%03lu %s %s %d %lu %lu.%03lu %s %s %lu %lu.%03lu %s %s %s %s %s %s ntp_intres runningrequest keyid %lu not foundrcan't open configuration file %s: %mparent died before we finished, exitingsocket() failed: %mfcntl(O_NONBLOCK) failed: %mconnect() failed: %msend to NTP server failed: %mselect() fails: %mread() fails: %mreceived runt response (%d octets)received non-response packet received fragmented packet version (%d) or mode (%d) incorrect nonzero sequence number (%d) implementation (%d) or request (%d) incorrect nitems (%d) mbz (%d) or itemsize (%d) nonzero server reports implementation mismatch!!server claims configuration request is unknownserver indicates a format error occured(!!)server indicates no data available (shouldn't happen)server returns a permission denied errorserver returns unknown error code %dtokenizing error in file `%s', quittingformat error for integer token `%s', file `%s', quittinginvalid mode (%d) in file %sinvalid version (%d) in file %sinvalid MINPOLL value (%d) in file %sinvalid MAXPOLL value (%d) in file %sinvalid flags (%d) in file %scouldn't resolve `%s', giving up on it%s%sunsupported file generations type %d for "%s" - reverting to FILEGEN_NONE%s%s%c#%ld%s%c%04d%02d%02d%s%c%04dw%02d%s%c%04d%02d%s%c%04d%s%ca%08ld%s%c%dC%lu couldn't save %s: %mcouldn't unlink %s: %mexpected regular file for %s (found mode 0%o)stat(%s) failed: %maopening filegen (type=%d/id=%lu) "%s" can't open %s: %mcan't link(%s, %s): %mconfiguring filegen: prefix: %s basename: %s -> %s type: %d -> %d flag: %x -> %x filegen_get("%s") = NULL adding new filegen /xntpd: setsid(): %m%sdebug raised to %ddebug lowered to %dUndisciplined local clockLCL/dev/pst%dPSTI/Traconex WWV/WWVH ReceiverWWVpst: timecode %d %s %c%2d:%2d:%2d.%3d%c %9s%3d%13s%4ldWWVHQTQDQMT/dev/wwvb%dSpectracom WWVB ReceiverWWVBwwvb: timecode %d %s %c %3d %2d:%2d:%2d%c%c %2d %3d %2d:%2d:%2d.%3d %c/dev/gps%dAustron 2201A GPS ReceiverGPSgps: timecode %d %d %s gps: stat %s %2d:%3d:%2d:%2d:%2d.%3dgps: times %s %s %s *toc ATOMleitch_shutdown() leitch_poll() write leitch %s D leitch_send: unit %d send failed leitch_send: unit %d send failed %mleitch_control: unit %d invalidLeitch: CSD 5300 Master Clock System Driverleitch_start: unit %d invalidleitch_start: unit %d in use/dev/leitch%dleitch_start: open of %s: %mleitch_start: tcgetattr(%s): %mleitch_start: tcsetattr(%s): %mleitch_start: tcflush(%s): %mleitch_recieve(%*.*s) T %u %lu leitech_receive: invalid state %d unit %d%lu %lu %lu %lu %ld %ld /dev/trak%dTRACK 8810/8820 Station ClockGPSRQTS trak: timecode %d %s *RQTS U,%3d:%2d:%2d:%2d.0,%c/dev/datumDatum_PTS: Problem adding clockDATMDatum_PTS: Shutdown Datum PTSDatum_PTS: Could not shut down Datum PTS unit %dTIME_REQUESTDatum_PTS: Could not poll unit %d//k/mnDatum_PTS: Bad clocktimeA0??zG|?ffffff??@bM/dev/acts%dclock %s ACTS no modem controlNIST Automated Computer Time ServiceACTSATB1&C1&D2E0L1M1Q0V1OKacts: state %d timecode %d %*s DIRECT BUSYERRORNOclock %s ACTS modem status %sCONNECT%5ld %2d-%2d-%2d %2d:%2d:%2d %2d %1d %3lf %5lf %s %c@@clock %s ACTS backup started clock %s ACTS backup stoppedclock %s ACTS invalid modeclock %s ACTS calling program terminatedacts: calling program terminated clock %s ACTS no modem statusclock %s ACTS calling %s clock %s ACTS call failed %dacts: call failed %d acts: state %d send %d %s /dev/heath%dHeath GC-1000 Most Accurate ClockWWVheath: timecode %d %s %2d:%2d:%2d.%c%5c%2d/%2d/%2d/dev/gps%dNMEA GPS ClockGPS$PMOTG,RMC,0000*1D nmea: timecode %d %s $GPRMC$GPXXXPPS Clock DisciplinePPS/dev/pps%d/dev/ptb%dclock %s ACTS no modem controlPTB Automated Computer Time ServiceTPTBATB1&C1&D2E0L1M1Q0V1OKacts: state %d timecode %d %*s DIRECT BUSYERRORNOclock %s ACTS modem status %sCONNECT%*4d-%*2d-%*2d %*2d:%*2d:%2d %*5c%*12c%4d%2d%2d%2d%2d%5ld%2lf%c%2d%3lf%*15c%c@@clock %s ACTS backup started clock %s ACTS backup stoppedclock %s ACTS invalid modeclock %s ACTS calling program terminatedacts: calling program terminated clock %s ACTS no modem statusclock %s ACTS calling %s clock %s ACTS call failed %dacts: call failed %d acts: state %d send %d %s Naval Observatory dialupUSNOusno: clock %s shutting down OKusno: timecode %d %s BUSYERRORNOclock %s USNO modem status %sCONNECTclock %s USNO unknown modem status %s%5ld %3d %2d%2d%2d UTCusno: bad timecode format usno: time rejected clock %s USNO no modem statusatdt 202 653 0351clock %s USNO calling %s clock %s USNO backup started clock %s USNO backup stoppedclock %s USNO invalid mode/var/lock/LCK..cua%dclock %s USNO port busy%d /dev/cua%dclock %s USNO no modem controlATB1&C1&D2E0L1M1Q0V1clock %s USNO couldn't writeclock %s USNO calling program terminatedusno: calling program terminated clock %s USNO call failed %dusno: call failed %d usno: state %d send %d %s TSLocationPollSatelliteF51F50F18HuhInitAutoStartInqGOESInqOmegaInqTCUInqTMBaseomegatcutmgoesunknown/tmp/true%d.debugwtrue%d: /dev/true%dKinemetrics/TrueTime ReceiverTRUEreceive(%s) [%d] %5d%*c%3d%*c%3dBotch!EASTWESTUNKNOWNGOES: station %s F%2dgot F%02d - ignoring TRUETIME Mk IIITM/TMD: %sTCU-800: %s%3d:%2d:%2d:%2d%cSend '%s' TRUE: clock %s, state %s, event %s?clock %s, state %s, event %s CP F18 F50 F51 F08 MD3 TSU AU P C PO /dev/hpgps%dHP 58503A GPS Time and Frequency Reference ReceiverGPS*IDN? :PTIME:TZONE? hpgps: lencode: %d timecode:%s hpgps: error indicated in prompt: %s *CLS %c%chpgps: no format indicator %d,%dhpgps: only %d fields recognized in timezone hpgps: timezone %d, %d out of range hpgps: unrecognized reply format %c%c %*c%*c%4d%2d%2d%2d%2d%2d%c%c%c%c%c%2hxhpgps: only %d fields recognized in timecode hpgps: unrecognized timecode format %c%c hpgps: checksum %2hX doesn't match %2hX expected hpgps: unrecognized leap indicator: %c hpgps: refclock_rcv: off: %s, disp: %s, tref: %s, trec: %s, lp: %hd :SYSTEM:PRINT? :PTIME:TCODE? /dev/gps%dArbiter 1088A/B GPS ReceiverGPS TQSRLAB5LO LHDBB0arbiter: timecode %d %s %c%2d %3d %2d:%2d:%2dxntpd 3-5.87 Sat Feb 8 15:01:48 EST 1997 (3)0123456789rcan't open key file %s: %mcannot change keyid 0, key entry `%s' ignoredno key type for key number %ld, entry ignoredinvalid key type for key number %ld, entry ignoredno key for number %ld entry, entry ignoredformat/parity error for DES key %ld, not usedformat/parity error for MD5 key %ld, not used0123456789abcdefNo more memory!amnesia: unknown option -: option requires argument -%lu.%lu.%lu.%lu%s(%lu)REFCLK(%lu,%lu)settimeofdayGPS_HPHP 58503A GPS Time & Frequency Receiver (26)TrueTime (generic) Receivers (25)USNONaval Observatory dialup (24)PTB_ACTSPTB Automated Computer Time Service (23)ATOM_PPSPPS Clock Discipline (22)GPS_VMETrueTime GPS-VME Interface (21)GPS_NMEAGeneric NMEA GPS Receiver (20)WWV_HEATHHeath WWV/WWVH Receiver (19)NIST_ACTSNIST Automated Computer Time Service (18)GPS_DATUMDatum Precision Time System (17)GPS_BANCBancomm GPS/IRIG Receiver (16)GPSTM_TRUETrueTime (old GPSTM driver) Receiver (15)MSF_EESEES M201 MSF Receiver (14)ATOM_LEITCHLeitch CSD 5300 Master Clock Controller (13)IRIG_TPROKSI/Odetics TPRO/S IRIG Interface (12)GPS_ARBITERArbiter 1088A/B GPS Receiver (11)GPS_AS2201Austron 2201A GPS Receiver (10)GPS_MX4200Magnavox MX4200 GPS Receiver (9)GENERICGeneric reference clock driver (8)CHUScratchbuilt CHU Receiver (7)IRIG_AUDIOIRIG Audio Decoder (6)TRUETIMETrueTime (generic) Receivers (5)WWVB_SPECSpectracom WWVB Receiver (4)WWV_PSTPSTI/Traconex WWV/WWVH Receiver (3)GPS_TRAKTRAK 8810 GPS Receiver (2)LOCALUndisciplined local clock (1)UNKNOWNunspecified type (0)allow_set_backward=%d calling step_systime_real from not slewalways systime: offset %s systime: maximum slew: %s%s, remainder = %s -systime: adjtv = %s sec, adjts = %s sec, sys_clock_offset = %s sec Can't adjust time: %mPrevious time adjustment incomplete; residual %s sec step: %s sec, sys_clock_offset = %s sec, adjtv = %s sec, timetv = %s sec Can't set time of day: %mstep: new timetv = %s sec error %d%s%s %s[%d]: %ssigactionleapsync_alarmleap_del_secleap_add_secleap_nonesyncsync_telephonesync_wristwatchsync_udp/timesync_ntpsync_local_protosync_uhf_clocksync_hf_clocksync_lf_clocksync_atomicsync_unspecselsel_sys.peersel_sys.peer, hi_distsel_syncsel_candidatesel_correctsel_sanesel_rejectclkclk_badtimeclk_baddateclk_propagationclk_faultclk_badformatclk_noreplyclk_okayeventevent_clock_excptnevent_bad_dateevent_clock_resetevent_peer/strat_chgevent_sync_chgevent_faultevent_restartevent_unspecevent_peer_clockevent_reachevent_unreachevent_authenevent_ip_err%s_%dno events%d event%ss, /PPSunreachreach, conf, auth, unauth, last_DecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%s, %s %2d %4d %2d:%02d:%02d%2d %s %02d:%02d:%02d%s%lu.%06lu-%lu.%06lu<""| ` t3  KK( 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t00000000000000 p ` P@80  !( xp`XP@ 8 0 @80( ph`X P H x ""DDdd0@x p h ` X P@0   @     xph`XP@0  !"#@$   "!@`PxH80          J8KLMPS UV|UW WD XT Z, [0 [P\L \ ] ]$^*_`abxbbc,d d e fD!f"f#g$h%i'kd+v c@/var/NTP/dx80\8$8xlPxITF ETF LORAN ENSEMBLE LORAN TDATA ID;OPT;VER ITF ETF LORAN ENSEMBLE TRSTAT POS;PPS;PPSOFF ITF ETF LORAN ENSEMBLE LORAN TDATA UTC ITF ETF LORAN ENSEMBLE TRSTAT OSC;ET;TEMP Ll PD|ô`hļxd|$޼ߴ,<(Lp0( ph`PH0 @8ĘĐĈĀx T!,!"& d'B@;@ˠ=\z2Q2 yk tc>UDq7&=\z2QktU7A7oě$G7L IM\)`nS =uZ/R`AS$/fffx+ lD{1&bMt ě(1&y9XbA7LI^5QZbMj~r zGnCtjT =1'9Xj~ě/`Ahs\Fn9 JOBkPrax P'kJD"2-o&Zw 3V|a0s!qT+xG7sF^8N8IN6O?{fg^,d.0%o5/V|_,ķ#(5QCk!3'i]2V[5E6u|-YԒTkL)!wXw/P@_X` j5CJP Kj]#{ܙZcܺb||a6h:lnQ.<!2UCSduq8T o6->O`Rqn5Q):mK4[l}Pl3%N6FWhjy1Mi0 1BSLdth/ȽلK -f>-N_pIe,H)9J[dl+|Gc)$5~FEW gxa(}D  `1'ARc|tC _&{ A  , = N] _$ o y @  ԕ \ #   (x 9? J Z k |[ " w >   Y $ 4 E Vu g< x X  ܭ t ;   0 AW R b s s :  Ǐ V  q ,8 < M ^ oT  p 7 S'8IoZ6j{Rϧn5#4PEUfwl3Ok2/@QbNsj1!2TCSdup7ŬS oz6q-i>`OX`RPqG?6n.5& Q):lK3[l}Oݨk2~u%Nm6eF\WThjKy1C;2*M!i/ 1BSKdtg.ȼكJ yq-fi>-`NX_OpGI?6.%e, G)9J[cl*|F ԗᛎb)~u$m5~dFE\W TgKxCa:(2*!}D  _1&ARc{tB д^%鳊z Ay q ,h =` N]X _$O oG > y6 @. %  ԕ \ #   (w 9> J Z k |Z ! v =  ˆ } Yu $ m 4d E\ VuS g 6 - p% 7  R'8InZ5j{QߟϦm4}u#l4PdE\USfKwlB3:2)!Oj1/@QbMsۼi0!52TCjSd͟up97ӖnŬS=r 0h`@8иШЀpXH(  ϸ Ϙψ `P ( θΰ΀pP@ͨ͘xhH@ ̨̰̀pPH@@ӰӠӐӈp`P@0 ԰ԘԈԀhXH8(ը՘Հx`P@0x $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                                     $ $ 040 4 $ $ 0 4 0 4 $  $ 040 4  $  $ 0 4 0 4                  ""  ""  ""  ""  ""  ""  ""  ""       $$$$$$$$        $$$$$$$$                0 0 0 0 0  0  0  0  0 0 0 0 0  0  0  0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!   !!    !!! !!! !  ! !!!! !                                                                          H@80( ׀xph`XPz$n6HbZlV~АJĴ>2' 2D V h z } q e Y N.B@R6dv*u*<iN`]rׄQ˨E9."&8J\ nx l !`!"U""#I4#F$=X$j%1|%&%&''( () )|)0*pB*T+df+x,X,Ҝ-L-.@./4/0)0,1>1P2b2t3334s45g56\67P(7:8DL8^98p9:,:; ;<<= ==$>w6>H?kZ?l@_~@ِASAʹBGBC;CD0D E$2EDFVFhG zGHHzHInIJbJ KWK.LK@LRM?dMvN3NO'OPPQQRR~*R<SrNS`TfrTUZUԨVNVWBWX7XY+&Y8ZJZ\[n[\\\]u]^i^_^_"`R4`FaFXajb:|bc.cd"deef ff0gyBgThmfhxiaiۜjUjkIkl=lm2m,n&>nPobotppqq|qrprsestY(t:uMLu^vApvw5wx)xyyznbVK?3'   ~ r f Z NB6+ui]RF:." y m !a!"U"#I#$=$%1%&&&''(())|)*p*+d+,Y,-M-.A./5/0)011223334t45h56\67P78D8989:-:;!;<<= ==>w>?k?@_@ATABHBC<CD0DE$EFFG GHH{HIoIJcJKWKLKLM?MN4NO(OPPQQRR~RSrSTfTU[UVOVWCWX7XY+YZZ[[\\\]v]^j^_^_`R`aFab:bc/cd#deef ffgyghmhibijVjkJkl>lm2mn&nooppqq}qrqrsestYtuMuvAvw6wx*xyy  !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqqrstuvwxy@(#)SunOS 5.5.1 Generic May 1996as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.2as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.2 dev 30 Nov 1995 GCC: (GNU) 2.7.2as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.2 dev 30 Nov 1995 GCC: (GNU) 2.7.2as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.2ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr 0 !33KK< )KK  3PP/9``?ttEWM00 R<<[  `Df""m""t""><"30707010000c033000081a400000064000000640000000132b60c9f00012f88000000200000001b00000000000000000000001100000009reloc/bin/xntpdcELF4,h4 (44.DL  /usr/lib/ld.so.1Jsa?`6xl[,Tmf~&N.7Y!R"3y28X*|b/e-rME%+h{uC]GBtkIZgQW1}#0<A;)9\OdD@'( 4VzPoS_5>Ujcn:q=pFH$KivLw^4      $$$ldd<8 .-h=-HtO[`pg-v{X @LP|dt.l(.p:L+Ll1@!.tL .x*4>I8U. ]0m{  08H040@$tL11 &\4:1GMSY$e|huXz8114T@D0H0 1L%(-d;  DN\Vb<i1@ox  20.p!,H$ 2$ P-h4>2N2WT]fk}0|ry@$  `@ l  |",. !33@A:4N:8Z| _ nt`~PL(:<:@ :DLX&.$50;<C:HPxsocketDESauth_subkeyssresetDESauth_setkeyDEScache_dkeysntp_optopt_startsigemptysetreadgmtimeDEScache_ekeysatoirefnumtoaustotshiauth_findkeyatointleapbittabgetpassprognameauthusekey_environ_endmemmovedoquery_iobcache_keydolfptoa__flsbuf_GLOBAL_OFFSET_TABLE_authnumkeysinit_authsigactionprettydateauthhavekey__ctypeauthkeynotfoundgethostbynameauthencryptinit_libDESauth_parityatexitexitauthnumfreekeysMD5auth2cryptDESzeroekeystolowermallocDESauthdecryptsprintfmfptoaauthencryptionsauthnokeyuglydateDESauth2crypt_initDESzerodkeys.umulfputs.uremDESauth_dessignal_no_resettime.remsetjmpauthuncachedauthkeylookupsserver_entryqsortnntohostmodetoafcloseMD5Updategetservbynamesetbufselectntp_getoptauth_delkeyscache_flagsauthistrustedstrncpygethostbyaddr_DYNAMICauthtruststrncmpauthdecryptprintf__iobustotsloopcmdsstrcatMD5authdecryptwritereallocauth1cryptfdopennumtoa_exitauth_havekeyntp_optarghumanlogtimeenvironperrorclocknamelib_initederrnontp_opterrVersionclktypesstrchrinet_ntoaauthkeyuncachedkey_hashcloseMD5FinalopenatolfpstrcmpfgetsDESauth1cryptgettimeofday_edata_PROCEDURE_LINKAGE_TABLE_fopenmemsetstrcpyMD5auth_setkeydecodenetnum_etextauth2crypt_lib_versionfflushustotsmidmemcmpgettstamp_ctypelib_stringbufauthfreekeyslib_nextbufmainDESauthencrypt.udivhumandate.div__filbufstrlenlocaltimeMD5authencryptMD5auth1cryptnumtohost_finintp_optindauthdecryptionscache_keyidcontrolleapbittabfprintfdebugauth_morememlongjmpdofptoaisattyfptoaMD5Initcache_keylenconnectlibsocket.so.1libposix4.so.1libnsl.so.1libkvm.so.1libelf.so.1libc.so.1.p.1p.<BPC z$0H<oHbT`lxuvd"R0+S5 ,8YD`P\mhtJ>]XTxc%s(i4G@LXWdjp#|!9 @D# @v"@v@v, @ ˖p"@ @v@v㿐@/v/v       㿐㿐 "ccG R"`G"!ʢ 'o!o!o!@""lo@r?L? G* T#c$#"*"D $D "a#`c͐`$#*`""##`c`$#*`"#`c`$#*`"" bl!o@ua@u aȀc!"cʒa*o!" ʚ! # Ȓ##* @*" Ȑ "# #a 2̠!@u  @u -  $a!  K@b(!@u#ʀ  "` bl!o@ub@u ʒ#㜀 "@5!@:c )ʪ!  /oʬ  @$ # @#' # $@@uz @X`㜀@ # @u] 㾈!# o"0o@ubb8  $#bl!o@uLb@@uD "D o@uL"`@ !G "D o"@u;1# "D o"@u.c@u1 &#ɐ#@u/ 3c  c 6 @u$& !ʀ?$ o"oa@  @u ? o"oa@  "c 㿐 @u?  o"ɒco@?㿐! o@t"  $ ̐!ol@t͒b@tŐ 㼈&&   #  h@t' @tؔ #p#p#x#x ''  %ʘ 3( +@ @t ? o>"3 ̐!oc@t !oc(@t"D o@t#P %o@J=x " p@tw  @o#xo#@tjް @t!? o#oa@1 ϰ? "D o#@tO2 ` "D o@tB# ` "D {p@t7 x  "D op@t+ (l "D cp@t H`2  "D Wp@t xT@"D "D Gp @tA2 ` /"D @p@s c6  @t ?  "D "p!@sۖ  "D p!P@s˒   Jx  "D p@s!x *x @ #ʀp@s! #`  @@ %@ ` '` @s@ & & @ @s D ///@s `@s77771/b 0" 2p@Y!Ȁ &"̐!p[a@" 3! 2pp""@sqJ "@a3@b 7 /b 0@X'@ː?#ɓ2 @# 2 @  @@ #` @*  @ '?@ @' '''b@X 0 0̐!pb @r #  h̐!p@rb@?p#ʤ 'l'h @r   `h`3`( `-  @r ?b `@r" 4'l<^\`dV=@ S?`JK *`@,,-----0---------`-H̐!p@rbx03̐!p@rb0-̐!p@rb0'̐!p@r}c00!̐!p@rwcX0̐!p@rqcp0̐!p@rkc0p"hoa@C ?̐!pc@r\㽐)'̢!Ƞ%! @r@r"@r @,!㿐 ̠!@2 @rj  ? $ @rh   $  *@rX!# ː @rY P@ a@̖ɀ  "`̐!p@qc0 ̐!q@q`0'"` Т'   `%  @a0n*?J >ɕ* ? @ǔ@ ]  '̒``&   @ ." *` J >'J    ̐!q@q` 09q@q`@ˀ  "`̐!q`H@qo@qڐ!0&ɐ "`̒a" " ! 1@qʐ Ā 1!  $#€ $# @q Ɇ"("@J "  " J   ( J     2 ("㿐 @q `' LJ@2  @qu 2  J    2@ 2 "&0& 㿐    "?&> : @9 4 2 N -  &#c@q8L * @*`c&"@&L 2c  ̐!q`̐!q`p@pÔ & 㿐@Ӓ @q```3`@q ` @q @@pΔ  @p  ̐!q`@p 㿐# ?@0  @90@ h  n !! '̔J@ ?"p̒  '## '̒, ̤ '"p ` M@p〠   @p>p&<  ` L@pq@p.` B5q/q-@p2>p>p@p  <"@p   0!a Ɛ̐!qa̐!qa8@o0 `q@oaX@ 㿐@pJ@㿐qah 'q%q@oؠ    x @oʠ ``q@o’a㿐  2 pp# *$ ,  @p, qa@o 0@p#"pp* "@*`@ *`" *" *  * "㿐  2 ɐba7 *$ ,  @o, qa@o~ 0!     @oڒ#3ɠ&c@oג#b@oa7c`&   & 8&c㿐   # qaqa  q a# qb@o:0qb @o5㿐  2 "q@o&b80q@o"bP0""㿐  2 ! q"`q"pq"x@o 0J M d D  m   "a "aq@nb㿐!" 2p@!Ȁ $"q@nޒb0%! "a ! 2pp""@nJ ɐq@nb0"a@㿐  2  # q'bq$bqJcJ c@o 2  "c qJcN c@n "#̐!qc@n㿐  2 bDq<c qJcJ c@nԐ 2 )""D qJc8J c8@nŐ 2 bD "bD qJc@N c@@n bD?"bDq@nBc0bDqcH@n:㿐# @n? @n( 㿐q@n%a㿐!̠!blq@nc`@nq@ncho@nS!㿐@m xq#p@nm q@nmc2!@nh !̠!Ȑqc@m@n ذ@? $@@nY ``$` @  ?:@, ̐!@,@n@nC؁㿐  t@mb  㿐  !t@mbH 㿐t@mb   t @mb p#\#`#d#h      쀢 $ Ò  쀢 #t@ @b@mi '`'㿐@  㿐@ `#\#`#d#h     O 䀢 u }| xt@m.bȐt@m*c䀢 m ` " * `    -  =  ^  ~    *  @ +  .'' J J @   * : `4 `&  X, ܨ@Q@ܤ`@Ȓ @  ܢ @8 tc`ܔ #\ #`#d#h#l@lÐ 'ܒ`'㿐`'D@! 1˰ . D@l֔ 㿀!t @#@@l!t @#@  N @l $  ,@p    0@  0t # 1 0 1#\@ln    u ` @ld#\   u @l\`` !u @B  @lRu (@lM` `tu9`Ȁ`"u@l>`u  u@l5`u  u@l,`u  u@l#au  u@lau  u@la ua0@l !u 4' 8'@!8@l <' @'!u@!X@k D' H'!u@֠!x@k L' P'!u@ʠ!@kܒu@kؒa 'u%u`T@ @k͒Ȁ 2 @kǒР  `u@ka0u@ka 'u%u`t'`x'@ @kȀ 2 @kР  `u@ka0u@ka %u#u `@k 2 @kaР  $u@ka0 ' '!u @" @d    @ٖ    @Ӗ @kfP И  4  c "` 2**#\#`#d#h    NЀ ̀ #t { ̐`'1ù @k"!0̐ 'Đ`'́P И  4  c "` 2**#\#`#d#h    Ѐ ̀ p( j/ P e`Q u@jڒb@@Fu@jҒb``u@j̒b`u@jƒb`u@jb`u@jb`$u@jc`,u@jc `0u@jc@`4u@jc``@u@jc`Du@jc `Lu@jc̀ u@ja0̐ P'Đ`'́`  $  uJcJ c@jא 2   uJcN c@jɐ  ̐!u@jYc0a#\#`#d#h     W 䀢 N H  C ''' '!v @b @^ ܐ``@j0'@'`'!v @L H@j`'` '!v @? h@j`v@i``v@i`h#\#`#d#h      䀢 5 ! 8 !vD Ȕ@iΒ!v @ @iŒ  0v! 1 0 1@i `v@ia(J`v@iaH !v @!h@i   !v @!@i`!v `ؠ!@i`'`'!v@l!Ȕ@i~v@iza  vBbv@ilb v@idb @v@i\b  v@iTb0 v@iLb8 v@iDb@ v@i<bH v@i4bXua0@i/!v  (@ h@i&   !v 4@"h@i !v $@"@i`,'`0'!v @>"@ip#\#`#d#h      쀢 O@ I耢 , (' ,0@@v@hؒb`v@hҒb`v@h̒c` v@hƒc(`v@hcH`v@hch`v@hc`v@hc` v@hc耢 ,`(v@hcp#\#`#d#h      쀢 Tܒ NȒ ( I@w@hx``w@hr`(`w@hl`H`w@hf`h` w@h``` w@hZ``w@hT``w@hN``u@hHb`w@hBa` w@h<a(`$w@h6aHp#\#`#d#h     2 쀢 Ts N_ 4 Iw@hah`w@h a`w@ha `w@ga%w` w@ga#w`w@gbw@gb(@ `@g@   ?$ 2   " @gՒbH  $u@g͒a0p#\#`#d#h     ɚ 쀢 $    @w@gb``w@gbx`w@gb` w@gb㿐 @ 㿐 @ 㿐 @  㿐 @ `       '  / , wؒb* @gX M wc @gQ E     2     wb@g9  '  ( 7w* JN耢@ ؐ @g耢 `*  @n܀ ܐ    @ '؀ $ @g&      '/'// ///#\#`#d#h  w@fc(`    4 "@ `#\#`#d#h    Ԛ w@fc(㿐@  㿐@ p'  '%w#w*  JL0@  @g0  h'*  JLc8@  @fc8  V'*  JwJ@@  @fݒ@  C'*  JwJH@  @fʒH  0'*  JwJP@  @fP  '*  JwJX@  @fX   'wc`* @f/    '耤 쀢 #\#`#d#h    #쀢 w@fc(@#\#`#d#h        {2 u9  pw@ecАx@e` e1`?N@@ G@@ C ``  ` / `  @  !8@f; @f7`@     O @  !8@f! @f`@  O  x P P '/Đx`X@e '`'㿐@ 㿐@  㿐@ ` ' '77  G /s Ц MxJ@2  @ex 2 .7ꀢ  JJ@2   @e ,`   `,` ` 耦  7x`xwc`@e`   ' @ 2  @  2  @  `!x@ j @d`#\#`#d#h     w@dc(h  ?  ?  *#\#`䀤 #d #h#h    Κ   #\#`#d#h      쀢  耢 0 x@d`x@da쀢 t%x`  '@e    #\ #` X#d@#h` @dw#l ? '0R) x@diax@dea쀢 D#x      #\ #`a#d @dN#h ? '0)&x@dAbx@d=bX쀢 #x      #\b#` @d(#d ? '0g p'  2 !<   JJ@2   @di ,`   `,` ` xb@c`  ' դ`xc#\#`#d#h     ߚ쀢 wc(@c`    4 "@ `#\#`#d#h     w@cc(p#\#`#d#h      w@cc(㿐@  㿐@ `     `" @ #\#`#d#h   m w@cZc(p#\#`#d#h     V 쀢 0 * $ %@w@c3ah` x@c-c(`x@c'cH` x@c!ch`x@cc`x@ccp#\#`#d#h      쀢 T7 N>  I Ex# "u@ba0@ S x@bݒc "x@ E#@bВ  y ` y`y` @b `` y@b`8` `y@b`h쀤 㿐@  㿐@ ` '' 77    7   '#\#`#d#h     w@buc(㿐@  㿐@ !p    '#\#`#d#ha  w@bNc(p#\#`#d#h  "   J 쀢 f `w < [@v@b'b`y@b!`` y@b``y@b``8y@b``y@b a`y@ba0`y@aaP`y@aap` y@aa`$y@aa`(y@aa`,y@aߒa`0y@aْb`4y@aӒb0h#\#`#d#h  #   Ϛ 䀢 | v q# at `*`@y@ac@! ! `*`@y@acX  `*`@y@acp  `*`@y@ac  y@ac  "ܐy@ayc`y@asc@!z  @<@@af`z@a``8` z@aZ`X`z@aT`x`z@aN``z@aH``z@aB`؁X   4 "`#\#`#d#h  $  0 Ԁ V ] 4 @|z@a`"؀` "       za `za8@`!z `z@`ah `z@`ޒa`z@`ؒa` z@`Ғa`z@`̒a`z@`ƒb`z@`b(`'` '@ @`"H`$'`('!z@ @`"h`,z@`bz0b@`' `z@`bԀ u@`a0Ԑ 4'̐`x'ԁPؒ @`  ' zJb J b@`ِ 2  zJbJb@`̐ 2  ' @Ѐ >'F' zJbJ b@` 2   zJcJc@` 2   ' @̀ "' zJcJc@` ̐ ' @ù     '̐! z@`c0 ̐! z@` c(0#\#`#d#h  %    ؀ w@_c(X   4 "`#\#`#d#h  '   Ԁ   !L Ԑ`}'Ԫ /z)u!0@*z@_` `zcH@_̀`   'z̑.   @_!0-@X`@_ ̐@_!0 `zch@_̀`    6& ̐@_v!0̓. @`L'`P-@ 'ܐ @ zcx@ؔzc@_\  @_VԀ  Ԑ̒L@_L'Ԑ`'ԁp#\#`#d#h  &   C 쀢  {p < v@z@_ c !z @#@_`z@_c` z@_ c`{@_``{@^`(`{@^`H !{ @ݠ h@^ : !{ @Р @^ !{ (@Ơ @^ג`${@^ђ`Ȑ{` @^ɕ* `0{@^Òa`,{@^a(`8{@^aH`4{@^ahJ-   8 7J! ˈ33J  2* **JЖJ` "@ "@ 㿐   N" @     N 2 N - +  N +" N`.ː" @ "z N '*@^:` ,`,`@ N"`@N`?ː" @ ;`.5 N '*`@^}:`, ,   "N N" @ " N  N 2 N  ː" # !,@  ,  *2 @$ 2  2, ,  8`  "  8&@&` 㿈̐" @]!""@2!"!" " "!"""!""x""<"!@@!''̒`@ʔ `?̄( "   $@ 2 $  @ ? ̄("$2 (`  "`2$  㿐a  ="a"@8 ?̐"*`@$2$( 2$`  "`(""@( 2!ː"bt , ""H ːa@Kh 㿐@]8"@  Δ4"@"4`0  " 㿐 ?̐"*`@` `$`@`2`$```S`3b@`2!"b@"`(`( D3`(?# @`>3`( ?̖"*`@ 2@"@  2@"x4?"x#@`"4  "`3`  Δ `"4?&`#`$bx3`(@ "bx ?̐"*`@#"4#@"@@  ?̄b*   "b $  2 $ "  (  㿐 ?̐"*`@`!`$2@@`#``(#`@!@3`(2'"@`2`$! 6  "4!@?$ #`#`$`#`bx3`(@ "bx ?̐"*`@#"4#@"@㿐 ?̐"*`@ #Τ ' $2 @\ @\ $ ,$ , (b@"@14 (4.$b@ 2 $#`  ! `"4?$` @\#"4@\_ $ , $ ,$ $"4 ( ?̒b* $x"  "x̂?̔  " (2 ("@bx"4#bx"#"4"@$㿐 "@`P"  a "a !!"@(0@㿐 "@`("  a  "a !!"@?  @㿐 "@`"  a  "a !!"@T  @ڔ㿐 "@`"  a  "a !!"@  @ޔ㿀@[p`"O`x{ `w2v '' %˨" @ j* :  @ @[ @[Q]`<  * ? ĕ*"?" ` "?` ?"@@!  *` 2` @  "@ "6 + @Z     @ * *`**` *  '**`*@ @ @ @' W  㿀"$ @8"8 *@ *`̐#@"8 @Z ?6  *2 @Zޠ  *`*` $ *  ,@ * :  $ .:  4 . ?# . . @6 ,*     , @ *@ 8*@@ ` @ "`` -,@:*@ .@ 2 @*@` @ 0*@`@ `*@㿐   s 㿐!̀ (!̢!!@Z3@Z0!Ȑ? $!Ȑ`@Z1``$`*@aȔaȐ? "aȐ @Z! 0 " * ?㿐@"!Ȁ "b"!А "!Ѐ J 2"Ȁ a?*@J@ -[J` W -2 J` 2N"Ȓ "ȑ* @ "aaЀ"aJː "a   N`@2N {N . : `:`?2N{!. :` :2 J """Ȁ {"b "ȑ*@"" 㿈@Y А"?@?/!@'`'b&" +`: #@: <   (&  "@ & 0& x"$ @Y8"8 *@ *`̐#@"8`!'@Y"   *`@ *   #\ #`gl#d{@YUb㿀@Y '@Y"$ @8"8 *@ *`̐#@"8   a *  #\{@Y*b؁ 8  $㿐  `  8  @ 㿐 "$ 8"8 *@ *`̐#@"8{cP@X0"(, @㿐"$ 8"8 *@ *`̐#@"8{4 4 cX4  @X˚ 㿐"$ 8"8 *@ *`̐#@"84` @ʐ{ch `{cp @X㿐? 'D  D @X̔ D"$ ]8"8 *@ *`̐#@"8. O@X Op"$ A8"8 *@ *`̐#@"8ba7`! @Xc'@Xb| *  bL*  #\'l#`#d#h|`#l@X1#px   @5 "$ 8"8 *@ *`̐#@"8ba7`! @X'@XF`    c$c4|`H#\#`@W#d؀ @2` `@ (b@  "`"  a  "a@"t"H@@@ؐ6*  @@W}  (<b@   "<`"  @m"t"H@v@r@@`@W `?㿐b@  "`" !a "a!ˠ!@="t"H@F@B㿐!ˠ!@@8 @q@ X@W  @N [&@ ]   ˤ"N   ˖" N*   N  . *@W8`  @ *  &@  @&@ p'@WA'3̐@W> b쀢 }@Vؐ!@V 㿈a  "a "@`" a $"aˠ!'쀦'>? @@ '`@?@ '`@E 4` &@&`㿐 2 !@ ? @ " ?  " @&  㿈b<  "b<!"@ `" 0 ˰!h6.@``' '@@ '6@@쀦 @'@ '耢  쀠`?㿐x à!#Ěab3`(0`0`0` 0`0`0`0`(`( <`<  < <(((3ò`H5@((0`(0`<(.`0` <. 0`<(0`5ôȅ0`.`0`. (`(  *2. 6*2.6; 2 220('@2 2 <(  8(6 @@0`)*@ `0`)*@ `0`)*@ `)*@ 660(` '@6 6<(@@0`)*@ `0`)*@ `0`)*@ `)*@`?㿐  ǞUUU5@(1 1 1  *@6 @.#/`(@((1 1 (.`1 ( ((6 @1 (`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?(`@@1 ?( `@@1 ?( `@@`.?(@`7` @ @1 (`@1 ?(`@1 ?(`@1 ?(`@1 ?(`@1 ?( `@1 ?( `@`/`?(``qÄ(@1 1 1  <<<@05ƴ. c/ @((. "1 (1 . (1 .` ("㿈a  "a "@`"  a  +"aˠ!'66 '@ '`@? 'Ʋ` 耎 @ '``&@ &`    (`   2`0` 2 ` ( " ``0``$ `?h"$ 8"8 *@ *`̐#@"8ؒ @S ? @S. .  $,@   , 2 @SВ* * @ $ *  ,@ $ & … 4 `['D'  ?#!@'Ԁ'Й*''Ȑ '̓+`'А`'Г*'Б* @'А 'Г*'Ԕ @2` @3  @ @2 *  @ 'Ѐ 'А ',Ԁ 4'Ԁ @  , @ *@ 8*@@* @  @ @`@* @@" --@`@:*@ .@2 @*@` @ 0*@`@ `*@" "H" ;j" &."  v" P.2  `? @6  &  @ & &&  @@*``   `  * *` *   #?  @E  P' '2  ?7 x 8" }a  `   ` * *` *    @   *`X`2 *`Y *`Z `*`[x   @``` ```` `$`(`,`05ک`4x`8@ -(`0`@:1V@-- 5 ۆ )'-50os (@) 1 =_㯆@ -`'(`0`@*@- - 5*  )-5?Q (@ ) 1 `&؆@ - (`0`@"=㯆@-- 5?ֆ㱆 ) -5"W5㾆 (@) 1 "@ -(`0`@?fᓆ@- - 5)P㎆ 8-5m! 8`< '܄) 1 =b@ (`0`@0,@@ - 53 bQ (@@-53:mc -@) 1 35IJ`]@ - @(`0`@3`S@) @- 536(yb (@܄@-539cȲ -@) 1 3xsa@ -@(`0`@30cֲ@)@- 53=5Ca (@@-53V` - @) 1 3*xa@ - @(`0`@3?;c@)@- 53bٲ (@ @-53#J` -@) 1 ?B@ (`0`@!}⁆@ - 5gX"-5?yN ) 1 )/D@(`0`@㩆@- 5=҆` -5/p ) 1  &߆Ɔ@ (`0`@:I@- 55;̆-5") 1 6u49@(`0`@9@- 5蟆܄-51+e) 1 = HD@1(`0`@ʿ㗆0@ - 5*㧆5@-5?$95 ) 1 VֆÆ@1(`0`@#30@- 5?}5@ -5!aц5) 1 O@1 (`0`@?90@܄- 5(P5@-5ᡆ5 ) 1 =߆₆@1(`0`@/N50@- 5 ⻆5@-5:ᴆ㑆5) 1  & &  @& & 㿐@/N/N㬮 ??? ??㿐㿠㿠ؑxntpdc> print version numberversionset key type to use for authenticated requests (des|md5)key type (md5|des)keytypeset keyid to use for authenticated requestskey#keyidexitexit xntpdcquitset/change debugging levelno|more|lessdebugspecify whether hostnames or net numbers are printedyes|nohostnamesspecify a password to use for authenticated requestspasswdspecify the host whose NTP server we talk tohostnamehostset the delay added to encryption time stampsdelayset the primary receive time outmsectimeouthelptell the use and syntax of commandscommand?c:dilnpslistpeerspeersdmpeersusage: %s [-dilnps] [-c cmd] host ... localhost%s: malloc() failed! --- %s --- ntpudp%s: ntp/udp: unknown service Got ntp/udp service entry Opening host %s Closing old host %s socketconnectwrite to %s failed%s: realloc() failed! select fails%s: timed out, nothing received %s: timed out with incomplete data Received sequence numbers %d, last frame received last frame not received readShort (%d byte) packet received Packet received with version %d Packet received with mode %d Encrypted packet received Received request packet, wanted response Received packet with nonzero MBZ field! Received implementation/request of %d/%d, wanted %d/%dError code %d received on not-final packet Received items %d, size %d (total %d), data in packet is %d Received itemsize %d, previous %d Received duplicate sequence number %d Received second end sequence packet Keyid: Keyid must be defined, request not sent DES Password: MD5 Password: No password, request not sent ***No host open, use `host' command polling select***Server implementation incompatable with our own ***Server doesn't implement this request ***Server reports a format error in the received packet (shouldn't happen) ***Server reports data not found ***Permission denied ***Request timed out ***Response from server was incomplete ***Server returns unknown error code %d ***Command `%s' unknown ***Command `%s' ambiguous ***No file for redirect w***Error opening %s: 0123456789***Illegal integer value %s ***Value %s should be unsigned %u.%u.%u.%u***Can't find host %s Commands available: %s %s%sCommand `%s' is unknown Command `%s' is ambiguous function: %s usage: %s [ %s ] %s primary timeout %d ms delay %lu ms current host is %s no current host current host set to %s current host remains %s still no current host no keyid defined keyid is %lu keytype is %s md5deskeytype must be 'md5' or 'des' Keyid must be defined Password unchanged hostnames being shown hostnames not being shown yesnoWhat? debug level is %d morelessdebug level set to %d %s: : /dev/ttyr%sdisplay the kernel pll/pps variableskerninfodisplay clock debugging informationclkbugset/change one of a clock's fudge factorsvaluetime1|time2|val1|val2|flagsfudgedisplay clock status informationclockstatdisplay the current leap second stateleapinfodisplay packet count statistics from the control modulectlstatschange the keyid the server uses to authenticate control messagescontrolkeychange the keyid the server uses to authenticate requestsrequestkeyremove a trap (configured or otherwise) from the serverclrtrapconfigure a trap in the serverinterfaceportaddtrapdisplay the traps set in the servertrapsdisplay the state of the authentication codeauthinforemove one or more key ID's from the trusted listuntrustedkeyadd one or more key ID's to the trusted listtrustedkeyrequest a reread of the keys file and re-init of system keysreadkeysreset stat counters associated with particular peer(s)presetreset various subsystem statistics countersio|sys|mem|timer|auth|allpeersresetdisplay data the server's monitor routines have collectedmonlistdelete a restrict entryntpportdelrestrictremove flags from a restrict entryunrestrictcreate restrict entry/add flags to entryntpport|ignore|noserve|notrust|noquery|nomodify|nopeermaskaddressrestrictdisplay the server's restrict listreslistclear a system flag (auth, bclient, monitor, pll, pps, stats)disableset a system flag (auth, bclient, monitor, pll, pps, stats)...auth|bclient|monitor|pll|pps|statsenableunconfigure existing peer assocationsunconfigconfigure broadcasting time serviceminpollbroadcastmodeaddrefclockconfigure a new serveraddserverconfigure a new peer associationminpoll|preferversionkeyidaddraddpeerdisplay event timer subsystem statisticstimerstatsdisplay I/O subsystem statisticsiostatsdisplay peer memory usage statisticsmemstatsdisplay local server statisticssysstatsdisplay local server informationsysinfodisplay loop filter informationoneline|multilineloopinfodisplay statistical information for one or more peerspstatsdisplay detailed information for one or more peerspeer4_addrpeer3_addrpeer2_addrpeer_addressshowpeerdisplay peer summary info the way Dave Mills likes itdmpeersdisplay peer summary informationpeersdisplay list of peers the server knows aboutlistpeersNo data returned in response to query ***Incorrect item size returned by remote host (%d should be %d) Expected one item in response, got %d %-9s %s remote local st poll reach delay offset disp ======================================================================= %c%-15.15s %-15.15s %2d %4d %3o %7.7s %9.9s %7.7s remote %s, local %s hmode %s, pmode %s, stratum %d, precision %d leap %c%c, refid [%s], rootdistance %s, rootdispersion %s ppoll %d, hpoll %d, keyid %lu, version %d, association %u valid %d, reach %03o, unreach %d, flash %03o, boffset %s, ttl/mode %d timer %lds, flags none system_peer,%s config%s refclock%s auth%s bclient%s prefer reference time: %s originate timestamp: %s receive timestamp: %s transmit timestamp: %s filter delay: %-8.8s filter offset:filter order: %-8doffset %s, delay %s, dispersion %s, selectdisp %s remote host: %s local interface: %s time last received: %lds time until next send: %lds reachability change: %lds packets sent: %ld packets received: %ld bad authentication: %ld bogus origin: %ld duplicate: %ld bad dispersion: %ld bad reference time: %ld candidate order: %d onelinemultilineHow many lines? offset %s, frequency %s, time_const %ld, watchdog %ld offset: %s s frequency: %s ppm poll adjust: %ld watchdog timer: %ld s system peer: %s system peer mode: %s leap indicator: %c%c stratum: %d precision: %d root distance: %s s root dispersion: %s s reference ID: [%s] reference time: %s system flags: none bclient auth monitor pll pps stats kernel_sync pps_sync stability: %s ppm broadcastdelay: %s s authdelay: %s s system uptime: %ld time since reset: %ld bad stratum in packet: %ld old version packets: %ld new version packets: %ld unknown version number: %ld bad packet length: %ld packets processed: %ld bad authentication: %ld limitation rejects: %ld time since reset: %ld receive buffers: %d free receive buffers: %d used receive buffers: %d low water refills: %d dropped packets: %ld ignored packets: %ld received packets: %ld packets not sent: %ld interrupts handled: %ld received by int: %ld time since reset: %ld total peer memory: %d free peer memory: %d calls to findpeer: %ld new peer allocations: %ld peer demobilizations: %ld hash table counts: %4d time since reset: %ld alarms handled: %ld alarm overruns: %ld calls to transmit: %ld funny version number %u specified prefer%s not understood minpol must be within %d..%d done! authbclientmonitorpllppsstatsUnknown flag %s limitedlptrapnotrapnopeernomodifynoquerynotrustnoserveignore, address mask count flags ===================================================================== none%-15.15s %-15.15s %9ld %s Flag %s inappropriate Invalid mask %s remote address port local address count m ver drop last first =============================================================================== %-22.22s %5d %-15s %8ld %1d %1d %6lu %6lu %7lu address port count mode ver lastdrop lasttime firsttime %-25.25s %5d %9ld %4d %2d %9lu %9lu %9lu address port count mode version lasttime firsttime ====================================================================== %-20.20s %5d %9ld %4d %3d %9lu %9lu allpeerstimermemsysioFlag %s unknown Not done due to errors key lookups: %ld keys not found: %ld uncached keys: %ld encryptions: %ld decryptions: %ld address %s, port %d interface: %s, wildcardconfigured low priority normal priority set for %ld secs, last set %ld secs ago sequence %d, number of resets %ld requests received: %ld responses sent: %ld fragments sent: %ld async messages sent: %ld error msgs sent: %ld total bad pkts: %ld packet too short: %ld response on input: %ld fragment on input: %ld error set on input: %ld bad offset on input: %ld bad version packets: %ld data in pkt too short: %ld unknown op codes: %ld 11 (clock out of sync)10 (second to be deleted at end of month)01 (second to be added at end of month)00 (no leap second scheduled)11 (lower stratum leap information ignored - no leap)00 (leap controlled by lower stratum)sys.leap: %s leap.indicator: %s leap.warning: %s leap.bits: %s Leap overide option in effect Stratum 1 restrictions in effect time to next leap interrupt: %ld s date of next leap interrupt: %s calls to leap process: %lu leap more than month away: %lu leap less than month away: %lu leap less than day away: %lu leap in less than 2 hours: %lu leap happened: %lu clock address: %s clock type: %s clock type: unknown type (%d) last event: %d current status: %d number of polls: %lu no response to poll: %lu bad format responses: %lu bad data responses: %lu running time: %lu fudge time 1: %s fudge time 2: %s stratum: %ld reference ID: %s fudge flags: 0x%x time1time2val1val2flagsWhat fudge is %s? Unknown fudge parameter %s values: %d%12ld%12lutimes: %d%17s%37spll offset: %ld us pll frequency: %s ppm maximum error: %ld us estimated error: %ld us status: %04x pll time constant: %ld precision: %ld us frequency tolerance: %s ppm pps frequency: %s ppm pps stability: %s ppm pps jitter: %ld us calibration interval: %d s calibration cycles: %ld jitter exceeded: %ld stability exceeded: %ld calibration errors: %ld xntpdc 3-5.87 Mon Dec 16 00:56:14 EST 1996 (1)01234567890123456789abcdefamnesia: unknown option -: option requires argument -DecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%s, %s %2d %4d %2d:%02d:%02d%2d %s %02d:%02d:%02dbclientprivatecontrolbroadcastserverclientsym_passivesym_activeunspecmode#%d%lu.%lu.%lu.%lu%s(%lu)REFCLK(%lu,%lu)DecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu%17s %02d:%03d:%02d:%02d:%02d.%03ldGPS_HPHP 58503A GPS Time & Frequency Receiver (26)TrueTime (generic) Receivers (25)USNONaval Observatory dialup (24)PTB_ACTSPTB Automated Computer Time Service (23)ATOM_PPSPPS Clock Discipline (22)GPS_VMETrueTime GPS-VME Interface (21)GPS_NMEAGeneric NMEA GPS Receiver (20)WWV_HEATHHeath WWV/WWVH Receiver (19)NIST_ACTSNIST Automated Computer Time Service (18)GPS_DATUMDatum Precision Time System (17)GPS_BANCBancomm GPS/IRIG Receiver (16)GPSTM_TRUETrueTime (old GPSTM driver) Receiver (15)MSF_EESEES M201 MSF Receiver (14)ATOM_LEITCHLeitch CSD 5300 Master Clock Controller (13)IRIG_TPROKSI/Odetics TPRO/S IRIG Interface (12)GPS_ARBITERArbiter 1088A/B GPS Receiver (11)GPS_AS2201Austron 2201A GPS Receiver (10)GPS_MX4200Magnavox MX4200 GPS Receiver (9)GENERICGeneric reference clock driver (8)CHUScratchbuilt CHU Receiver (7)IRIG_AUDIOIRIG Audio Decoder (6)TRUETIMETrueTime (generic) Receivers (5)WWVB_SPECSpectracom WWVB Receiver (4)WWV_PSTPSTI/Traconex WWV/WWVH Receiver (3)GPS_TRAKTRAK 8810 GPS Receiver (2)LOCALUndisciplined local clock (1)UNKNOWNunspecified type (0)sigaction $$Xgv 4  00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E54`X54`P8 H 8̃H9;h`P@>@:Txp:X>p`@AѨѠAhXIH8(JH8(РАM$xXPOH(SVPϸTϐπWPHX@80 X@80 Y@θ  ΨY8@80Πxh[H8(@8\$\@̀x^P@a(80̸aD80̐̀a`80x`Xc0f˸gH8(ˀph0 h8888i 8888ʨʘih`j80lx8(l8(ɸɨmT8hXmp8mȸoȐȀr 8888XPu80(wP8888Ǹz ǐ߸߰ߨߘߐ ߈@߀xx0 hPh d'B@;xph`XPH@80( H8( !2UCSduq8T o6->O`Rqn5Q):mK4[l}Pl3%N6FWhjy1Mi0 1BSLdth/ȽلK -f>-N_pIe,H)9J[dl+|Gc)$5~FEW gxa(}D  `1'ARc|tC _&{ A  , = N] _$ o y @  ԕ \ #   (x 9? J Z k |[ " w >   Y $ 4 E Vu g< x X  ܭ t ;   0 AW R b s s :  Ǐ V  q ,8 < M ^ oT  p 7 S'8IoZ6j{Rϧn5#4PEUfwl3Ok2/@QbNsj1!2TCSdup7ŬS oz6q-i>`OX`RPqG?6n.5& Q):lK3[l}Oݨk2~u%Nm6eF\WThjKy1C;2*M!i/ 1BSKdtg.ȼكJ yq-fi>-`NX_OpGI?6.%e, G)9J[cl*|F ԗᛎb)~u$m5~dFE\W TgKxCa:(2*!}D  _1&ARc{tB д^%鳊z Ay q ,h =` N]X _$O oG > y6 @. %  ԕ \ #   (w 9> J Z k |Z ! v =  ˆ } Yu $ m 4d E\ VuS g 6 - p% 7  R'8InZ5j{QߟϦm4}u#l4PdE\USfKwlB3:2)!Oj1/@QbMsۼi0!52TCjSd͟up97ӖnŬS=r phH8xXP(    XH pH8xpP@xpp $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                                     $ $ 040 4 $ $ 0 4 0 4 $  $ 040 4  $  $ 0 4 0 4                  ""  ""  ""  ""  ""  ""  ""  ""       $$$$$$$$        $$$$$$$$                0 0 0 0 0  0  0  0  0 0 0 0 0  0  0  0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!   !!    !!! !!! !  ! !!!! !                                                                          @(#)SunOS 5.5 Generic November 1995as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1as: SC4.0 dev 15 Feb 1995 GCC: (GNU) 2.7.1ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.rodata.got.dynamic.plt.data.ctors.dtors.bss.symtab.strtab.stab.index.comment.stab.shstrtab.stab.indexstr.stabstr L 44 $ )  39?E; M R [ `+Df$$m$$t$$T$+0707010001711d000041ed00000064000000640000000232fcde7800000000000000200000001b00000000000000000000000f00000009reloc/examples0707010001711e000081a400000064000000640000000132b6095c0000038b000000200000001b00000000000000000000001600000009reloc/examples/READMEREADME file for directory ./conf of the NTP Version 3 distribution This directory contains example run-time configuration files for the NTP Version 3 daemon xntpd. These files illustrate some of the more obtuse configurations you may run into. They are not likely to do anything good if run on machines other than their native spot, so don't just blindly copy something and put it up. Additional information can be found in the ./doc directory of the base directory. See the Config.local.dist file in the base directory for an explanation of the defines used. The files Config.* are used to generate fullblown binaries suitable for distribution with the systems shown as suffix. While this can result in some degree of useless code, the degree is small compared to the size of the baseline code. The files *.conf are representative NTP run-time configuration files, which normally live in /etc/ntp.conf. 0707010001711f000081a400000064000000640000000132b6095c00000641000000200000001b00000000000000000000001c00000009reloc/examples/baldwin.conf# # NTP configuration file (ntp.conf) # baldwin.udel.edu (128.4.1.24) # # This illustrates the use of an external clock with the local clock # driver, as well as a multicast server. The prefer keyword on the # local clock driver declares an external clock and that the time of # this server should not be wiggled by an NTP peer, unless the # external clock comes unstuck. Note the use of the multicast group # ID assigned to NTP, 224.0.1.1, which identifies this as a multicast # server rather than a broadcast one. The other NTP peers are known # stratum-1 chimes intended as backup should the external clock croak. # peer 127.127.1.0 prefer # KSI/Odetics TPRO IRIG interface fudge 127.127.1.0 stratum 0 refid GPS broadcast 224.0.1.1 key 6 ttl 127 peer 128.4.1.1 # rackety.udel.edu (Sun4c/40 IPC) peer 128.4.1.4 # barnstable.udel.edu (Sun4c/65 SS1+) peer 128.4.1.2 # mizbeaver.udel.edu (Bancomm bc700LAN) peer 128.4.1.20 # pogo.udel.edu (Sun4c/65 SS1+) # # Miscellaneous stuff # enable auth monitor # enable the good stuff driftfile /etc/ntp.drift # path for drift file statsdir /baldwin/ntpstats/ # directory for statistics files filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable # # Authentication stuff # keys /usr/local/bin/ntp.keys # path for keys file trustedkey 3 4 5 6 14 15 # define trusted keys requestkey 15 # key (7) for accessing server variables controlkey 15 # key (6) for accessing server variables authdelay 0.000163 # authentication delay (SPARC4c/40 IPC MD5) 07070100017120000081a400000064000000640000000132b6095c00000397000000200000001b00000000000000000000001f00000009reloc/examples/beauregard.conf# # NTP configuration file (ntp.conf) # bearegard.udel.edu (128.4.1.23) # server pogo.udel.edu # stratum 1 nearby #server 127.127.18.1 #fudge 127.127.18.1 time1 .0035 #phone atdt913034944774 atdt913034944785 atdt913034944774 #phone atdt913034944812 atdt913034948497 atdt913034948022 # # Miscellaneous stuff # enable auth monitor # enable the good stuff driftfile /etc/ntp.drift # path for drift file statsdir /beauregard/ntpstats/ # directory for statistics files filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable # # Authentication stuff # keys /usr/local/etc/ntp.keys # path for keys file trustedkey 3 4 5 6 14 15 # define trusted keys requestkey 15 # key (7) for accessing server variables controlkey 15 # key (6) for accessing server variables authdelay 0.000163 # authentication delay (SPARC4c/40 IPC MD5) 07070100017121000081a400000064000000640000000132b6095d00000646000000200000001b00000000000000000000001a00000009reloc/examples/dewey.conf# # NTP configuration file (ntp.conf) # # Generic configuration file for UDel NTP stratum-2 time servers. Don't # forget each server should have a /etc/ntp.drift and /etc/ntp.keys file. # # Stratum-1 peers. Each server should chime two different stratum-1 # servers from the following list. Each stratum-1 server should be used # only once. # #peer 128.8.10.1 # umd1.umd.edu #peer 18.72.0.3 version 2 # bitsy.mit.edu peer 132.249.16.1 # fuzz.sdsc.edu peer 128.118.46.3 version 2 # otc1.psu.edu #peer 128.9.2.129 # wwvb.isi.edu #peer 130.43.2.2 version 2 # apple.com #peer 16.1.0.22 # clepsydra.dec.com #peer 130.105.1.156 version 2 # clock.osf.orga #peer 128.96.60.5 version 2 # pi.bellcore.com #peer 128.4.1.1 # rackety.udel.edu #peer 129.116.3.5 # shorty.chpc.utexas.edu # # Stratum-2 peers. Each server should chime all of the others in this # list except itself. # peer 128.175.1.1 # huey.udel.edu (VAX) #peer 128.175.1.2 # dewey.udel.edu (VAX) peer 128.175.1.3 # louie.udel.edu (SPARC) peer 128.175.2.15 # snow-white.ee.udel.edu (SPARC) peer 128.175.7.4 # sol.cis.udel.edu (SPARC) # # Miscellaneous stuff # enable auth monitor # enable the good stuff driftfile /etc/ntp.drift # path for drift file # # Authentication stuff. Note the different authentication delay on # VAX and SPARC. # keys /etc/ntp.keys # path for key file trustedkey 1 2 15 # define trusted keys requestkey 15 # key (7) for accessing server variables controlkey 15 # key (6) for accessing server variables authdelay 0.001501 # authentication delay (VAX) #authdelay 0.000073 # authentication delay (SPARC) 07070100017122000081a400000064000000640000000132b6095d00001d3b000000200000001b00000000000000000000001d00000009reloc/examples/grundoon.conf# # NTP configuration file (ntp.conf) # grundoon.udel.edu (128.4.2.7) # # This machine can best be described as the kitchen sink. It has, in # addition to the baseboard tty ports ttya and ttyb, an 8-line # Serial/Parallel Interface (SPIF) with ports ttyz00 through ttyz07. The # configuration includes the following drivers, clock addresses and Unix # device names. # # Local Clock 127.127.1.0 /dev/audio # PST 1020 WWV/WWVH Receiver 127.127.3.1 /dev/pst1 # Spectracom 8170 WWVB Receiver 127.127.4.1 /dev/wwvb1 # IRIG Audio Decoder 127.127.6.0 /dev/audio # Scratchbuilt CHU Receiver 127.127.7.1 /dev/chu1 # NIST ACTS modem 127.127.18.1 /dev/acts1 # Heath GC-1000 WWV Receiver 127.127.19.1 /dev/pst1 # PPS Clock 127.127.22.1 none # # This machine has the kernel modifications described in the README.kern # file, as well as the tty_clk, tty_chu and ppsclock streams modules. # # Spectracom 8170/Netclock-2 WWVB receiver. This receiver is equipped # with a 1-pps and IRIG outputs. The 1-pps signal is connected via the # ppsclock streams module and the carrier detect line of the CHU # receiver below (ttyb). The IRIG signal is connected via an attenuator # to the audio port (/dev/audio). The propagation delay computed from # geographical coordinates is 8.8 ms, while the receiver delay # calibrated at the factory is 17.3 ms, for a total delay of 26.1 ms. # This is confirmed within 0.1 ms at the 1-pps signal output using a # portable cesium clock. We add a fudge time1 of 3.5 ms so the driver # time agrees with the 1-pps signal to within 1 ms. The fudge flag4 is # set to cause the receiver to dump the quality table once each day to # the clockstats file. # #server 127.127.4.1 # /dev/wwvb1 -> /dev/ttyz03 #fudge 127.127.4.1 time1 0.0035 flag4 1 # # IRIG Audio Decoder. The IRGI signal of the Spectracom WWVB receiver is # connected to the audio codec via a resistor attenuator. We add a fudge # time1 of 3.5 ms so the driver agrees with the calibrated 1-pps signal # to within 0.1 ms. We also specify a reference ID of WWVB to indicate # the signal origin. Note the prefer keyword in the server line, which # favors this driver over all others that survive the clock selection # algorithm. See README.refclock for further insight on this feature. # server 127.127.6.0 prefer # /dev/audio fudge 127.127.6.0 time1 0.0005 refid WWVB # # PST/Traconex 1020 WWV/WWVH Receier. The internal DIPswitches are set # as near as possible to the delays to WWV (8.8 ms) and WWVH (28.1 ms), # as computed from geographical coordinates. We add a fudge time1 of 5.9 # ms so the driver time agrees with the 1-pps signal to within 1 ms for # WWV. We also set the stratum to 1, so this receiver will not normally # be selected, unless the primary WWVB receiver comes unstuck. # server 127.127.3.1 # /dev/pst1 -> ttyz05 fudge 127.127.3.1 time1 0.0059 stratum 1 # # Scratchbuilt CHU Receiver. The audio signal from a computer controlled # CHU receiver is connected to a gadget box, which contains a 103A modem # chip and level converter operating at 300 bps. The propagation delay # computed from geographical coordinates is 3.0 ms, which is the value # of the fudge time1 parameter. We add a fudge time2 of 9.9 ms so that # the driver time agrees with the 1-pps signal to within a few ms, # ordinarily the best possible with this receiver. The fudge flag3 is # set because the 1-pps signal happens to be connected vit the carrier # detect line on this port (ttyb). We also set the stratum to 1, so this # receiver will not normally be selected, unless the primary WWVB # receiver comes unstuck. # server 127.127.7.1 # /dev/chu1 -> /dev/ttyb fudge 127.127.7.1 time1 0.0030 time2 0.0099 flag3 1 stratum 1 # # NIST Automated Computer Time Service. This driver calls a special # telephone number in Boulder, CO, to fetch the time directly from the # NIST cesium farm. The details of the complicated calling program are # in the README.refclock file. The Practical Peripherals 9600SA modem # does not work correctly with the ACTS echo-delay scheme for # automatically calculating the propagation delay, so the fudge flag2 is # set to disable the feature. Instead, we add a fudge time1 of 65.0 ms # so that the driver time agrees with th e1-pps signal to within 1 ms. # The phone command specifies three alternate telephone numbers, # including AT modem command prefix, which will be tried one after the # other at each measurement attempt. In this case, a cron job is used to # set fudge flag1, causing a measurement attempt, every six hours. # server 127.127.18.1 # /dev/acts1 -> /dev/ttyz00 fudge 127.127.18.1 time1 0.0650 flag2 1 phone atdt13034944774 atdt13034944785 atdt13034944774 # # Heath GC-1000 Most Accurate Clock. This is a WWV receiver with a # claimed accuracy better than 100 ms under "hi spec" conditions, but # such conditions are not frequent. The propagation delay DIPswitchs are # set to 9 ms, as close as possible to the 8.8 ms computed from # geographical coordinates. We add a fudge time2 of 40.0 ms so that the # driver time agrees with the 1-pps signal to within 50 ms, ordinarily # the best possible with this receiver. We also set the stratum to 1, so # this receiver will not normally be selected, unless the primary WWVB # receiver comes unstuck. # server 127.127.19.1 # /dev/heath1 -> ttyz07 fudge 127.127.19.1 time1 0.040 stratum 1 # # Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. The # default stratum is usually 3, but in this case we elect to use stratum # 0. Since the server line does not have the prefer keyword, this driver # is never used for synchronization, unless no other other # synchronization source is available. In case the local host is # controlled by some external source, such as an external oscillator or # another protocol, the prefer keyword would cause the local host to # disregard all other synchronization sources, unless the kernel # modifications are in use and declare an unsynchronized condition. # server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 0 # # PPS Clock. This driver is used to capture a 1-pps signal when the PPS # kernel modifications are not in use. It can be configured for the # tty_clk or ppsclock streams module or no module at all, assuming the # RS232 connector is properly wired. Normally, the 1-pps signal is # generated by a radio clock, in this cast the Spectracom clock # 127.127.4.1 also configured for this host. When used this way, the # associated radio clock normally has the prefer keyword in the serve # command line. The PPS driver then will be selected only if the prefer # peer is operating within nominal error bounds. See the README.refclock # file for further details. # #server 127.127.22.1 # pps clock # # Miscellaneous stuff. We enable authentication in order to prevent # enable auth monitor # enable the good stuff driftfile /etc/ntp.drift # path for drift file statsdir /grundoon/ntpstats/ # directory for statistics files filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable # # Authentication stuff # keys /usr/local/ntp.keys # path for keys file trustedkey 1 2 3 4 5 6 14 15 # define trusted keys requestkey 15 # key (7) for accessing server variables controlkey 15 # key (6) for accessing server variables authdelay 0.000163 # authentication delay (SPARC4c/40 IPC MD5) 07070100017123000081a400000064000000640000000132b6095d00000397000000200000001b00000000000000000000001c00000009reloc/examples/malarky.conf# # NTP configuration file (ntp.conf) # # This is for a broadcast/multicast client. Except for the statistics # stuff, this can be done with only a commmand line of the form # # /usr/local/bin/xntpd -a -k /usr/local/bin/ntp.keys -m -t 3 # multicastclient # listen on default 224.0.1.1 # # Miscellaneous stuff # enable auth monitor # enable the good stuff driftfile /etc/ntp.drift # path for drift file statsdir /malarky/ntpstats/ # directory for statistics files filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable # # Authentication stuff # keys /usr/local/bin/ntp.keys # path for key file trustedkey 3 4 5 6 14 # define trusted keys requestkey 14 # key (7) for accessing server variables controlkey 14 # key (6) for accessing server variables authdelay 0.000094 # authentication delay (Sun4c/50 IPX MD5) 07070100017124000081a400000064000000640000000132b6095d00000537000000200000001b00000000000000000000001900000009reloc/examples/pogo.conf# # NTP configuration file (ntp.conf) # pogo.udel.edu (128.4.1.20) # server 127.127.10.1 prefer # austron 2201A gps receiver peer 128.4.1.1 # rackety.udel.edu (Sun4c/40 IPC) peer 128.4.1.2 # mizbeaver.udel.edu (Bancomm bc700LAN) peer 128.4.1.4 # barnstable.udel.edu (Sun4c/65 SS1+) peer 128.4.1.5 maxpoll 8 # churchy.udel.edu (cisco IGS router) peer 132.163.135.130 maxpoll 8 # time_A.timefreq.bldrdoc.gov (Cesium) peer 131.188.1.40 maxpoll 8 # ntps1-0.uni-erlangen.de (DCF77) peer 129.132.2.21 maxpoll 8 # swisstime.ethz.ch (DCF77) peer 130.155.98.13 maxpoll 8 # terss.ml.csiro.au (Cesium) peer 192.36.143.150 maxpoll 8 # Time1.Stupi.SE (Cesium) # # Miscellaneous stuff # enable auth monitor # enable the good stuff precision -18 # clock reading precision (usec) driftfile /etc/ntp.drift # path for drift file statsdir /pogo/ntpstats/ # directory for statistics files filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable # # Authentication stuff # keys /usr/local/bin/ntp.keys # path for keys file trustedkey 3 4 5 6 14 # define trusted keys requestkey 15 # key (7) for accessing server variables controlkey 15 # key (6) for accessing server variables authdelay 0.000159 # authentication delay (SPARC4c/65 SS1+ MD5) 07070100017125000081a400000064000000640000000132b60b380000033e000000200000001b00000000000000000000002000000009reloc/examples/xntp.init-script#!/bin/sh # From -- Denny Gentry denny@eng.sun.com # I would recommend starting xntp from the following script, placed in # /etc/rc2.d and named S99xntpd # # modified by D.J. Gregor XNTPDIR=/opt/DLMxntp3 XNTPBIN=${XNTPDIR}/bin case $1 in start) if [ -x ${XNTPBIN}/xntpd ]; then echo "Starting NTP daemon, takes about 1 minute... " # The following line is unnecessary if you turn off # dosynctodr in /etc/system. ${XNTPBIN}/tickadj -s ${XNTPBIN}/ntpdate -v server1 server2 sleep 5 ${XNTPBIN}/xntpd fi ;; stop) pid=`/usr/bin/ps -e | /usr/bin/grep xntpd | \ /usr/bin/awk '{ print $1 }'` if [ "x${pid}" != "x" ]; then echo "Stopping Network Time Protocol daemon " /usr/bin/kill ${pid} fi ;; *) echo "error - usage: $0 start|stop" >&2 exit 1 ;; esac 07070100002ca9000041ed00000064000000640000000232fcde7b00000000000000200000001b00000000000000000000000b00000009reloc/html07070100002caa000081a400000064000000640000000132b60995000177c5000000200000001b00000000000000000000001500000009reloc/html/HTML.diffDave, here are some diffs to the `html' directory: I validated all of them with the HTML Document Type Definition (DTD). For that purpose I had to add the correct document type at the beginning of each document. Also, I corrected incorrect constructs, such as using `' within the `' tag. Using `<p>' after a list declaration is also invalid until the first `<li>' occurred. Similarily, after a `</pre>' you cant continue text without beginning a new paragraph (<p>). Finally I corrected some obvious spelling-errors. Even though I tried to make only minimal changes about 90kB of patch data follow; sorry. Regards, Ulrich Windl diff -r -c /home/windl/xntp3-5.86/html/HTMLPrimer.html ./HTMLPrimer.html *** /home/windl/xntp3-5.86/html/HTMLPrimer.html Sun Aug 4 20:35:31 1996 --- ./HTMLPrimer.html Tue Oct 1 21:15:05 1996 *************** *** 1,3 **** --- 1,4 ---- + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN"> <HTML> <HEAD> <TITLE>A Beginner's Guide to HTML *************** *** 1152,1158 **** One major feature not discussed here is fill-out forms, which allows users to return information to the World Wide Web server. For information on fill-out forms, look at this ! Fill-out Forms Overview

Style Guides

--- 1153,1159 ---- One major feature not discussed here is fill-out forms, which allows users to return information to the World Wide Web server. For information on fill-out forms, look at this ! Fill-out Forms Overview

Style Guides

*************** *** 1187,1193 **** description of SGML, the Standard Generalized Markup Language
  • ! The HTML Working Group of the IETF.
    --- 1188,1194 ---- description of SGML, the Standard Generalized Markup Language
  • ! The HTML Working Group of the IETF.
    diff -r -c /home/windl/xntp3-5.86/html/accopt.html ./accopt.html *** /home/windl/xntp3-5.86/html/accopt.html Sun Aug 4 20:35:31 1996 --- ./accopt.html Tue Oct 1 21:19:29 1996 *************** *** 1,3 **** --- 1,4 ---- + Access Control Options

    *************** *** 29,35 ****
    !

    restrict numeric_address [ mask numeric_mask ] [ flag ] [ ... ]
    The numeric_address argument, expressed in dotted-quad form, is the address of an host or network. The --- 30,36 ----
    !
    restrict numeric_address [ mask numeric_mask ] [ flag ] [ ... ]
    The numeric_address argument, expressed in dotted-quad form, is the address of an host or network. The *************** *** 54,60 ****
    !

    ignore
    Ignore all packets from hosts which match this entry. If this flag is specified neither queries nor time server polls will be responded to. --- 55,61 ----
    !
    ignore
    Ignore all packets from hosts which match this entry. If this flag is specified neither queries nor time server polls will be responded to. diff -r -c /home/windl/xntp3-5.86/html/authcert.html ./authcert.html *** /home/windl/xntp3-5.86/html/authcert.html Sun Aug 4 20:35:31 1996 --- ./authcert.html Tue Oct 1 21:24:19 1996 *************** *** 1,5 **** ! <code>authcert</code> - DES validation program

    authcert - DES validation program


    --- 1,6 ---- + ! authcert - DES validation program

    authcert - DES validation program


    *************** *** 28,34 **** 7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B ! and generates output as in the following
       K: 0000000000000000 P: 0000000000000000 C: 8ca64de9c1b123a7 OK
    --- 29,35 ----
      7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B
      
    !

    and generates output as in the following

       K: 0000000000000000 P: 0000000000000000 C: 8ca64de9c1b123a7 OK
    diff -r -c /home/windl/xntp3-5.86/html/authopt.html ./authopt.html
    *** /home/windl/xntp3-5.86/html/authopt.html	Sun Aug  4 20:35:32 1996
    --- ./authopt.html	Tue Oct  1 21:26:17 1996
    ***************
    *** 1,3 ****
    --- 1,4 ----
    + 
      
      Authentication Options
      

    *************** *** 27,33 ****
    !

    keys keyfile
    Specifies the file name containing the encryption keys and key identifiers used by xntpd, ntpq and xntpdc when operating in authenticated mode. The format of --- 28,34 ----
    !
    keys keyfile
    Specifies the file name containing the encryption keys and key identifiers used by xntpd, ntpq and xntpdc when operating in authenticated mode. The format of *************** *** 88,94 ****
    !

    S
    The key is a 64-bit hexadecimal number in the format specified in the DES specification; that is, the high order seven bits of each octet are used to form the 56-bit key while the low order bit of each octet is --- 89,95 ----
    !
    S
    The key is a 64-bit hexadecimal number in the format specified in the DES specification; that is, the high order seven bits of each octet are used to form the 56-bit key while the low order bit of each octet is diff -r -c /home/windl/xntp3-5.86/html/authspeed.html ./authspeed.html *** /home/windl/xntp3-5.86/html/authspeed.html Sun Aug 4 20:35:32 1996 --- ./authspeed.html Tue Oct 1 21:27:07 1996 *************** *** 1,5 **** ! <code>authspeed</code> - determine authentication delays

    authspeed - determine authentication delays


    --- 1,6 ---- + ! authspeed - determine authentication delays

    authspeed - determine authentication delays


    *************** *** 19,25 ****
    !

    -c
    Select total cost of encryption. Default is value to use in the authdelay configuration command. --- 20,26 ----
    !
    -c
    Select total cost of encryption. Default is value to use in the authdelay configuration command. diff -r -c /home/windl/xntp3-5.86/html/biblio.html ./biblio.html *** /home/windl/xntp3-5.86/html/biblio.html Sun Aug 4 20:35:32 1996 --- ./biblio.html Wed Oct 2 22:09:17 1996 *************** *** 1,3 **** --- 1,4 ---- + Further Information and Bibliography

    *************** *** 21,27 ****
      !

      Mills, D.L. Internet time synchronization: the Network Time Protocol. IEEE Trans. Communications COM-39, 10 (October 1991), 1482-1493. (PostScript). Also in: Yang, Z., and T.A. Marsland (Eds.). Global --- 22,28 ----

        !
      1. Mills, D.L. Internet time synchronization: the Network Time Protocol. IEEE Trans. Communications COM-39, 10 (October 1991), 1482-1493. (PostScript). Also in: Yang, Z., and T.A. Marsland (Eds.). Global *************** *** 45,56 **** includes significant enhancements in accuracy and reliability, as determined by experience in an estimated total of well over 100,000 clients and servers in the Internet, while retaining backward ! compatiblity with previous versions. The formal specification of the NTP Version 3 protocol is contained in:
          !

          Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. --- 46,57 ---- includes significant enhancements in accuracy and reliability, as determined by experience in an estimated total of well over 100,000 clients and servers in the Internet, while retaining backward ! compatibility with previous versions. The formal specification of the NTP Version 3 protocol is contained in:

            !
          1. Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. *************** *** 74,84 ****
              !

            1. Support for precision-time kernel modifications, as described in
                !

                Mills, D.L. Unix kernel modifications for precision time synchronization. Electrical Engineering Department Report 94-10-1, University of Delaware, October 1994, 24 pp. (Abstract: --- 75,85 ----

                  !
                1. Support for precision-time kernel modifications, as described in
                    !
                  1. Mills, D.L. Unix kernel modifications for precision time synchronization. Electrical Engineering Department Report 94-10-1, University of Delaware, October 1994, 24 pp. (Abstract: *************** *** 94,100 ****
                      !

                      Mills, D.L, and A. Thyagarajan. Network time protocol version 4 proposed changes. Electrical Engineering Department Report 94-10-2, University of Delaware, October 1994, 32 pp. (Abstract: --- 95,101 ----

                        !
                      1. Mills, D.L, and A. Thyagarajan. Network time protocol version 4 proposed changes. Electrical Engineering Department Report 94-10-2, University of Delaware, October 1994, 32 pp. (Abstract: *************** *** 109,115 ****
                          !

                          Mills, D.L. Improved algorithms for synchronizing computer network clocks. IEEE/ACM Trans. Networks (June 1995), 245-254. (PostScript).

                        --- 110,116 ----
                          !
                        1. Mills, D.L. Improved algorithms for synchronizing computer network clocks. IEEE/ACM Trans. Networks (June 1995), 245-254. (PostScript).
                        *************** *** 119,125 ****
                          !

                          Mills, D.L. Precision synchronization of computer network clocks. ACM Computer Communication Review 24, 2 (April 1994). 28-43. (PostScript). --- 120,126 ----

                            !
                          1. Mills, D.L. Precision synchronization of computer network clocks. ACM Computer Communication Review 24, 2 (April 1994). 28-43. (PostScript). *************** *** 152,165 ****
                              !

                            1. A subset of NTP has been defined suitable for use where some degradation in accuracy and reliability is acceptable, so that the entire suite of specified algorithms need not be implemented. This subset is defined in:
                                !

                                Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-1769, University of Delaware, March 1995, 14 pp. (ASCII). Major revision and update of: Ibid. Network Working --- 153,166 ----

                                  !
                                1. A subset of NTP has been defined suitable for use where some degradation in accuracy and reliability is acceptable, so that the entire suite of specified algorithms need not be implemented. This subset is defined in:
                                    !
                                  1. Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-1769, University of Delaware, March 1995, 14 pp. (ASCII). Major revision and update of: Ibid. Network Working *************** *** 174,180 ****
                                      !

                                      Mills, D.L. Measured performance of the Network Time Protocol in the Internet system. Network Working Group Report RFC-1128. University of Delaware, October 1989. --- 175,181 ----

                                        !
                                      1. Mills, D.L. Measured performance of the Network Time Protocol in the Internet system. Network Working Group Report RFC-1128. University of Delaware, October 1989. *************** *** 187,193 **** "ftp://ftp.udel.edu/pub/people/mills/reports/glory/gloryb.ps"> (Body: PostScript). !

                                        Mills, D.L. On the accuracy and stability of clocks synchronized by the Network Time Protocol in the Internet system. ACM Computer Communication Review 20, 1 (January 1990), 65-75. (PostScript). --- 188,194 ---- "ftp://ftp.udel.edu/pub/people/mills/reports/glory/gloryb.ps"> (Body: PostScript). !

                                      2. Mills, D.L. On the accuracy and stability of clocks synchronized by the Network Time Protocol in the Internet system. ACM Computer Communication Review 20, 1 (January 1990), 65-75. (PostScript). *************** *** 199,205 ****
                                          !

                                          Mills, D.L. On the chronology and metrology of computer network timescales and their application to the Network Time Protocol. ACM Computer Communications Review 21, 5 (October 1991), 8-17. (PostScript). --- 200,206 ----

                                            !
                                          1. Mills, D.L. On the chronology and metrology of computer network timescales and their application to the Network Time Protocol. ACM Computer Communications Review 21, 5 (October 1991), 8-17. (PostScript). *************** *** 213,219 ****
                                              !

                                              Mills, D.L. Modelling and analysis of computer network clocks. Electrical Engineering Department Report 92-5-2, University of Delaware, May 1992, 29 pp. (Abstract: --- 214,220 ----

                                                !
                                              1. Mills, D.L. Modelling and analysis of computer network clocks. Electrical Engineering Department Report 92-5-2, University of Delaware, May 1992, 29 pp. (Abstract: Only in .: biblio.html~ diff -r -c /home/windl/xntp3-5.86/html/build.html ./build.html *** /home/windl/xntp3-5.86/html/build.html Sun Aug 4 20:35:32 1996 --- ./build.html Wed Oct 2 22:14:39 1996 *************** *** 1,3 **** --- 1,4 ---- + Building and Installing the Distribution

                                                *************** *** 27,33 **** gcc compiler in this case). For a successful build, all of these tools should be accessible via the current path. !

                                                Configuration

                                                Use the configure command to perform an automatic configuration procedure. This procedure normally includes the debugging --- 28,34 ---- gcc compiler in this case). For a successful build, all of these tools should be accessible via the current path. !

                                                Configuration

                                                Use the configure command to perform an automatic configuration procedure. This procedure normally includes the debugging *************** *** 39,45 **** drivers to save space, see the Configuration Options page. !

                                                If your site supports multiple architecures and uses NFS to share files, you can use a single source tree to compile executables for all architectures. While running on a target architecture machine and with the distribution base directory active, create a subdirectory using a --- 40,46 ---- drivers to save space, see the Configuration Options page. !

                                                If your site supports multiple architectures and uses NFS to share files, you can use a single source tree to compile executables for all architectures. While running on a target architecture machine and with the distribution base directory active, create a subdirectory using a *************** *** 49,55 **** the ../configure command. The remaining steps are the same whether building in the base directory or in the subdirectory. !

                                                Compilation

                                                Use the make command to compile all source modules, construct the libraries and link the distribution. Expect few or no --- 50,56 ---- the ../configure command. The remaining steps are the same whether building in the base directory or in the subdirectory. !

                                                Compilation

                                                Use the make command to compile all source modules, construct the libraries and link the distribution. Expect few or no *************** *** 62,68 **** process is quite thorough, the Unix programming cultures of the various workstation makers still remain idiosyncratic. !

                                                Installation

                                                As root, use the make install command to install the binaries in the destination directory. You must of course have write permission on the install destination directory. This includes the --- 63,69 ---- process is quite thorough, the Unix programming cultures of the various workstation makers still remain idiosyncratic. !

                                                Installation

                                                As root, use the make install command to install the binaries in the destination directory. You must of course have write permission on the install destination directory. This includes the *************** *** 86,92 **** a NTP Subnet. A tutorial on debugging technique is in NTP Debugging Technique. If problems peculiar to the particular hardware and software environment are suspected, browse ! the Hints and Kinks page.

                                                Bug reports of a general nature can be sent to David Mills (mills@udel.edu). Bug reports of a specific nature on features --- 87,93 ---- a NTP Subnet. A tutorial on debugging technique is in NTP Debugging Technique. If problems peculiar to the particular hardware and software environment are suspected, browse ! the Hints and Kinks page.

                                                Bug reports of a general nature can be sent to David Mills (mills@udel.edu). Bug reports of a specific nature on features *************** *** 98,104 ****

                                                !

                                                make clean
                                                Cleans out object files, programs and temporary files.

                                                make distclean --- 99,105 ----
                                                !
                                                make clean
                                                Cleans out object files, programs and temporary files.

                                                make distclean Only in .: build.html~ diff -r -c /home/windl/xntp3-5.86/html/clockopt.html ./clockopt.html *** /home/windl/xntp3-5.86/html/clockopt.html Sun Aug 4 20:35:33 1996 --- ./clockopt.html Tue Oct 1 21:46:54 1996 *************** *** 1,3 **** --- 1,4 ---- + Reference Clock Options

                                                *************** *** 71,83 ****
                                                !

                                                server 127.127.t.u [ prefer ] [ mode int

                                                This command can be used to configure reference clocks in special ways. The options are interpreted as follows:
                                                !

                                                prefer
                                                Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the Mitigation --- 72,84 ----
                                                !
                                                server 127.127.t.u [ prefer ] [ mode int ]
                                                This command can be used to configure reference clocks in special ways. The options are interpreted as follows:
                                                !
                                                prefer
                                                Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the Mitigation *************** *** 103,109 ****
                                                !

                                                fudge 127.127.t.u [ time1 secs ] [ time2 secs ] [ stratum int ] [ refid string ] [ mode int ] [ flag1 0 | 1 ] [ flag2 0 | 1 ] [ flag3 0 | 1] [ flag4 0 | 1 ] --- 104,110 ----

                                                !
                                                fudge 127.127.t.u [ time1 secs ] [ time2 secs ] [ stratum int ] [ refid string ] [ mode int ] [ flag1 0 | 1 ] [ flag2 0 | 1 ] [ flag3 0 | 1] [ flag4 0 | 1 ] *************** *** 115,121 ****
                                                !

                                                time1 secs
                                                Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular --- 116,122 ----
                                                !
                                                time1 secs
                                                Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular *************** *** 167,170 ****
                                                !
                                                David L. Mills (mills@udel.edu)
                                                --- 168,171 ----
                                                !


                                                David L. Mills (mills@udel.edu)
                                                diff -r -c /home/windl/xntp3-5.86/html/config.html ./config.html *** /home/windl/xntp3-5.86/html/config.html Sun Aug 4 20:35:33 1996 --- ./config.html Wed Oct 2 22:18:54 1996 *************** *** 1,3 **** --- 1,4 ---- + Configuration Options

                                                *************** *** 17,24 ****

                                                Configuration options are specified as arguments to the configure script. Following is a summary of the current options: ! ! Usage: configure [options] [host] Options: [defaults in brackets after descriptions]

                                                --- 18,25 ----
                                                  

                                                Configuration options are specified as arguments to the configure script. Following is a summary of the current options: !

                                                ! Usage: configure [options] [host]
                                                Options: [defaults in brackets after descriptions]

                                                Only in .: config.html~
                                                diff -r -c /home/windl/xntp3-5.86/html/confopt.html ./confopt.html
                                                *** /home/windl/xntp3-5.86/html/confopt.html	Sun Aug  4 20:35:33 1996
                                                --- ./confopt.html	Tue Oct  1 21:49:12 1996
                                                ***************
                                                *** 1,3 ****
                                                --- 1,4 ----
                                                + 
                                                  
                                                  Configuration Options
                                                  

                                                *************** *** 8,14 ****
                                                !

                                                peer address [ key key ] [ version version ] [ prefer ] [ minpoll minpoll [ maxpoll maxpoll ]
                                                server address [ key key ] [ version --- 9,15 ----
                                                !
                                                peer address [ key key ] [ version version ] [ prefer ] [ minpoll minpoll [ maxpoll maxpoll ]
                                                server address [ key key ] [ version *************** *** 49,55 ****
                                                !

                                                key key
                                                All packets sent to the address are to include authentication fields encrypted using the specified key identifier, which is an unsigned 32 bit integer. The default is to not include an encryption --- 50,56 ----
                                                !
                                                key key
                                                All packets sent to the address are to include authentication fields encrypted using the specified key identifier, which is an unsigned 32 bit integer. The default is to not include an encryption *************** *** 132,138 **** "xntpdc.html">xntpdc utility program.
                                                !

                                                auth
                                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable. --- 133,139 ---- "xntpdc.html">xntpdc utility program.
                                                !
                                                auth
                                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable. diff -r -c /home/windl/xntp3-5.86/html/copyright.html ./copyright.html *** /home/windl/xntp3-5.86/html/copyright.html Fri Aug 23 18:55:26 1996 --- ./copyright.html Tue Oct 1 22:41:03 1996 *************** *** 1,3 **** --- 1,4 ---- + Copyright Notice

                                                *************** *** 30,42 ****

                                                ! The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.
                                                  !

                                                1. Mark Andrews <marka@syd.dms.csiro.au> Leitch atomic clock controller
                                                2. Viraj Bais <vbais@mailman1.intel.com> and Clayton Kirkwood --- 31,43 ----
                                                !

                                                The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.

                                                  !
                                                1. Mark Andrews <marka@syd.dms.csiro.au> Leitch atomic clock controller
                                                2. Viraj Bais <vbais@mailman1.intel.com> and Clayton Kirkwood *************** *** 124,129 **** --- 125,133 ----
                                                3. Paul A Vixie <vixie@vix.com> TrueTime GPS driver, generic TrueTime clock driver + +
                                                4. Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> Corrected and + validated HTML documents according to the HTML DTD
                                                diff -r -c /home/windl/xntp3-5.86/html/debug.html ./debug.html *** /home/windl/xntp3-5.86/html/debug.html Sun Aug 4 20:35:33 1996 --- ./debug.html Wed Oct 2 22:49:25 1996 *************** *** 1,3 **** --- 1,4 ---- + NTP Debugging Techniques

                                                *************** *** 32,38 ****

                                                In extreme cases with elusive bugs, the daemon can operate in two modes, depending on the presence of the -d command-line debug switch. If not present, the daemon detaches from the controlling ! terminal and proceeds autonomousldy. If one or more -d switches are present, the daemon does not detach and generates special output useful for debugging. In general, interpretation of this output requires reference to the sources. --- 33,39 ----

                                                In extreme cases with elusive bugs, the daemon can operate in two modes, depending on the presence of the -d command-line debug switch. If not present, the daemon detaches from the controlling ! terminal and proceeds autonomously. If one or more -d switches are present, the daemon does not detach and generates special output useful for debugging. In general, interpretation of this output requires reference to the sources. *************** *** 220,226 ****

                                                  !

                                                1. Verify the /etc/services file host machine is configured to accept UDP packets on the NTP port 123. NTP is specifically designed to use UDP and does not respond to TCP. --- 221,227 ----
                                                    !
                                                  1. Verify the /etc/services file host machine is configured to accept UDP packets on the NTP port 123. NTP is specifically designed to use UDP and does not respond to TCP. *************** *** 233,242 **** configuration file includes designated servers, something may be wrong in the network configuration of the xntpd host. If this counter does increment and packets are actually being sent to the network, but the ! recieved packets counter does not increment, something may be wrong in the network or the server may not be responding. !

                                                  2. If both the packets sent counter and received packets counter do increment, but the rec timestamp in the pe billboard shows a date in 1972, received packets are probably being discarded for some reason. There is a handy, undocumented --- 234,243 ---- configuration file includes designated servers, something may be wrong in the network configuration of the xntpd host. If this counter does increment and packets are actually being sent to the network, but the ! received packets counter does not increment, something may be wrong in the network or the server may not be responding. !

                                                  3. If both the packets sent counter and received packets counter do increment, but the rec timestamp in the pe billboard shows a date in 1972, received packets are probably being discarded for some reason. There is a handy, undocumented *************** *** 249,255 **** RFC-1305. A bit other than zero indicates the associated sanity check failed. !

                                                  4. If the org, rec and xmt timestamps in the pe billboard appear current, but the local clock is not set, as indicated by a stratum number less than 16 in the rv command without arguments, verify that valid clock --- 250,256 ---- RFC-1305. A bit other than zero indicates the associated sanity check failed. !

                                                  5. If the org, rec and xmt timestamps in the pe billboard appear current, but the local clock is not set, as indicated by a stratum number less than 16 in the rv command without arguments, verify that valid clock Only in .: debug.html~ diff -r -c /home/windl/xntp3-5.86/html/driver1.html ./driver1.html *** /home/windl/xntp3-5.86/html/driver1.html Sun Aug 4 20:35:33 1996 --- ./driver1.html Tue Oct 1 21:51:19 1996 *************** *** 1,3 **** --- 1,4 ---- + Undisciplined Local Clock

                                                    *************** *** 93,99 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 94,100 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver10.html ./driver10.html *** /home/windl/xntp3-5.86/html/driver10.html Sun Aug 4 20:35:33 1996 --- ./driver10.html Tue Oct 1 21:51:40 1996 *************** *** 1,3 **** --- 1,4 ---- + Austron 2200A/2201A GPS Receivers

                                                    *************** *** 52,58 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 53,59 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver11.html ./driver11.html *** /home/windl/xntp3-5.86/html/driver11.html Sun Aug 4 20:35:33 1996 --- ./driver11.html Tue Oct 1 21:53:01 1996 *************** *** 1,3 **** --- 1,4 ---- + Arbiter 1088A/B GPS Receiver

                                                    *************** *** 35,41 ****
                                                      <cr><lf>i yy ddd hh:mm:ss.000bbb
                                                      
                                                    ! on-time = 
                                                      i = synchronization flag (' ' = locked, '?' = unlocked)
                                                      yy = year of century
                                                      ddd = day of year
                                                    --- 36,42 ----
                                                      
                                                      <cr><lf>i yy ddd hh:mm:ss.000bbb
                                                      
                                                    ! on-time = <cr>
                                                      i = synchronization flag (' ' = locked, '?' = unlocked)
                                                      yy = year of century
                                                      ddd = day of year
                                                    ***************
                                                    *** 80,86 ****
                                                      ee = hardware errors
                                                      
                                                    ! A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself. --- 81,87 ---- ee = hardware errors
                                                    !

                                                    A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself. *************** *** 102,108 ****

                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0065. --- 103,109 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0065. diff -r -c /home/windl/xntp3-5.86/html/driver12.html ./driver12.html *** /home/windl/xntp3-5.86/html/driver12.html Sun Aug 4 20:35:33 1996 --- ./driver12.html Tue Oct 1 21:53:22 1996 *************** *** 1,3 **** --- 1,4 ---- + KSI/Odetics TPRO/S IRIG Interface

                                                    *************** *** 39,45 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .00037. --- 40,46 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .00037. diff -r -c /home/windl/xntp3-5.86/html/driver18.html ./driver18.html *** /home/windl/xntp3-5.86/html/driver18.html Sun Aug 4 20:35:34 1996 --- ./driver18.html Tue Oct 1 21:54:01 1996 *************** *** 1,3 **** --- 1,4 ---- + NIST Modem Time Service

                                                    *************** *** 197,203 ****

                                                    Fudge Factors

                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 198,204 ----

                                                    Fudge Factors

                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver18.html.orig ./driver18.html.orig *** /home/windl/xntp3-5.86/html/driver18.html.orig Sat Jul 20 01:18:14 1996 --- ./driver18.html.orig Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + NIST Modem Time Service

                                                    diff -r -c /home/windl/xntp3-5.86/html/driver18.html.rej ./driver18.html.rej *** /home/windl/xntp3-5.86/html/driver18.html.rej Thu Jul 25 19:07:29 1996 --- ./driver18.html.rej Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + *************** *** 64,79 **** that don't, fudge flag2 should be set to disable the feature. In this diff -r -c /home/windl/xntp3-5.86/html/driver19.html ./driver19.html *** /home/windl/xntp3-5.86/html/driver19.html Sun Aug 4 20:35:34 1996 --- ./driver19.html Tue Oct 1 21:54:18 1996 *************** *** 1,3 **** --- 1,4 ---- + Heath WWV/WWVH Receiver

                                                    *************** *** 68,74 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 69,75 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver2.html ./driver2.html *** /home/windl/xntp3-5.86/html/driver2.html Sun Aug 4 20:35:34 1996 --- ./driver2.html Tue Oct 1 21:54:35 1996 *************** *** 1,3 **** --- 1,4 ---- + Trak 8820 GPS Receiver

                                                    *************** *** 78,84 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 79,85 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver22.html ./driver22.html *** /home/windl/xntp3-5.86/html/driver22.html Sun Aug 4 20:35:34 1996 --- ./driver22.html Wed Oct 2 23:18:26 1996 *************** *** 1,3 **** --- 1,4 ---- + PPS Clock Discipline

                                                    *************** *** 67,76 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. This parameter can be used to compensate for ! the UART and OS delays. Allow about 247 us for uart delays at 38400 bps and about 1 ms for SunOS streams nonsense.

                                                    time2 time --- 68,77 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. This parameter can be used to compensate for ! the UART and OS delays. Allow about 247 us for UART delays at 38400 bps and about 1 ms for SunOS streams nonsense.

                                                    time2 time Only in .: driver22.html~ diff -r -c /home/windl/xntp3-5.86/html/driver23.html ./driver23.html *** /home/windl/xntp3-5.86/html/driver23.html Sun Aug 4 20:35:34 1996 --- ./driver23.html Tue Oct 1 21:55:42 1996 *************** *** 1,3 **** --- 1,4 ---- + PTB Modem Time Service

                                                    *************** *** 28,34 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 29,35 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver23.html.orig ./driver23.html.orig *** /home/windl/xntp3-5.86/html/driver23.html.orig Sat Jul 20 01:18:15 1996 --- ./driver23.html.orig Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + PTB Modem Time Service

                                                    diff -r -c /home/windl/xntp3-5.86/html/driver24.html ./driver24.html *** /home/windl/xntp3-5.86/html/driver24.html Sun Aug 4 20:35:34 1996 --- ./driver24.html Tue Oct 1 21:55:59 1996 *************** *** 1,3 **** --- 1,4 ---- + USNO Modem Time Service

                                                    *************** *** 28,34 ****
                                                    !

                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 29,35 ----
                                                    !
                                                    time1 time
                                                    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/driver26.html ./driver26.html *** /home/windl/xntp3-5.86/html/driver26.html Sun Aug 4 20:35:34 1996 --- ./driver26.html Wed Oct 2 23:21:57 1996 *************** *** 1,3 **** --- 1,4 ---- + Hewlett Packard 58503A GPS Receiver

                                                    *************** *** 26,32 ****

                                                    The driver uses the poll sequence :PTIME:TCODE? to get a response from the receiver. The receiver responds with a timecode string ! of ASCII printing characters, followed by a <><>, followed by a prompt string issued by the receiver, in the following format: --- 27,33 ----

                                                    The driver uses the poll sequence :PTIME:TCODE? to get a response from the receiver. The receiver responds with a timecode string ! of ASCII printing characters, followed by a <cr><lf>, followed by a prompt string issued by the receiver, in the following format: *************** *** 35,41 ****

    The driver processes the response at the <cr> and ! <lf><> and <lf>, so what the driver sees is the prompt from the previous poll, followed by this timecode. The prompt from the current poll is (usually) left unread until the next poll. So (except on the very first poll) the driver sees this: --- 36,42 ----

    The driver processes the response at the <cr> and ! <lf><cr> and <lf>, so what the driver sees is the prompt from the previous poll, followed by this timecode. The prompt from the current poll is (usually) left unread until the next poll. So (except on the very first poll) the driver sees this: *************** *** 47,53 ****

    The T is the on-time character, at 980 msec. before the next 1PPS edge. The # is the timecode format type. We look for format 2. Without any of the CLK or PPS stuff, then, the receiver buffer timestamp at the ! <>y is 24 characters later, which is about 25 msec. at 9600 bps, so the first approximation for fudge time1 is nominally -0.955 seconds. This number probably needs adjusting for each machine / OS type, so far: --- 48,54 ----

    The T is the on-time character, at 980 msec. before the next 1PPS edge. The # is the timecode format type. We look for format 2. Without any of the CLK or PPS stuff, then, the receiver buffer timestamp at the ! <cr>y is 24 characters later, which is about 25 msec. at 9600 bps, so the first approximation for fudge time1 is nominally -0.955 seconds. This number probably needs adjusting for each machine / OS type, so far: *************** *** 66,72 ****

    Fudge Factors

    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 67,73 ----

    Fudge Factors

    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Only in .: driver26.html~ diff -r -c /home/windl/xntp3-5.86/html/driver3.html ./driver3.html *** /home/windl/xntp3-5.86/html/driver3.html Sun Aug 4 20:35:34 1996 --- ./driver3.html Wed Oct 2 23:04:42 1996 *************** *** 1,3 **** --- 1,4 ---- + PSTI/Traconex 1020 WWV/WWVH Receiver

    *************** *** 20,30 **** actual experience suggests that 10 ms would be a conservative assumption. !

    The DIPswitches should be set for 9600 bps line speed, 24-hour day- of-year format and UTC time zone. Automatic correction for DST should be disabled. It is very important that the year be set correctly in the ! DIPswitches; otherwise, the day of year will be incorrect after 28 April ! of a normal or leap year. The propagation delay DIPswitches should be set according to the distance from the transmitter for both WWV and WWVH, as described in the instructions. While the delay can be set only to within 11 ms, the fudge time1 parameter can be used for vernier --- 21,31 ---- actual experience suggests that 10 ms would be a conservative assumption. !

    The DIP-switches should be set for 9600 bps line speed, 24-hour day- of-year format and UTC time zone. Automatic correction for DST should be disabled. It is very important that the year be set correctly in the ! DIP-switches; otherwise, the day of year will be incorrect after 28 April ! of a normal or leap year. The propagation delay DIP-switches should be set according to the distance from the transmitter for both WWV and WWVH, as described in the instructions. While the delay can be set only to within 11 ms, the fudge time1 parameter can be used for vernier *************** *** 35,44 **** concatenated by the driver, in the following format:

    ! ahh:mm:ss.fffs yy/dd/mm/ddd<cr>
      frdzycchhSSFTttttuuxx<cr>
      
    ! on-time = first 
      hh:mm:ss.fff = hours, minutes, seconds, milliseconds
      a = AM/PM indicator (' ' for 24-hour mode)
      yy = year (from DIPswitches)
    --- 36,45 ----
      concatenated by the driver, in the following format:
      
      
    ! ahh:mm:ss.fffs<cr> yy/dd/mm/ddd<cr>
      frdzycchhSSFTttttuuxx<cr>
      
    ! on-time = first <cr>
      hh:mm:ss.fff = hours, minutes, seconds, milliseconds
      a = AM/PM indicator (' ' for 24-hour mode)
      yy = year (from DIPswitches)
    ***************
    *** 73,79 ****
      
      
    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 74,80 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Only in .: driver3.html~ diff -r -c /home/windl/xntp3-5.86/html/driver4.html ./driver4.html *** /home/windl/xntp3-5.86/html/driver4.html Sun Aug 4 20:35:34 1996 --- ./driver4.html Tue Oct 1 21:58:05 1996 *************** *** 1,3 **** --- 1,4 ---- + Spectracom 8170 and Netclock/2 WWVB Receivers

    *************** *** 94,100 ****
    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0048. --- 95,101 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0048. diff -r -c /home/windl/xntp3-5.86/html/driver5.html ./driver5.html *** /home/windl/xntp3-5.86/html/driver5.html Sun Aug 4 20:35:34 1996 --- ./driver5.html Wed Oct 2 23:06:11 1996 *************** *** 1,3 **** --- 1,4 ---- + TrueTime GPS/GOES/OMEGA Receivers

    *************** *** 19,25 **** timing receivers, including 468-DC MK III GOES Synchronized Clock, GPS- DC MK III and GPS/TM-TMD GPS Synchronized Clock, XL-DC (a 151-602-210, reported by the driver as a GPS/TM-TMD), GPS-800 TCU (an 805-957 with ! the RS232 Talker/Listener module), OM-DC OMEGA Syncrhonized Clock, and very likely others in the same model family that use the same timecode formats. --- 20,26 ---- timing receivers, including 468-DC MK III GOES Synchronized Clock, GPS- DC MK III and GPS/TM-TMD GPS Synchronized Clock, XL-DC (a 151-602-210, reported by the driver as a GPS/TM-TMD), GPS-800 TCU (an 805-957 with ! the RS232 Talker/Listener module), OM-DC OMEGA Synchronized Clock, and very likely others in the same model family that use the same timecode formats. *************** *** 80,86 ****

    This corrects the 4 milliseconds advance and 8 milliseconds retard needed. The software will ask the clock which satellite it sees. !

    The PCL720 from PC Labs has an Intel 8253 lookalike, as well as a bunch of TTL input and output pins, all brought out to the back panel. If you wire a PPS signal (such as the TTL PPS coming out of a GOES or other Kinemetrics/Truetime clock) to the 8253's GATE0, and then also --- 81,87 ----

    This corrects the 4 milliseconds advance and 8 milliseconds retard needed. The software will ask the clock which satellite it sees. !

    The PCL720 from PC Labs has an Intel 8253 look-alike, as well as a bunch of TTL input and output pins, all brought out to the back panel. If you wire a PPS signal (such as the TTL PPS coming out of a GOES or other Kinemetrics/Truetime clock) to the 8253's GATE0, and then also *************** *** 99,105 ****

    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, to be used for the West satellite, with default 0.0. --- 100,106 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, to be used for the West satellite, with default 0.0. Only in .: driver5.html~ diff -r -c /home/windl/xntp3-5.86/html/driver6.html ./driver6.html *** /home/windl/xntp3-5.86/html/driver6.html Sun Aug 4 20:35:34 1996 --- ./driver6.html Wed Oct 2 23:08:27 1996 *************** *** 1,3 **** --- 1,4 ---- + IRIG Audio Decoder

    *************** *** 44,50 ****

    where stamp represents a timestamp at the zero crossing of the index marker at the second's epoch, bits is a 13-octet, zero-padded binary- coded string representing code elements 1 through 100 in the IRIG-B code ! format, and status is a status bute, The decoded timestamp is a 13- octet, null-terminated ASCII string ddd hh:mm:ss*, where ddd is the day of year, hh:mm:ss the time of day and * is a status indicator, with ' ' indicating valid time and '?' indicating --- 45,51 ----

    where stamp represents a timestamp at the zero crossing of the index marker at the second's epoch, bits is a 13-octet, zero-padded binary- coded string representing code elements 1 through 100 in the IRIG-B code ! format, and status is a status byte, The decoded timestamp is a 13- octet, null-terminated ASCII string ddd hh:mm:ss*, where ddd is the day of year, hh:mm:ss the time of day and * is a status indicator, with ' ' indicating valid time and '?' indicating *************** *** 96,102 ****

    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 97,103 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Only in .: driver6.html~ diff -r -c /home/windl/xntp3-5.86/html/driver7.html ./driver7.html *** /home/windl/xntp3-5.86/html/driver7.html Sun Aug 4 20:35:35 1996 --- ./driver7.html Tue Oct 1 21:58:43 1996 *************** *** 1,3 **** --- 1,4 ---- + Scratchbuilt CHU Receiver

    *************** *** 61,67 ****
    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

    time2 time --- 62,68 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

    time2 time diff -r -c /home/windl/xntp3-5.86/html/driver8.html ./driver8.html *** /home/windl/xntp3-5.86/html/driver8.html Sun Aug 4 20:35:35 1996 --- ./driver8.html Wed Oct 2 23:11:39 1996 *************** *** 1,3 **** --- 1,4 ---- + Generic Reference Driver

    *************** *** 56,62 **** actual PPS signal is delayed for some reason. The flag0 enables input filtering. This a median filter with continuous sampling. The flag1 selects averaging of the samples remaining after the filtering. Leap ! secondhandling is controlled with the flag2. When set a leap second will be deleted on receipt of a leap second indication from the receiver. Otherwise the leap second will be added, (which is the default). --- 57,63 ---- actual PPS signal is delayed for some reason. The flag0 enables input filtering. This a median filter with continuous sampling. The flag1 selects averaging of the samples remaining after the filtering. Leap ! second-handling is controlled with the flag2. When set a leap second will be deleted on receipt of a leap second indication from the receiver. Otherwise the leap second will be added, (which is the default). *************** *** 127,133 **** time code. (The edge sensitivity can be selected - look into the appropriate kernel/parsestreams.c for details). Meinberg receivers can be connected by feeding the PPS pulse of the receiver via a 1488 level ! converter to Pin 8 (CD) of a Sun serial zs\-port.

    There exists a special firmware release for the PZF535 Meinberg receivers. This release (PZFUERL 4.6 (or higher - The UERL is important)) is absolutely recommended for XNTP use, as it provides LEAP --- 128,134 ---- time code. (The edge sensitivity can be selected - look into the appropriate kernel/parsestreams.c for details). Meinberg receivers can be connected by feeding the PPS pulse of the receiver via a 1488 level ! converter to Pin 8 (CD) of a Sun serial zs-port.

    There exists a special firmware release for the PZF535 Meinberg receivers. This release (PZFUERL 4.6 (or higher - The UERL is important)) is absolutely recommended for XNTP use, as it provides LEAP *************** *** 157,163 ****

    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 158,164 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Only in .: driver8.html~ diff -r -c /home/windl/xntp3-5.86/html/driver9.html ./driver9.html *** /home/windl/xntp3-5.86/html/driver9.html Sun Aug 4 20:35:35 1996 --- ./driver9.html Tue Oct 1 21:59:14 1996 *************** *** 1,3 **** --- 1,4 ---- + Magnavox MX4200 GPS Receiver

    *************** *** 32,38 ****
    !

    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. --- 33,39 ----
    !
    time1 time
    Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. diff -r -c /home/windl/xntp3-5.86/html/gadget.html ./gadget.html *** /home/windl/xntp3-5.86/html/gadget.html Sun Aug 4 20:35:35 1996 --- ./gadget.html Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + Gadget Box PPS Level Converter and CHU Modem

    diff -r -c /home/windl/xntp3-5.86/html/hints.html ./hints.html *** /home/windl/xntp3-5.86/html/hints.html Sun Aug 4 20:35:35 1996 --- ./hints.html Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + Hints and Kinks

    diff -r -c /home/windl/xntp3-5.86/html/howto.html ./howto.html *** /home/windl/xntp3-5.86/html/howto.html Sun Aug 4 20:35:35 1996 --- ./howto.html Tue Oct 1 22:00:55 1996 *************** *** 1,3 **** --- 1,4 ---- + How to Write a Reference Clock Driver

    *************** *** 96,102 ****
    !

    ./include/ntp.h
    The reference clock type defines are used in many places. Each driver is assigned a unique type number. Unused numbers are clearly marked in the list. A unique REFCLK_xxxx --- 97,103 ----
    !
    ./include/ntp.h
    The reference clock type defines are used in many places. Each driver is assigned a unique type number. Unused numbers are clearly marked in the list. A unique REFCLK_xxxx *************** *** 184,190 ****
    !

    refclock_newpeer - initialize and start a reference clock
    This routine allocates and initializes the interface structure which supports a reference clock in the form of an ordinary NTP peer. A --- 185,191 ----
    !
    refclock_newpeer - initialize and start a reference clock
    This routine allocates and initializes the interface structure which supports a reference clock in the form of an ordinary NTP peer. A diff -r -c /home/windl/xntp3-5.86/html/index.html ./index.html *** /home/windl/xntp3-5.86/html/index.html Sun Aug 4 20:35:35 1996 --- ./index.html Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + The Network Time Protocol (NTP) Distribution

    diff -r -c /home/windl/xntp3-5.86/html/irig.html ./irig.html *** /home/windl/xntp3-5.86/html/irig.html Sun Aug 4 20:35:35 1996 --- ./irig.html Tue Oct 1 22:03:42 1996 *************** *** 1,3 **** --- 1,4 ---- + IRIG Support Using Sun SPARC Audio

    *************** *** 109,115 ****
    !

    audio_IRIG_OPEN
    This command activates the IRIG receiver. The audio driver must be opened with this command before other commands can be issued. The argument is ignored. When the IRIG receiver is initialized, all internal --- 110,116 ----
    !
    audio_IRIG_OPEN
    This command activates the IRIG receiver. The audio driver must be opened with this command before other commands can be issued. The argument is ignored. When the IRIG receiver is initialized, all internal *************** *** 184,190 ****
    !

    audio_IRIG_BADSIGNAL
    The signal amplitude is outside tolerance limits, either in amplitude or modulation depth. The indicated time may or may not be in error. If the signal is too high, it may be clipped by the codec, so --- 185,191 ----
    !
    audio_IRIG_BADSIGNAL
    The signal amplitude is outside tolerance limits, either in amplitude or modulation depth. The indicated time may or may not be in error. If the signal is too high, it may be clipped by the codec, so *************** *** 245,253 **** Audio_fd = open("/dev/audio", O_RDONLY); ioctl(Audio_fd, AUDIO_IRIG_OPEN, NULL); ! ioctl(Audio_fd, AUDIO_IRIG_SETFORMAT,&format); while (condition) ! read(Audio_fd, &it, sizeof(it); printf("%s\n", it.time); ioctl(Audio_fd, AUDIO_IRIG_CLOSE, NULL); close(Audio_fd); --- 246,254 ---- Audio_fd = open("/dev/audio", O_RDONLY); ioctl(Audio_fd, AUDIO_IRIG_OPEN, NULL); ! ioctl(Audio_fd, AUDIO_IRIG_SETFORMAT,&format); while (condition) ! read(Audio_fd, &it, sizeof(it); printf("%s\n", it.time); ioctl(Audio_fd, AUDIO_IRIG_CLOSE, NULL); close(Audio_fd); *************** *** 298,305 **** be determined by actual measurement. A convenient way of doing this is to configure the ppsclock streams module. This module can be built from the ppsclock.tar.Z distribution. It can be used to adjust time1 until the PPS signal and IRIG signal both show the same offset. The ppsclock streams module is described in the Line Disciplines and Streams Drivers page. --- 299,306 ---- be determined by actual measurement. A convenient way of doing this is to configure the ppsclock streams module. This module can be built from the ppsclock.tar.Z ! distribution. It can be used to adjust time1 until the PPS signal and IRIG signal both show the same offset. The ppsclock streams module is described in the Line Disciplines and Streams Drivers page. diff -r -c /home/windl/xntp3-5.86/html/kern.html ./kern.html *** /home/windl/xntp3-5.86/html/kern.html Sun Aug 4 20:35:35 1996 --- ./kern.html Tue Oct 1 20:34:04 1996 *************** *** 1,3 **** --- 1,4 ---- + A Kernel Model for Precision Timekeeping

    diff -r -c /home/windl/xntp3-5.86/html/kernpps.html ./kernpps.html *** /home/windl/xntp3-5.86/html/kernpps.html Sun Aug 4 20:35:35 1996 --- ./kernpps.html Tue Oct 1 20:34:05 1996 *************** *** 1,3 **** --- 1,4 ---- + A Kernel Programming Interface for Precision Time Signals Network Performance Evaluation diff -r -c /home/windl/xntp3-5.86/html/ldisc.html ./ldisc.html *** /home/windl/xntp3-5.86/html/ldisc.html Sun Aug 4 20:35:36 1996 --- ./ldisc.html Tue Oct 1 22:05:51 1996 *************** *** 1,3 **** --- 1,4 ---- + <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN"> <html><head><title> Line Disciplines and Streams Modules

    *************** *** 35,41 ****
    !

    tty_clk
    This routine intercepts characters received from the serial port and passes unchanged all except a set of designated characters to the generic serial port discipline. For each of the exception characters, --- 36,42 ----
    !
    tty_clk
    This routine intercepts characters received from the serial port and passes unchanged all except a set of designated characters to the generic serial port discipline. For each of the exception characters, *************** *** 133,139 **** };

    ! The ppsclock module is pushed on the streams stack of the serial port connected to the PPS signal. The port must be configured for local operation, rather than remote (modem) operation. At each positive-going edge of the DCD signal, the routine latches the current local timestamp --- 134,140 ---- };
    !

    The ppsclock module is pushed on the streams stack of the serial port connected to the PPS signal. The port must be configured for local operation, rather than remote (modem) operation. At each positive-going edge of the DCD signal, the routine latches the current local timestamp diff -r -c /home/windl/xntp3-5.86/html/md5cert.html ./md5cert.html *** /home/windl/xntp3-5.86/html/md5cert.html Sun Aug 4 20:35:36 1996 --- ./md5cert.html Tue Oct 1 22:06:49 1996 *************** *** 1,5 **** ! <code>md5</code> - generate message digest

    md5 - generate message digest


    --- 1,6 ---- + ! md5 - generate message digest

    md5 - generate message digest


    *************** *** 18,24 ****
    !

    -0123456789
    Select algorithm from the following list
    -0 null
    -1 MD5 --- 19,25 ----
    !
    -0123456789
    Select algorithm from the following list
    -0 null
    -1 MD5 diff -r -c /home/windl/xntp3-5.86/html/measure.html ./measure.html *** /home/windl/xntp3-5.86/html/measure.html Sun Aug 4 20:35:36 1996 --- ./measure.html Tue Oct 1 20:34:05 1996 *************** *** 1,3 **** --- 1,4 ---- + Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation diff -r -c /home/windl/xntp3-5.86/html/miscopt.html ./miscopt.html *** /home/windl/xntp3-5.86/html/miscopt.html Sun Aug 4 20:35:36 1996 --- ./miscopt.html Tue Oct 1 22:07:30 1996 *************** *** 1,3 **** --- 1,4 ---- + <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN"> <html><head><title> Miscellaneous Options

    *************** *** 8,14 ****
    !

    broadcastdelay seconds
    The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. Ordinarily, this is done automatically by the initial protocol exchanges --- 9,15 ----
    !
    broadcastdelay seconds
    The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. Ordinarily, this is done automatically by the initial protocol exchanges *************** *** 107,113 ****
    !

    00
    The daemon passes the leap bits of its synchronization source (usual mode of operation). --- 108,114 ----
    !
    00
    The daemon passes the leap bits of its synchronization source (usual mode of operation). diff -r -c /home/windl/xntp3-5.86/html/monopt.html ./monopt.html *** /home/windl/xntp3-5.86/html/monopt.html Sun Aug 4 20:35:36 1996 --- ./monopt.html Tue Oct 1 22:07:57 1996 *************** *** 1,3 **** --- 1,4 ---- + Monitoring Options

    *************** *** 19,25 ****
    !

    statistics name [ ... ]
    Enables writing of statistics records. Currently, three kinds of name statistics are supported. --- 20,26 ----
    !
    statistics name [ ... ]
    Enables writing of statistics records. Currently, three kinds of name statistics are supported. *************** *** 96,102 ****
    !

    prefix
    This is a constant filename path. It is not subject to modifications via the filegen option. It is defined by the server, usually specified as a compile-time constant. It may, however, be --- 97,103 ----
    !
    prefix
    This is a constant filename path. It is not subject to modifications via the filegen option. It is defined by the server, usually specified as a compile-time constant. It may, however, be *************** *** 124,130 ****
    !

    none
    The file set is actually a single plain file.

    pid --- 125,131 ----
    !
    none
    The file set is actually a single plain file.

    pid diff -r -c /home/windl/xntp3-5.86/html/notes.html ./notes.html *** /home/windl/xntp3-5.86/html/notes.html Sun Aug 4 20:35:37 1996 --- ./notes.html Wed Oct 2 22:34:19 1996 *************** *** 1,3 **** --- 1,4 ---- + Notes on Configuring NTP and Setting up a NTP Subnet

    *************** *** 197,203 **** have no time to provide and which don't retain state about associations over the longer term. !

    Where the requirements in accuracy and reliablity are modest, clients can be configured to use broadcast and/or multicast modes. These modes are not normally utilized by servers with dependent clients. The advantage of these modes is that clients do not need to be configured --- 198,204 ---- have no time to provide and which don't retain state about associations over the longer term. !

    Where the requirements in accuracy and reliability are modest, clients can be configured to use broadcast and/or multicast modes. These modes are not normally utilized by servers with dependent clients. The advantage of these modes is that clients do not need to be configured *************** *** 210,216 **** present no way to select which of possibly many multicast servers will be used, since all operate on the same group address. !

    Where the maximum accuracy and reliablity provided by NTP are needed, clients and servers operate in either client/server or symmetric modes. Symmetric modes are most often used between two or more servers operating as a mutually redundant group. In these modes, the servers in --- 211,217 ---- present no way to select which of possibly many multicast servers will be used, since all operate on the same group address. !

    Where the maximum accuracy and reliability provided by NTP are needed, clients and servers operate in either client/server or symmetric modes. Symmetric modes are most often used between two or more servers operating as a mutually redundant group. In these modes, the servers in *************** *** 381,387 ****

      !

    • Don't synchronize a local time server to another peer at the same stratum, unless the latter is receiving time from lower stratum sources the former doesn't talk to directly. This minimizes the occurrence of common points of failure, but does not eliminate them in cases where the --- 382,388 ----
        !
      • Don't synchronize a local time server to another peer at the same stratum, unless the latter is receiving time from lower stratum sources the former doesn't talk to directly. This minimizes the occurrence of common points of failure, but does not eliminate them in cases where the *************** *** 1031,1037 ****

        Provisions for Leap Seconds and Accuracy Metrics

        ! xntpd understands leap seconds and will attempt to take appropriate action when one occurs. In principle, every host running xntpd will insert a leap second in the local timescale in precise synchronization with UTC. This requires that the leap-warning bits be --- 1032,1038 ----

        Provisions for Leap Seconds and Accuracy Metrics

        !

        xntpd understands leap seconds and will attempt to take appropriate action when one occurs. In principle, every host running xntpd will insert a leap second in the local timescale in precise synchronization with UTC. This requires that the leap-warning bits be Only in .: notes.html~ diff -r -c /home/windl/xntp3-5.86/html/ntpdate.html ./ntpdate.html *** /home/windl/xntp3-5.86/html/ntpdate.html Sun Aug 4 20:35:38 1996 --- ./ntpdate.html Tue Oct 1 22:09:19 1996 *************** *** 1,5 **** ! <code>ntpdate</code> - set the date and time via NTP

        ntpdate - set the date and time via NTP


        --- 1,6 ---- + ! ntpdate - set the date and time via NTP

        ntpdate - set the date and time via NTP


        *************** *** 52,58 ****
        !

        -a key
        Enable the authentication function and specify the key identifier to be used for authentication as the argument keyntpdate. The keys and key identifiers must match --- 53,59 ----
        !
        -a key
        Enable the authentication function and specify the key identifier to be used for authentication as the argument keyntpdate. The keys and key identifiers must match diff -r -c /home/windl/xntp3-5.86/html/ntpq.html ./ntpq.html *** /home/windl/xntp3-5.86/html/ntpq.html Sun Aug 4 20:35:38 1996 --- ./ntpq.html Tue Oct 1 22:11:01 1996 *************** *** 1,12 **** ! <code>ntpq</code> - standard NTP query program

        ntpq - standard NTP query program


        Synopsis

        ! ntpq [ -inp ] [ -c command ] [ host ] [ ... ]

        Description

        ntpq is used to query NTP servers which implement the --- 1,13 ---- + ! ntpq - standard NTP query program

        ntpq - standard NTP query program


        Synopsis

        !

        ntpq [ -inp ] [ -c command ] [ host ] [ ... ]

        Description

        ntpq is used to query NTP servers which implement the *************** *** 44,50 ****

        !

        -c
        The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given. --- 45,51 ----
        !
        -c
        The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given. *************** *** 78,84 ****
        !

        ? [ command_keyword ]
        helpl [ command_keyword ]
        A "?" by itself will print a list of all the command keywords known to this incarnation of ntpq. A --- 79,85 ----
        !
        ? [ command_keyword ]
        helpl [ command_keyword ]
        A "?" by itself will print a list of all the command keywords known to this incarnation of ntpq. A *************** *** 202,208 **** ntpq. The index is then of use when dealing with stupid servers which use association identifiers which are hard for humans to type, in that for any subsequent commands which require an association ! identifier as an argument, the form &index may be used as an alternative.

        clockvar [ assocID ] [ variable_name [ = --- 203,209 ---- ntpq. The index is then of use when dealing with stupid servers which use association identifiers which are hard for humans to type, in that for any subsequent commands which require an association ! identifier as an argument, the form &index may be used as an alternative.

        clockvar [ assocID ] [ variable_name [ = diff -r -c /home/windl/xntp3-5.86/html/ntptime.html ./ntptime.html *** /home/windl/xntp3-5.86/html/ntptime.html Sun Aug 4 20:35:38 1996 --- ./ntptime.html Tue Oct 1 22:11:30 1996 *************** *** 1,5 **** ! <code>ntptime</code> - read kernel time variables

        ntptime - read kernel time variables


        --- 1,6 ---- + ! ntptime - read kernel time variables

        ntptime - read kernel time variables


        *************** *** 23,29 ****
        !

        -c
        Display the execution time of ntptime itself.

        -e est_error --- 24,30 ----
        !
        -c
        Display the execution time of ntptime itself.

        -e est_error diff -r -c /home/windl/xntp3-5.86/html/ntptrace.html ./ntptrace.html *** /home/windl/xntp3-5.86/html/ntptrace.html Sun Aug 4 20:35:38 1996 --- ./ntptrace.html Tue Oct 1 22:11:58 1996 *************** *** 1,5 **** ! <code>ntptrace</code> - trace a chain of NTP servers back to the primary source

        ntptrace - trace a chain of NTP servers back to the primary --- 1,6 ---- + ! ntptrace - trace a chain of NTP servers back to the primary source

        ntptrace - trace a chain of NTP servers back to the primary *************** *** 41,47 ****
        !

        -d
        Turns on some debugging output.

        -n --- 42,48 ----
        !
        -d
        Turns on some debugging output.

        -n diff -r -c /home/windl/xntp3-5.86/html/patches.html ./patches.html *** /home/windl/xntp3-5.86/html/patches.html Sun Aug 4 20:35:38 1996 --- ./patches.html Wed Oct 2 22:53:40 1996 *************** *** 1,3 **** --- 1,4 ---- + Patching Procedures

        *************** *** 6,18 ****

        A distribution so widely used as this one eventually develops numerous barnacles as the result of porting ! to new systems, idosyncratic new features and just plain bugs. In order to help keep order and make maintenance bearable, we ask that proposed changes to the distribution be submitted in the following form.

          !

        1. Please submit patches to David L. Mills (mills@udel.edu) in the form of context-diffs (diff - c). Yes, we know there are newer, more sophisticated schemes, but --- 7,19 ----

          A distribution so widely used as this one eventually develops numerous barnacles as the result of porting ! to new systems, idiosyncratic new features and just plain bugs. In order to help keep order and make maintenance bearable, we ask that proposed changes to the distribution be submitted in the following form.

            !
          1. Please submit patches to David L. Mills (mills@udel.edu) in the form of context-diffs (diff - c). Yes, we know there are newer, more sophisticated schemes, but Only in .: patches.html~ diff -r -c /home/windl/xntp3-5.86/html/porting.html ./porting.html *** /home/windl/xntp3-5.86/html/porting.html Sun Aug 4 20:35:38 1996 --- ./porting.html Tue Oct 1 22:12:30 1996 *************** *** 1,3 **** --- 1,4 ---- + Porting Hints

            *************** *** 21,27 ****
              !

            1. If you use select then include "ntp_select.h". select is not standard, since it is very system dependent as to where it is defined. The logic to include the right system dependent include file is in --- 22,28 ----
                !
              1. If you use select then include "ntp_select.h". select is not standard, since it is very system dependent as to where it is defined. The logic to include the right system dependent include file is in diff -r -c /home/windl/xntp3-5.86/html/pps.html ./pps.html *** /home/windl/xntp3-5.86/html/pps.html Sun Aug 4 20:35:38 1996 --- ./pps.html Tue Oct 1 22:13:03 1996 *************** *** 1,3 **** --- 1,4 ---- + Pulse-per-second (PPS) Signal Interfacing

                *************** *** 28,35 **** and connecting to the data carrier detect (DCD) lead of a serial port. The optional ppsclock streams module captures a timestamp upon transition of the DCD signal. This module can be built from the ppsclock.tar.Z distribution. The driver reads the latest timestamp with a designated ioctl() system call to determine the time of arrival of the PPS pulse to within a few tens of microseconds. In order to use the kernel PPS signal, the xntp3 distribution must --- 29,36 ---- and connecting to the data carrier detect (DCD) lead of a serial port. The optional ppsclock streams module captures a timestamp upon transition of the DCD signal. This module can be built from the ppsclock.tar.Z ! distribution. The driver reads the latest timestamp with a designated ioctl() system call to determine the time of arrival of the PPS pulse to within a few tens of microseconds. In order to use the kernel PPS signal, the xntp3 distribution must diff -r -c /home/windl/xntp3-5.86/html/prefer.html ./prefer.html *** /home/windl/xntp3-5.86/html/prefer.html Sun Aug 4 20:35:38 1996 --- ./prefer.html Tue Oct 1 22:14:00 1996 *************** *** 1,5 **** ! Mitigation Rules and the <code>prefer</code> Keyword

                Mitigation Rules and the prefer Keyword


                --- 1,6 ---- + ! Mitigation Rules and the ``prefer'' Keyword

                Mitigation Rules and the prefer Keyword


                *************** *** 106,112 ****
                  !

                1. The prefer peer is designated using the prefer keyword with the server or peer commands. All other things being equal, this peer will be selected for synchronization over all other survivors of the clock selection procedures. --- 107,113 ----
                    !
                  1. The prefer peer is designated using the prefer keyword with the server or peer commands. All other things being equal, this peer will be selected for synchronization over all other survivors of the clock selection procedures. *************** *** 209,215 ****
                      !

                    1. If there is a prefer peer and it is the local-clock peer or the modem peer; or, if there is a prefer peer and the kernel time discipline is active, choose the prefer peer as the system peer and its offset as the system clock offset. If the prefer peer is the local-clock peer, an --- 210,216 ----
                        !
                      1. If there is a prefer peer and it is the local-clock peer or the modem peer; or, if there is a prefer peer and the kernel time discipline is active, choose the prefer peer as the system peer and its offset as the system clock offset. If the prefer peer is the local-clock peer, an diff -r -c /home/windl/xntp3-5.86/html/rdebug.html ./rdebug.html *** /home/windl/xntp3-5.86/html/rdebug.html Sun Aug 4 20:35:38 1996 --- ./rdebug.html Tue Oct 1 20:34:05 1996 *************** *** 1,3 **** --- 1,4 ---- + Debugging Hints for Reference Clock Drivers

                        diff -r -c /home/windl/xntp3-5.86/html/refclock.html ./refclock.html *** /home/windl/xntp3-5.86/html/refclock.html Sun Aug 4 20:35:38 1996 --- ./refclock.html Tue Oct 1 20:34:05 1996 *************** *** 1,3 **** --- 1,4 ---- + Reference Clock Drivers

                        diff -r -c /home/windl/xntp3-5.86/html/release.html ./release.html *** /home/windl/xntp3-5.86/html/release.html Sun Aug 4 20:35:39 1996 --- ./release.html Wed Oct 2 22:24:14 1996 *************** *** 1,3 **** --- 1,4 ---- + Release Notes

                        *************** *** 9,15 ****
                          !

                        1. The automatic build procedure has been replaced with GNU autoconfigure. This should make porting to nonstandard machines and operating systems much easier and should simplify the maintenance for multi-architecture sites. See the ./WHERE-TO- --- 10,16 ----
                            !
                          1. The automatic build procedure has been replaced with GNU autoconfigure. This should make porting to nonstandard machines and operating systems much easier and should simplify the maintenance for multi-architecture sites. See the ./WHERE-TO- *************** *** 22,28 **** Receiver.

                          2. The Windows NT build procedure is changed. See the ! ./util/wininstall directory for further information.

                          3. A clock driver (type 11) is included for the Arbiter 1088A/B GPS Receiver. --- 23,29 ---- Receiver.

                          4. The Windows NT build procedure is changed. See the ! ./util/wininstall directory for further information.

                          5. A clock driver (type 11) is included for the Arbiter 1088A/B GPS Receiver. *************** *** 47,53 ****
                              !

                            1. Please note the scripts for configuring radio clock drivers do not work. See the building and installing documentation for specific information. --- 48,54 ----
                                !
                              1. Please note the scripts for configuring radio clock drivers do not work. See the building and installing documentation for specific information. *************** *** 56,78 ****

                              2. The automatic build procedure has been improved to !
                                !

                              3. support the line disciplines, streams modules and precision time kernel modifications. These are controlled by the presence of certain system-dependent header files in the /usr/include/sys directory. !

                              4. include by default all reference clock drivers known to work with each combination of hardware and operating system. (The particular defaults are specified in the ../machines files for each machine.) !

                              5. activate precision time kernel modifications by default if detected by the build procedure. (Previous versions required an undocumented addition to the ntp.drift file in order to activate these modifications.) !
                              6. Three TrueTime reference clock drivers, which did slightly different things with each model, have been replaced with one driver --- 57,79 ----

                              7. The automatic build procedure has been improved to !
                                  !
                                • support the line disciplines, streams modules and precision time kernel modifications. These are controlled by the presence of certain system-dependent header files in the /usr/include/sys directory. !
                                • include by default all reference clock drivers known to work with each combination of hardware and operating system. (The particular defaults are specified in the ../machines files for each machine.) !
                                • activate precision time kernel modifications by default if detected by the build procedure. (Previous versions required an undocumented addition to the ntp.drift file in order to activate these modifications.) !

                              8. Three TrueTime reference clock drivers, which did slightly different things with each model, have been replaced with one driver *************** *** 172,177 **** ao: Alexandre Oliva <oliva@dcc.unicamp.br> ras: Ray Schnitzler <schnitz@unipress.com> uw: Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> ! </pre>
                                David L. Mills (mills@udel.edu)
                                --- 173,178 ---- ao: Alexandre Oliva <oliva@dcc.unicamp.br> ras: Ray Schnitzler <schnitz@unipress.com> uw: Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> !
                                David L. Mills (mills@udel.edu)
                                Only in .: release.html~ diff -r -c /home/windl/xntp3-5.86/html/tickadj.html ./tickadj.html *** /home/windl/xntp3-5.86/html/tickadj.html Sun Aug 4 20:35:39 1996 --- ./tickadj.html Tue Oct 1 22:19:00 1996 *************** *** 1,5 **** ! <code>tickadj</code> - set time-related kernel variables

                                tickadj - set time-related kernel variables


                                --- 1,6 ---- + ! tickadj - set time-related kernel variables

                                tickadj - set time-related kernel variables


                                *************** *** 41,47 ****
                                !

                                -a tickadj
                                Set the kernel variable tickadj to the value tickadj specified. --- 42,48 ----
                                !
                                -a tickadj
                                Set the kernel variable tickadj to the value tickadj specified. diff -r -c /home/windl/xntp3-5.86/html/xntpd.html ./xntpd.html *** /home/windl/xntp3-5.86/html/xntpd.html Sun Aug 4 20:35:39 1996 --- ./xntpd.html Tue Oct 1 22:19:40 1996 *************** *** 1,5 **** ! <code>xntpd</code> - Network Time Protocol (NTP) daemon

                                xntpd - Network Time Protocol (NTP) daemon


                                --- 1,6 ---- + ! xntpd - Network Time Protocol (NTP) daemon

                                xntpd - Network Time Protocol (NTP) daemon


                                *************** *** 50,56 ****
                                !

                                -a
                                Enable authentication mode. The default is disable.

                                -b --- 51,57 ----
                                !
                                -a
                                Enable authentication mode. The default is disable.

                                -b *************** *** 142,148 ****

                                Bugs

                                ! xntpd has gotten rather fat. While not huge, it has gotten larger than might be desireable for an elevated-priority daemon running on a workstation, particularly since many of the fancy features which consume the space were designed more with a busy primary server, rather --- 143,149 ----

                                Bugs

                                !

                                xntpd has gotten rather fat. While not huge, it has gotten larger than might be desireable for an elevated-priority daemon running on a workstation, particularly since many of the fancy features which consume the space were designed more with a busy primary server, rather diff -r -c /home/windl/xntp3-5.86/html/xntpdc.html ./xntpdc.html *** /home/windl/xntp3-5.86/html/xntpdc.html Sun Aug 4 20:35:39 1996 --- ./xntpdc.html Tue Oct 1 22:22:50 1996 *************** *** 1,5 **** ! <code>xntpdc</code> - special NTP query program

                                xntpdc - special NTP query program


                                --- 1,6 ---- + ! xntpdc - special NTP query program

                                xntpdc - special NTP query program


                                *************** *** 54,60 ****
                                !

                                -c command
                                The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given. --- 55,61 ----
                                !
                                -c command
                                The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given. *************** *** 97,103 ****
                                !

                                ? [ command_keyword ]
                                helpl [ command_keyword ]
                                A ? by itself will print a list of all the command keywords known to this incarnation of ntpq. A --- 98,104 ----
                                !
                                ? [ command_keyword ]
                                helpl [ command_keyword ]
                                A ? by itself will print a list of all the command keywords known to this incarnation of ntpq. A *************** *** 152,158 ****
                                !

                                listpeers
                                Obtains and prints a brief list of the peers for which the server is maintaining state. These should include all configured peer associations as well as those peers whose stratum is such that they are considered by --- 153,159 ----
                                !
                                listpeers
                                Obtains and prints a brief list of the peers for which the server is maintaining state. These should include all configured peer associations as well as those peers whose stratum is such that they are considered by *************** *** 228,234 ****
                                !

                                The system flags show various system flags, some of which can be set and cleared by the enable and disable configuration commands, respectively. These are the auth, bclient, monitor, --- 229,235 ----
                                !
                                The system flags show various system flags, some of which can be set and cleared by the enable and disable configuration commands, respectively. These are the auth, bclient, monitor, *************** *** 320,326 ****
                                !

                                addpeer peer_address [ keyid ] [ version ] [ prefer ]
                                Add a configured peer association at the given address and operating in symmetric active mode. Note that an existing association with the --- 321,327 ----
                                !
                                addpeer peer_address [ keyid ] [ version ] [ prefer ]
                                Add a configured peer association at the given address and operating in symmetric active mode. Note that an existing association with the *************** *** 373,379 ****
                                !

                                auth
                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable. --- 374,380 ----
                                !
                                auth
                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable. *************** *** 422,434 ****
                                !

                                restrict address mask flag [ flag ! ]
                                This command operates in the same way as the restrict configuration file commands of xntpd. !

                                unrestrict address mask flag [ flag ! ]
                                Unrestrict the matching entry from the restrict list.

                                delrestrict address mask [ ntpport ] --- 423,433 ----
                                !

                                restrict address mask flag [ flag ]
                                This command operates in the same way as the restrict configuration file commands of xntpd. !

                                unrestrict address mask flag [ flag ]
                                Unrestrict the matching entry from the restrict list.

                                delrestrict address mask [ ntpport ] 07070100002cab000081a400000064000000640000000132b609950000a0a8000000200000001b00000000000000000000001b00000009reloc/html/HTMLPrimer.html A Beginner's Guide to HTML

                                A Beginner's Guide to HTML

                                This is a primer for producing documents in HTML, the markup language used by the World Wide Web.

                                Acronym Expansion

                                WWW
                                World Wide Web (or Web, for short).
                                SGML
                                Standard Generalized Markup Language -- this is a standard for describing markup languages.
                                DTD
                                Document Type Definition -- this is a specific markup language, written using SGML.
                                HTML
                                HyperText Markup Language -- HTML is a SGML DTD. In practical terms, HTML is a collection of styles (indicated by markup tags) that define the various components of a World Wide Web document. HTML was invented by Tim Berners-Lee while at CERN. He is now director of the W3 Consortium.

                                What This Primer Doesn't Cover

                                This primer assumes that you have:

                                • at least a passing knowledge of how to use NCSA Mosaic or some other Web browser
                                • a general understanding of how Web servers and client browsers work
                                • access to a Web server for which you would like to produce HTML documents, or that you wish to produce HTML documents for personal use

                                Creating HTML Documents

                                HTML documents are in plain (also known as ASCII) text format and can be created using any text editor (e.g., Emacs or vi on UNIX machines). A couple of Web browsers (tkWWW for X Window System machines and CERN's Web browser for NeXT computers) include rudimentary HTML editors in a WYSIWYG environment. There are also some WYSIWIG editors available now (e.g. HotMetal for Sun Sparcstations, HTML Edit for Macintoshes). You may wish to try one of them first before delving into the details of HTML.

                                You can preview a document in progress with NCSA Mosaic (and some other Web browsers). Open it with the Open Local command under the File menu.

                                After you edit the source HTML file, save the changes. Return to NCSA Mosaic and Reload the document. The changes are reflected in the on-screen display.

                                The Minimal HTML Document

                                Here is a bare-bones example of HTML:

                                    <TITLE>The simplest HTML example</TITLE>
                                    <H1>This is a level-one heading</H1>
                                    Welcome to the world of HTML. 
                                    This is one paragraph.<P>
                                    And this is a second.<P>
                                
                                Click here to see the formatted version of the example.

                                HTML uses markup tags to tell the Web browser how to display the text. The above example uses:

                                • the <TITLE> tag (and corresponding </TITLE> tag), which specifies the title of the document
                                • the <H1> header tag (and corresponding </H1>)
                                • the <P> paragraph-separator tag

                                HTML tags consist of a left angle bracket (<), (a ``less than'' symbol to mathematicians), followed by name of the tag and closed by a right angular bracket (>). Tags are usually paired, e.g. <H1> and </H1>. The ending tag looks just like the starting tag except a slash (/) precedes the text within the brackets. In the example, <H1> tells the Web browser to start formatting a level-one heading; </H1> tells the browser that the heading is complete.

                                The primary exception to the pairing rule is the <P> tag. There is no such thing as </P>.

                                NOTE: HTML is not case sensitive. <title> is equivalent to <TITLE> or <TiTlE>.

                                Not all tags are supported by all World Wide Web browsers. If a browser does not support a tag, it just ignores it.

                                Basic Markup Tags

                                Title

                                Every HTML document should have a title. A title is generally displayed separately from the document and is used primarily for document identification in other contexts (e.g., a WAIS search). Choose about half a dozen words that describe the document's purpose.

                                In the X Window System and Microsoft Windows versions of NCSA Mosaic, the Document Title field is at the top of the screen just below the pulldown menus. In NCSA Mosaic for Macintosh, text tagged as <TITLE> appears as the window title.

                                Headings

                                HTML has six levels of headings, numbered 1 through 6, with 1 being the most prominent. Headings are displayed in larger and/or bolder fonts than normal body text. The first heading in each document should be tagged <H1>. The syntax of the heading tag is:

                                <Hy>Text of heading </Hy >

                                where y is a number between 1 and 6 specifying the level of the heading.

                                For example, the coding for the ``Headings'' section heading above is

                                    <H3>Headings</H3>
                                
                                Title versus first heading

                                In many documents, the first heading is identical to the title. For multipart documents, the text of the first heading should be suitable for a reader who is already browsing related information (e.g., a chapter title), while the title tag should identify the document in a wider context (e.g., include both the book title and the chapter title, although this can sometimes become overly long).

                                Paragraphs

                                Unlike documents in most word processors, carriage returns in HTML files aren't significant. Word wrapping can occur at any point in your source file, and multiple spaces are collapsed into a single space. (There are couple of exceptions; space following a <P> or <Hy> tag, for example, is ignored.) Notice that in the bare-bones example, the first paragraph is coded as

                                    Welcome to HTML.
                                    This is the first paragraph. <P>
                                

                                In the source file, there is a line break between the sentences. A Web browser ignores this line break and starts a new paragraph only when it reaches a <P> tag.

                                Important: You must separate paragraphs with <P>. The browser ignores any indentations or blank lines in the source text. HTML relies almost entirely on the tags for formatting instructions, and without the <P> tags, the document becomes one large paragraph. (The exception is text tagged as ``preformatted,'' which is explained below.) For instance, the following would produce identical output as the first bare-bones HTML example:

                                    <TITLE>The simplest HTML example</TITLE><H1>This is a level 
                                    one heading</H1>Welcome to the world of HTML. This is one 
                                    paragraph.<P>And this is a second.<P>
                                

                                However, to preserve readability in HTML files, headings should be on separate lines, and paragraphs should be separated by blank lines (in addition to the <P> tags).

                                NCSA Mosaic handles <P> by ending the current paragraph and inserting a blank line.

                                In HTML+, a successor to HTML currently in development, <P> becomes a ``container'' of text, just as the text of a level-one heading is ``contained'' within<H1> ... </H1>:

                                    <P>
                                    This is a paragraph in HTML+.
                                    </P>
                                

                                The difference is that the </P> closing tag can always be omitted. (That is, if a browser sees a <P>, it knows that there must be an implied </P> to end the previous paragraph.) In other words, in HTML+, <P> is a beginning-of-paragraph marker.

                                The advantage of this change is that you will be able to specify formatting options for a paragraph. For example, in HTML+, you will be able to center a paragraph by coding

                                    <P ALIGN=CENTER>
                                    This is a centered paragraph. This is HTML+, so you can't do it yet.
                                

                                This change won't effect any documents you write now, and they will continue to look just the same with HTML+ browsers.

                                Linking to Other Documents

                                The chief power of HTML comes from its ability to link regions of text (and also images) to another document. The browser highlights these regions (usually with color and/or underlines) to indicate that they are hypertext links (often shortened to hyperlinks or simply links).

                                HTML's single hypertext-related tag is <A>, which stands for anchor. To include an anchor in your document:

                                1. Start the anchor with <A . (There's a space after the A.)
                                2. Specify the document that's being pointed to by entering the parameter HREF="filename" followed by a closing right angle bracket: >
                                3. Enter the text that will serve as the hypertext link in the current document.
                                4. Enter the ending anchor tag: </A>.

                                Here is an sample hypertext reference:

                                    <A HREF="MaineStats.html">Maine</A>
                                

                                This entry makes the word ``Maine'' the hyperlink to the document MaineStats.html, which is in the same directory as the first document. You can link to documents in other directories by specifying the relative path from the current document to the linked document. For example, a link to a file NJStats.html located in the subdirectory AtlanticStates would be:

                                    <A HREF="AtlanticStates/NJStats.html">New Jersey</A>
                                

                                These are called relative links. You can also use the absolute pathname of the file if you wish. Pathnames use the standard UNIX syntax.

                                Relative Links Versus Absolute Pathnames

                                In general, you should use relative links, because

                                1. You have less to type.
                                2. It's easier to move a group of documents to another location, because the relative path names will still be valid.

                                However, use absolute pathnames when linking to documents that are not directly related. For example, consider a group of documents that comprise a user manual. Links within this group should be relative links. Links to other documents (perhaps a reference to related software) should use full path names. This way, if you move the user manual to a different directory, none of the links would have to be updated.

                                Uniform Resource Locator

                                The World Wide Web uses Uniform Resource Locators (URLs) to specify the location of files on other servers. A URL includes the type of resource being accessed (e.g., gopher, WAIS), the address of the server, and the location of the file. The syntax is:

                                scheme://host.domain[:port]/path/filename

                                where scheme is one of

                                file
                                a file on your local system, or a file on an anonymous FTP server
                                http
                                a file on a World Wide Web server
                                gopher
                                a file on a Gopher server
                                WAIS
                                a file on a WAIS server
                                news
                                an Usenet newsgroup
                                telnet
                                a connection to a Telnet-based service

                                The port number can generally be omitted. (That means unless someone tells you otherwise, leave it out.)

                                For example, to include a link to this primer in your document, you would use

                                    <A HREF = "http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html"> 
                                    NCSA's Beginner's Guide to HTML</A>
                                

                                This would make the text ``NCSA's Beginner's Guide to HTML'' a hyperlink to this document.

                                For more information on URLs, look at

                                Links to Specific Sections in Other Documents

                                Anchors can also be used to move to a particular section in a document. Suppose you wish to set a link from document A and a specific section in document B. (Call this file documentB.html.) First you need to set up a named anchor in document B. For example, to set up an anchor named ``Jabberwocky'' to document B, enter

                                    Here's <A NAME = "Jabberwocky">some text</a>
                                

                                Now when you create the link in document A, include not only the filename, but also the named anchor, separated by a hash mark (#).

                                    This is my <A HREF = "documentB.html#Jabberwocky">link</A> to document B.
                                

                                Now clicking on the word ``link'' in document A sends the reader directly to the words ``some text'' in document B.

                                Links to Specific Sections Within the Current Document

                                The technique is exactly the same except the filename is omitted.

                                For example, to link to the Jabberwocky anchor from within the same file (Document B), use

                                    This is <A HREF = "#Jabberwocky">Jabberwocky link</A> from within Document B.
                                

                                Additional Markup Tags

                                The preceding is sufficient to produce simple HTML documents. For more complex documents, HTML has tags for several types of lists, preformatted sections, extended quotations, character formatting, and other items.

                                Lists

                                HTML supports unnumbered, numbered, and definition lists.

                                Unnumbered Lists

                                To make an unnumbered list,

                                1. Start with an opening list <UL> tag.
                                2. Enter the <LI> tag followed by the individual item. (No closing </LI> tag is needed.)
                                3. End with a closing list </UL> tag.

                                Below an example two-item list:

                                    <UL>
                                    <LI> apples
                                    <LI> bananas
                                    </UL>
                                

                                The output is:

                                • apples
                                • bananas

                                The <LI> items can contain multiple paragraphs. Just separate the paragraphs with the <P> paragraph tags.

                                Numbered Lists

                                A numbered list (also called an ordered list, from which the tag name derives) is identical to an unnumbered list, except it uses <OL> instead of <UL>. The items are tagged using the same <LI> tag. The following HTML code

                                    <OL>
                                    <LI> oranges
                                    <LI> peaches
                                    <LI> grapes
                                    </OL>
                                

                                produces this formatted output:

                                1. oranges
                                2. peaches
                                3. grapes

                                Definition Lists

                                A definition list usually consists of alternating a term (abbreviated as DT) and a definition (abbreviated as DD). Web browsers generally format the definition on a new line.

                                The following is an example of a definition list:

                                    <DL>
                                    <DT> NCSA
                                    <DD> NCSA, the National Center for Supercomputing Applications,
                                         is located on the campus of the University of Illinois 
                                         at Urbana-Champaign. NCSA is one of the participants in the
                                         National MetaCenter for Computational Science and Engineering.
                                    <DT> Cornell Theory Center
                                    <DD> CTC is located on the campus of Cornell University in Ithaca,
                                         New York. CTC is another participant in the National MetaCenter
                                         for Computational Science and Engineering.
                                    </DL>
                                

                                The output looks like:

                                NCSA
                                NCSA, the National Center for Supercomputing Applications, is located on the campus of the University of Illinois at Urbana-Champaign. NCSA is one of the participants in the National MetaCenter for Computational Science and Engineering.
                                Cornell Theory Center
                                CTC is located on the campus of Cornell University in Ithaca, New York. CTC is another participant in the National MetaCenter for Computational Science and Engineering.

                                The <DT> and <DD> entries can contain multiple paragraphs (separated by <P> paragraph tags), lists, or other definition information.

                                Nested Lists

                                Lists can be arbitrarily nested, although in practice you probably should limit the nesting to three levels. You can also have a number of paragraphs, each containing a nested list, in a single list item.

                                An example nested list:

                                    <UL>
                                    <LI> A few New England states:
                                        <UL>
                                        <LI> Vermont
                                        <LI> New Hampshire
                                        </UL>
                                    <LI> One Midwestern state:
                                        <UL>
                                        <LI> Michigan
                                        </UL>
                                    </UL>
                                

                                The nested list is displayed as

                                • A few New England states:
                                  • Vermont
                                  • New Hampshire
                                • One Midwestern state:
                                  • Michigan

                                Preformatted Text

                                Use the <PRE> tag (which stands for ``preformatted'') to generate text in a fixed-width font and cause spaces, new lines, and tabs to be significant. (That is, multiple spaces are displayed as multiple spaces, and lines break in the same locations as in the source HTML file.) This is useful for program listings. For example, the following lines

                                    <PRE>
                                      #!/bin/csh                           
                                      cd $SCR                             
                                      cfs get mysrc.f:mycfsdir/mysrc.f   
                                      cfs get myinfile:mycfsdir/myinfile   
                                      fc -02 -o mya.out mysrc.f           
                                      mya.out                              
                                      cfs save myoutfile:mycfsdir/myoutfile 
                                      rm *                                
                                    </PRE>
                                

                                display as

                                      #!/bin/csh                           
                                      cd $SCR                             
                                      cfs get mysrc.f:mycfsdir/mysrc.f   
                                      cfs get myinfile:mycfsdir/myinfile   
                                      fc -02 -o mya.out mysrc.f           
                                      mya.out                              
                                      cfs save myoutfile:mycfsdir/myoutfile 
                                      rm *
                                

                                Hyperlinks can be used within <PRE> sections. You should avoid using other HTML tags within <PRE> sections, however.

                                Note that because <, >, and & have special meaning in HTML, you have to use their escape sequences (&lt;, &gt;, and &amp;, respectively) to enter these characters. See the section Special Characters for more information.

                                Extended Quotations

                                Use the <BLOCKQUOTE> tag to include quotations in a separate block on the screen. Most browsers generally indent to separate it from surrounding text.

                                An example:

                                    <BLOCKQUOTE>
                                    I still have a dream. It is a dream deeply rooted in the
                                    American dream. <P>
                                    I have a dream that one day this nation will rise up and 
                                    live out the true meaning of its creed. We hold these truths 
                                    to be self-evident that all men are created equal. <P>
                                    </BLOCKQUOTE>
                                

                                The result is:

                                I still have a dream. It is a dream deeply rooted in the American dream.

                                I have a dream that one day this nation will rise up and live out the true meaning of its creed. We hold these truths to be self-evident that all men are created equal.

                                Addresses

                                The <ADDRESS> tag is generally used to specify the author of a document and a means of contacting the author (e.g., an email address). This is usually the last item in a file.

                                For example, the last line of the online version of this guide is

                                    <ADDRESS>
                                    A Beginner's Guide to HTML / NCSA / pubs@ncsa.uiuc.edu
                                    </ADDRESS>
                                

                                The result is

                                A Beginner's Guide to HTML / NCSA / pubs@ncsa.uiuc.edu

                                NOTE: <ADDRESS> is not used for postal addresses. See ``Forced Line Breaks'' on page 10 to see how to format postal addresses.

                                Character Formatting

                                You can code individual words or sentences with special styles. There are two types of styles: logical and physical. Logical styles tag text according to its meaning, while physical styles specify the specific appearance of a section. For example, in the preceding sentence, the words ``logical styles'' was tagged as a ``definition.'' The same effect (formatting those words in italics), could have been achieved via a different tag that specifies merely ``put these words in italics.''

                                Physical Versus Logical: Use Logical Styles When Possible

                                If physical and logical styles produce the same result on the screen, why are there both? We devolve, for a couple of paragraphs, into the philosophy of SGML, which can be summed in a Zen-like mantra: ``Trust your browser.''

                                In the ideal SGML universe, content is divorced from presentation. Thus, SGML tags a level-one heading as a level-one heading, but does not specify that the level-one heading should be, for instance, 24-point bold Times centered on the top of a page. The advantage of this approach (it's similar in concept to style sheets in many word processors) is that if you decide to change level-one headings to be 20-point left-justified Helvetica, all you have to do is change the definition of the level-one heading in the presentation device (i.e., your World Wide Web browser).

                                The other advantage of logical tags is that they help enforce consistency in your documents. It's easier to tag something as <H1> than to remember that level-one headings are 24-point bold Times or whatever. The same is true for character styles. For example, consider the <STRONG> tag. Most browsers render it in bold text. However, it is possible that a reader would prefer that these sections be displayed in red instead. Logical styles offer this flexibility.

                                Logical Styles

                                <DFN>
                                for a word being defined. Typically displayed in italics. (NCSA Mosaic is a World Wide Web browser.)
                                <EM>
                                for emphasis. Typically displayed in italics. (Watch out for pickpockets.)
                                <CITE>
                                for titles of books, films, etc. Typically displayed in italics. (A Beginner's Guide to HTML)
                                <CODE>
                                for snippets of computer code. Displayed in a fixed-width font. (The <stdio.h> header file)
                                <KBD>
                                for user keyboard entry. Should be displayed in a bold fixed-width font, but many browsers render it in the plain fixed-width font. (Enter passwd to change your password.)
                                <SAMP>
                                for computer status messages. Displayed in a fixed-width font. (Segmentation fault: Core dumped.)
                                <STRONG>
                                for strong emphasis. Typically displayed in bold. (Important)
                                <VAR>
                                for a ``metasyntactic'' variable, where the user is to replace the variable with a specific instance. Typically displayed in italics. (rm filename deletes the file.)

                                Physical Styles

                                <B>
                                bold text
                                <I>
                                italic text
                                <TT>
                                typewriter text, e.g. fixed-width font.

                                Using Character Tags

                                To apply a character style,

                                1. Start with <tag>, where tag is the desired character formatting tag, to indicate the beginning of the tagged text.
                                2. Enter the tagged text.
                                3. End the passage with </tag>.

                                Special Characters

                                Escape Sequences

                                Four characters of the ASCII character set -- the left angle bracket (<), the right angle bracket (>), the ampersand (&) and the double quote (") -- have special meaning within HTML and therefore cannot be used ``as is'' in text. (The angle brackets are used to indicate the beginning and end of HTML tags, and the ampersand is used to indicate the beginning of an escape sequence.)

                                To use one of these characters in an HTML document, you must enter its escape sequence instead:

                                &lt;
                                the escape sequence for <
                                &gt;
                                the escape sequence for >
                                &amp;
                                the escape sequence for &
                                &quot;
                                the escape sequence for "

                                Additional escape sequences support accented characters. For example:

                                &ouml;
                                the escape sequence for a lowercase o with an umlaut: ö
                                &ntilde;
                                the escape sequence for a lowercase n with an tilde: ñ
                                &Egrave;
                                the escape sequence for an uppercase E with a grave accent: È

                                A full list of supported characters is available.

                                NOTE: Unlike the rest of HTML, the escape sequences are case sensitive. You cannot, for instance, use &LT; instead of &lt;.

                                Forced Line Breaks

                                The <BR> tag forces a line break with no extra space between lines. (By contrast, most browsers format the <P> paragraph tag with an additional blank line to more clearly indicate the beginning the new paragraph.)

                                One use of <BR> is in formatting addresses:

                                    National Center for Supercomputing Applications<BR>
                                    605 East Springfield Avenue<BR>
                                    Champaign, Illinois 61820-5518<BR>
                                

                                Horizontal Rules

                                The <HR> tag produces a horizontal line the width of the browser window.

                                In-line Images

                                Most Web browsers can display in-line images (that is, images next to text) that are in X Bitmap (XBM) or GIF format. Each image takes time to process and slows down the initial display of the document, so generally you should not include too many or overly large images.

                                To include an in-line image, use

                                    <IMG SRC=image_URL>
                                

                                where image_URL is the URL of the image file. The syntax for IMG SRC URLs is identical to that used in an anchor HREF. If the image file is a GIF file, then the filename part of image_URL must end with .gif. Filenames of X Bitmap images must end with .xbm.

                                By default the bottom of an image is aligned with the text as shown in this paragraph.

                                Add the ALIGN=TOP option if you want the browser to align adjacent text with the top of the image as shown in this paragraph. The full in-line image tag with the top alignment is:

                                    <IMG ALIGN=top SRC=image_URL>
                                

                                ALIGN=MIDDLE aligns the text with the center of the image.

                                Alternate Text for Browsers That Can't Display Images

                                Some World Wide Web browsers, primarily those that run on VT100 terminals, cannot display images. The ALT option allows you to specify text to be displayed when an image cannot be. For example:

                                    <IMG SRC = "UpArrow.gif" ALT = "Up">
                                

                                where UpArrow.gif is the picture of an upward pointing arrow. With NCSA Mosaic and other graphics-capable viewers, the user sees the up arrow graphic. With a VT100 browser, such as lynx, the user sees the word ``Up.''

                                External Images, Sounds, and Animations

                                You may want to have an image open as a separate document when a user activates a link on either a word or a smaller, in-line version of the image included in your document. This is considered an external image and is useful if you do not wish to slow down the loading of the main document with large in-line images.

                                To include a reference to an external image, use

                                    <A HREF = image_URL>link anchor</A>
                                

                                Use the same syntax is for links to external animations and sounds. The only difference is the file extension of the linked file. For example,

                                <A HREF = "QuickTimeMovie.mov">link anchor</A>

                                specifies a link to a QuickTime movie. Some common file types and their extensions are:

                                File Type
                                Extension
                                Plain text
                                .txt
                                HTML document
                                .html
                                GIF image
                                .gif
                                TIFF image
                                .tiff
                                XBM bitmap image
                                .xbm
                                JPEG image
                                .jpg or .jpeg
                                PostScript file
                                .ps
                                AIFF sound
                                .aiff
                                AU sound
                                .au
                                QuickTime movie
                                .mov
                                MPEG movie
                                .mpeg or .mpg

                                Make sure your intended audience has the necessary viewers. Most UNIX workstations, for instance, cannot view QuickTime movies.

                                Troubleshooting

                                Avoid Overlapping Tags

                                Consider this snippet of HTML:

                                    <B>This is an example of <DFN>overlapping</B> HTML tags.</DFN>
                                

                                The word ``overlapping'' is contained within both the <B> and <DFN> tags. How does the browser format it? You won't know until you look, and different browsers will likely react differently. In general, avoid overlapping tags.

                                Embed Anchors and Character Tags, But Nothing Else

                                It is acceptable to embed anchors within another HTML element:

                                    <H1><A HREF = "Destination.html">My heading</A></H1>
                                

                                Do not embed a heading or another HTML element within an anchor:

                                    <A HREF = "Destination.html">
                                    <H1>My heading</H1>
                                    </A>
                                

                                Although most browsers currently handle this example, it is forbidden by the official HTML and HTML+ specifications, and will not work with future browsers.

                                Character tags modify the appearance of other tags:

                                    <UL><LI><B>A bold list item</B>
                                        <UL>
                                        <LI><I>An italic list item</I>
                                    </UL>
                                

                                However, avoid embedding other types of HTML element tags. For example, it is tempting to embed a heading within a list, in order to make the font size larger:

                                    <UL><LI><H1>A large heading</H1>
                                        <UL>
                                        <LI><H2>Something slightly smaller</H2>
                                    </UL>
                                

                                Although some browsers, such as NCSA Mosaic for the X Window System, format this construct quite nicely, it is unpredictable (because it is undefined) what other browsers will do. For compatibility with all browsers, avoid these kinds of constructs.

                                What's the difference between embedding a <B> within a <LI> tag as opposed to embedding a <H1> within a <LI>? This is again a question of SGML. The semantic meaning of <H1> is that it's the main heading of a document and that it should be followed by the content of the document.Thus it doesn't make sense to find a <H1> within a list.

                                Character formatting tags also are generally not additive. You might expect that

                                    <B><I>some text</I></B>
                                

                                would produce bold-italic text. On some browsers it does; other browsers interpret only the innermost tag (here, the italics).

                                Check Your Links

                                When an <IMG> tag points at an image that does not exist, a dummy image is substituted. When this happens, make sure that the referenced image does in fact exist, that the hyperlink has the correct information in the URL, and that the file permission is set appropriately (world-readable).

                                A Longer Example

                                Here is a longer example of an HTML document:

                                    <HEAD>
                                    <TITLE>A Longer Example</TITLE>
                                    </HEAD>
                                    <BODY>
                                    <H1>A Longer Example</H1>
                                    This is a simple HTML document. This is the first
                                    paragraph. <P>
                                    This is the second paragraph, which shows special effects.  This is a 
                                    word in <I>italics</I>.  This is a word in <B>bold</B>.
                                    Here is an in-lined GIF image: <IMG SRC = "myimage.gif">. 
                                    <P>
                                    This is the third paragraph, which demonstrates links.  Here is 
                                    a hypertext link from the word <A HREF = "subdir/myfile.html">foo</A>
                                    to a document called "subdir/myfile.html". (If you 
                                    try to follow this link, you will get an error screen.) <P> 
                                    <H2>A second-level header</H2>
                                    Here is a section of text that should display as a 
                                    fixed-width font: <P>
                                    <PRE>
                                        On the stiff twig up there
                                        Hunches a wet black rook
                                        Arranging and rearranging its feathers in the rain ...
                                    </PRE>
                                    This is a unordered list with two items: <P>
                                    <UL>
                                    <LI> cranberries
                                    <LI> blueberries
                                    </UL>
                                    This is the end of my example document. <P>
                                    <ADDRESS>Me (me@mycomputer.univ.edu)</ADDRESS>
                                    </BODY>
                                
                                Click here to see the formatted version.

                                In addition to tags already discussed, this example also uses the <HEAD> ... </HEAD> and <BODY> ... </BODY> tags, which separate the document into introductory information about the document and the main text of the document. These tags don't change the appearance of the formatted document at all, but are useful for several purposes (for example, NCSA Mosaic for Macintosh 2.0, for example, allows you to browse just the header portion of document before deciding whether to download the rest), and it is recommended that you use these tags.

                                For More Information

                                This guide is only an introduction to HTML and not a comprehensive reference. Below are additional sources of information.

                                Fill-out Forms

                                One major feature not discussed here is fill-out forms, which allows users to return information to the World Wide Web server. For information on fill-out forms, look at this Fill-out Forms Overview

                                Style Guides

                                The following offer advice on how to write ``good'' HTML:

                                Other Introductory Documents

                                These cover similar information as this guide:

                                Additional References


                                National Center for Supercomputing Applications / pubs@ncsa.uiuc.edu
                                07070100002cae000081a400000064000000640000000132b60995000019c8000000200000001b00000000000000000000001700000009reloc/html/accopt.html Access Control Options

                                Access Control Options


                                Access Control Support

                                xntpd implements a general purpose address-and-mask based restriction list. The list is sorted by address and by mask, and the list is searched in this order for matches, with the last match found defining the restriction flags associated with the incoming packets. The source address of incoming packets is used for the match, with the 32-bit address being and'ed with the mask associated with the restriction entry and then compared with the entry's address (which has also been and'ed with the mask) to look for a match. Additional information and examples can be found in the Notes on Configuring NTP and Setting up a NTP Subnet page.

                                The restriction facility was implemented in conformance with the access policies for the original NSFnet backbone time servers. While this facility may be otherwise useful for keeping unwanted or broken remote time servers from affecting your own, it should not be considered an alternative to the standard NTP authentication facility. Source address based restrictions are easily circumvented by a determined cracker.

                                Access Control Commands

                                restrict numeric_address [ mask numeric_mask ] [ flag ] [ ... ]
                                The numeric_address argument, expressed in dotted-quad form, is the address of an host or network. The mask argument, also expressed in dotted-quad form, defaults to 255.255.255.255, meaning that the numeric_address is treated as the address of an individual host. A default entry (address 0.0.0.0, mask 0.0.0.0) is always included and, given the sort algorithm, is always the first entry in the list. Note that, while numeric_address is normally given in dotted-quad format, the text string default, with no mask option, may be used to indicate the default entry.

                                In the current implementation, flag always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two catagories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified:
                                ignore
                                Ignore all packets from hosts which match this entry. If this flag is specified neither queries nor time server polls will be responded to.

                                noquery
                                Ignore all NTP mode 6 and 7 packets (i.e. information queries and configuration requests) from the source. Time service is not affected.

                                nomodify
                                Ignore all NTP mode 6 and 7 packets which attempt to modify the state of the server (i.e. run time reconfiguration). Queries which return information are permitted.

                                notrap
                                Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the mode 6 control message protocol which is intended for use by remote event logging programs.

                                lowpriotrap
                                Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps.

                                noserve
                                Ignore NTP packets whose mode is other than 6 or 7. In effect, time service is denied, though queries may still be permitted.

                                nopeer
                                Provide stateless time service to polling hosts, but do not allocate peer memory resources to these hosts even if they otherwise might be considered useful as future synchronization partners.

                                notrust
                                Treat these hosts normally in other respects, but never use them as synchronization sources.

                                limited
                                These hosts are subject to limitation of number of clients from the same net. Net in this context refers to the IP notion of net (class A, class B, class C, etc.). Only the first client_limit hosts that have shown up at the server and that have been active during the last client_limit_period seconds are accepted. Requests from other clients from the same net are rejected. Only time request packets are taken into account. Query packets sent by the ntpq and xntpdc programs are not subject to these limits. A history of clients is kept using the monitoring capability of xntpd. Thus, monitoring is always active as long as there is a restriction entry with the limited flag.

                                ntpport
                                This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both ntpport and non-ntpport may be specified. The ntpport is considered more specific and is sorted later in the list.

                                Default restriction list entries, with the flags ignore, ntpport, for each of the local host's interface addresses are inserted into the table at startup to prevent the server from attempting to synchronize to its own time. A default entry is also always present, though if it is otherwise unconfigured; no flags are associated with the default entry (i.e., everything besides your own NTP server is unrestricted).

                                clientlimit limit
                                Set the client_limit variable, which limits the number of simultaneous access-controlled clients. The default value for this variable is 3.

                                clientperiod period
                                Set the client_limit_period variable, which specifies the number of seconds after which a client is considered inactive and thus no longer is counted for client limit restriction. The default value for this variable is 3600 seconds.

                                David L. Mills (mills@udel.edu)
                                07070100002caf000081a400000064000000640000000132b6099500000715000000200000001b00000000000000000000001900000009reloc/html/authcert.html authcert - DES validation program

                                authcert - DES validation program


                                Synopsis

                                authcert

                                Description

                                This program verifies whether the DES encryption algorithm is operating correctly in the particular architecture. The program reads a line from the standard input containing a key, plaintext block and the corresponding encrypted ciphertext block, respectively, as in the following

                                0000000000000000 0000000000000000 8CA64DE9C1B123A7
                                FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 7359B2163E4EDC58
                                3000000000000000 1000000000000001 958E6E627A05557B
                                1111111111111111 1111111111111111 F40379AB9E0EC533
                                0123456789ABCDEF 1111111111111111 17668DFC7292532D
                                1111111111111111 0123456789ABCDEF 8A5AE1F81AB8F2DD
                                0000000000000000 0000000000000000 8CA64DE9C1B123A7
                                FEDCBA9876543210 0123456789ABCDEF ED39D950FA74BCC4
                                7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B
                                

                                and generates output as in the following

                                 K: 0000000000000000 P: 0000000000000000 C: 8ca64de9c1b123a7 OK
                                 K: ffffffffffffffff P: ffffffffffffffff C: 7359b2163e4edc58 OK
                                 K: 3000000000000000 P: 1000000000000001 C: 958e6e627a05557b OK
                                 K: 1111111111111111 P: 1111111111111111 C: f40379ab9e0ec533 OK
                                 K: 0123456789abcdef P: 1111111111111111 C: 17668dfc7292532d OK
                                 K: 1111111111111111 P: 0123456789abcdef C: 8a5ae1f81ab8f2dd OK
                                 K: 0000000000000000 P: 0000000000000000 C: 8ca64de9c1b123a7 OK
                                 K: fedcba9876543210 P: 0123456789abcdef C: ed39d950fa74bcc4 OK
                                 K: 7ca110454a1a6e57 P: 01a1d6d039776742 C: 690f5b0d9a26939b OK
                                

                                Files

                                ./authstuff/certdata - a representative test file


                                David L. Mills (mills@udel.edu)
                                07070100002cb0000081a400000064000000640000000132b6099500001725000000200000001b00000000000000000000001800000009reloc/html/authopt.html Authentication Options

                                Authentication Options


                                Authentication Support

                                The NTP standard specifies an extension which provides cryptographic authentication of received NTP packets. This is implemented in xntpd using the DES or MD5 algorithms to compute a digital signature, or message digest. The specification allows any one of possibly 4 billion keys, numbered with 32-bit key identifiers, to be used to authenticate an association. The servers involved in an association must agree on the key and key identifier used to authenticate their messages.

                                Keys and related information are specified in a key file, which should be exchanged and stored using secure procedures beyond the scope of the protocol. There are three classes of keys involved in the current implementation. One class is used for ordinary NTP associations, another for the ntpq utility program and the third for the xntpdc utility program.

                                Authentication Commands

                                keys keyfile
                                Specifies the file name containing the encryption keys and key identifiers used by xntpd, ntpq and xntpdc when operating in authenticated mode. The format of this file is described later in this document.

                                trustedkey key [ ... ]
                                Specifies the encryption key identifiers which are trusted for the purposes of authenticating peers suitable for synchronization. The authentication procedures require that both the local and remote servers share the same key and key identifier for this purpose, although different keys can be used with different servers. The key arguments are 32-bit unsigned integers. Note that NTP key 0 is fixed and globally known. If meaningful authentication is to be performed the 0 key should not be trusted.

                                requestkey key
                                Specifies the key identifier to use with the xntpdc program, which uses a proprietary protocol specific to this implementation of xntpd. This program is useful to diagnose and repair problems that affect xntpd operation. The key argument to this command is a 32-bit unsigned integer. If no requestkey command is included in the configuration file, or if the keys don't match, such requests will be ignored.

                                controlkey key
                                Specifies the key identifier to use with the ntpq program, which uses the standard protocol defined in RFC-1305. This program is useful to diagnose and repair problems that affect xntpd operation. The key argument to this command is a 32-bit unsigned integer. If no requestkey command is included in the configuration file, or if the keys don't match, such requests will be ignored.

                                Authentication Key File Format

                                In the case of DES, the keys are 56 bits long with, depending on type, a parity check on each byte. In the case of MD5, the keys are 64 bits (8 bytes). xntpd reads its keys from a file specified using the -k command line option or the keys statement in the configuration file. While key number 0 is fixed by the NTP standard (as 56 zero bits) and may not be changed, one or more of the keys numbered 1 through 15 may be arbitrarily set in the keys file.

                                The key file uses the same comment conventions as the configuration file. Key entries use a fixed format of the form

                                keyno type key

                                where keyno is a positive integer, type is a single character which defines the key format, and key is the key itself.

                                The key may be given in one of three different formats, controlled by the type character. The three key types, and corresponding formats, are listed following.

                                S
                                The key is a 64-bit hexadecimal number in the format specified in the DES specification; that is, the high order seven bits of each octet are used to form the 56-bit key while the low order bit of each octet is given a value such that odd parity is maintained for the octet. Leading zeroes must be specified (i.e., the key must be exactly 16 hex digits long) and odd parity must be maintained. Hence a zero key, in standard format, would be given as 0101010101010101.

                                N
                                The key is a 64-bit hexadecimal number in the format specified in the NTP standard. This is the same as the DES format, except the bits in each octet have been rotated one bit right so that the parity bit is now the high order bit of the octet. Leading zeroes must be specified and odd parity must be maintained. A zero key in NTP format would be specified as 8080808080808080.

                                A
                                The key is a 1-to-8 character ASCII string. A key is formed from this by using the low order 7 bits of each ASCII character in the string, with zeroes added on the right when necessary to form a full width 56-bit key, in the same way that encryption keys are formed from Unix passwords.

                                M
                                The key is a 1-to-8 character ASCII string, using the MD5 authentication scheme. Note that both the keys and the authentication schemes (DES or MD5) must be identical between a set of peers sharing the same key number.

                                Note that the keys used by the ntpq and xntpdc programs are checked against passwords requested by the programs and entered by hand, so it is generally appropriate to specify these keys in ASCII format.


                                David L. Mills (mills@udel.edu)
                                07070100002cb1000081a400000064000000640000000132b60995000004e3000000200000001b00000000000000000000001a00000009reloc/html/authspeed.html authspeed - determine authentication delays

                                authspeed - determine authentication delays


                                Synopsis

                                authspeed [ -cdm ] [ -n loops ] auth.samplekeys

                                Description

                                This program encrypts a test file and determines the authentication delay to use in the NTP configuration file. There are two choices of encryption algorithm, DES Cipher-Block-Chaining (DES-CBC) and Message Digest 5 (MD5).

                                Options

                                -c
                                Select total cost of encryption. Default is value to use in the authdelay configuration command.

                                -d
                                Enable debug output. Default is no debug output.

                                -m
                                Enable MD5 algorithm. Default is DES-CBC algorithm.

                                -n loops
                                Specify the number of program loops. Default is 20,000.

                                Files

                                ./authstuff/auth.samplekeys - a representative list of keys

                                ./authstuff/auth.speed - a listing of results for a representative set of architectures and compilers


                                David L. Mills (mills@udel.edu)
                                07070100002cb2000081a400000064000000640000000132b609950000243d000000200000001b00000000000000000000001700000009reloc/html/biblio.html Further Information and Bibliography

                                Further Information and Bibliography


                                Conformance Statement

                                The Network Time Protocol (NTP) is used to synchronize the time of a computer client or server to another server or reference time source, such as a radio or satellite receiver or modem. It provides accuracies typically within a millisecond on LANs up to a few tens of milliseconds on WANs relative to Coordinated Universal Time (UTC), as provided by a Global Positioning Service (GPS) receiver, for example. Typical NTP configurations utilize multiple redundant servers and diverse network paths, in order to achieve high accuracy and reliability. Some configurations include cryptographic authentication to prevent accidental or malicious protocol attacks. Information on the NTP architecture, protocol and algorithms can be found in the following articles and reports, which are available online

                                1. Mills, D.L. Internet time synchronization: the Network Time Protocol. IEEE Trans. Communications COM-39, 10 (October 1991), 1482-1493. (PostScript). Also in: Yang, Z., and T.A. Marsland (Eds.). Global States and Time in Distributed Systems. IEEE Computer Society Press, Los Alamitos, CA, 1994, 91-102. Condensed from: Ibid. Network Working Group Report RFC-1129, University of Delaware, October 1989. (Abstract: PostScript), (Body: PostScript). Also published as: Electrical Engineering Department Report 89-9-1, University of Delaware, September 1989. (Abstract: PostScript), (Body: PostScript).

                                The NTP specification and implementation has evolved over the last fifteen years to the current Version 3 of the protocol. This version includes significant enhancements in accuracy and reliability, as determined by experience in an estimated total of well over 100,000 clients and servers in the Internet, while retaining backward compatibility with previous versions. The formal specification of the NTP Version 3 protocol is contained in:

                                1. Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. (Abstract: PostScript), (Body: PostScript), (Appendices: PostScript).

                                This software distribution contains a fully compliant implementation of the NTP Version 3 protocol, including an autonomous protocol daemon that disciplines the local host clock, as well as a set of supporting utility programs used to debug and manage one or more NTP servers in a network. It includes complete sources and documentation for well over two dozen Unix-based and Microsoft NT-based workstations and file servers. The implementation is fully compliant with RFC-1305 and, in addition, contains certain extensions compatible with, but not defined by, that document. These extensions include:

                                1. Support for precision-time kernel modifications, as described in
                                  1. Mills, D.L. Unix kernel modifications for precision time synchronization. Electrical Engineering Department Report 94-10-1, University of Delaware, October 1994, 24 pp. (Abstract: PostScript), (Body: PostScript). Major revision and update of: Network Working Group Report RFC-1589, University of Delaware, March 1994. 31 pp. (ASCII).

                                2. Support for IP Multicasting, as described in
                                  1. Mills, D.L, and A. Thyagarajan. Network time protocol version 4 proposed changes. Electrical Engineering Department Report 94-10-2, University of Delaware, October 1994, 32 pp. (Abstract: PostScript), (Body: PostScript).

                                3. A new hybrid phase/frequency-lock clock discipline, which replaces the RFC-1305 local clock algorithm, as described in
                                  1. Mills, D.L. Improved algorithms for synchronizing computer network clocks. IEEE/ACM Trans. Networks (June 1995), 245-254. (PostScript).

                                4. Engineered refinements to radio clock drivers and interface code, as described in:
                                  1. Mills, D.L. Precision synchronization of computer network clocks. ACM Computer Communication Review 24, 2 (April 1994). 28-43. (PostScript).

                                5. Support for over two dozen reference clock drivers for all known national and international radio, satellite and modem standard time services known at this time. See the Reference Clock Drivers page.

                                6. Support for the MD5 cryptographic hash algorithm, in addition to the DES-CBC algorithm described in RFC-1305, as described in the xntpd - Network Time Protocol (NTP) daemon page.

                                7. The prefer-peer scheme, as described in the Mitigation Rules and the prefer Keyword page.

                                Selected Bibliography

                                A number of articles and reports have been written on the analysis, design, implementation and performance of NTP. A representative sample is included here, along with a short description of each. Additional information on NTP can be found at the web sites for NTP and David L. Mills

                                1. A subset of NTP has been defined suitable for use where some degradation in accuracy and reliability is acceptable, so that the entire suite of specified algorithms need not be implemented. This subset is defined in:
                                  1. Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-1769, University of Delaware, March 1995, 14 pp. (ASCII). Major revision and update of: Ibid. Network Working Group Report RFC-1361, University of Delaware, August 1992, 10 pp. (ASCII).

                                2. An assessment of the expected accuracy of NTP operating in the Internet is contained in the following:
                                  1. Mills, D.L. Measured performance of the Network Time Protocol in the Internet system. Network Working Group Report RFC-1128. University of Delaware, October 1989. (Abstract: PostScript), (Body: PostScript). Also published as: Electrical Engineering Department Report 89-9-3, University of Delaware, September 1989. (Abstract: PostScript), (Body: PostScript).
                                  2. Mills, D.L. On the accuracy and stability of clocks synchronized by the Network Time Protocol in the Internet system. ACM Computer Communication Review 20, 1 (January 1990), 65-75. (PostScript).

                                3. The following publication explores issues involved in the development of the NTP specification, including the development of its timescale and the treatment of leap seconds:
                                  1. Mills, D.L. On the chronology and metrology of computer network timescales and their application to the Network Time Protocol. ACM Computer Communications Review 21, 5 (October 1991), 8-17. (PostScript).

                                4. A comprehensive analysis of the engineering model used in the NTP algorithms is given in the following report. This includes a performance analysis of the clock filter and selection algorithms, clock discipline feedback loop, and error budget.
                                  1. Mills, D.L. Modelling and analysis of computer network clocks. Electrical Engineering Department Report 92-5-2, University of Delaware, May 1992, 29 pp. (Abstract: PostScript), (Body: PostScript).

                                David L. Mills (mills@udel.edu)
                                07070100002cb3000081a400000064000000640000000132b6099500001bf0000000200000001b00000000000000000000001600000009reloc/html/build.html Building and Installing the Distribution

                                Building and Installing the Distribution


                                Following are instructions to build and install the programs in this distribution.

                                Note that the automatic build process inspects the machine environment and tests for the presence of system header files and the contents of these files to determine if certain features are available. When one or more of these features are present, the code is compiled to use them; if not, no special code is compiled. However, even if the code is compiled to use these features, the code does a special test at run time to see if one or more are actually present and avoids using them if not present. In such cases a warning message is sent to the system log, but the daemon should still work properly.

                                Building and Installing under Unix

                                Make sure that you have all necessary tools for building executables. These tools include cc/gcc, make, awk, sed, tr, sh, grep, egrep and a few others. Not all of these tools exist in the standard distribution of modern Unix versions (compilers are likely to be an add-on product - consider using the gnu tools and gcc compiler in this case). For a successful build, all of these tools should be accessible via the current path.

                                Configuration

                                Use the configure command to perform an automatic configuration procedure. This procedure normally includes the debugging code, which can be useful in diagnosing problems found in initial test, and all reference clock drivers known to work with each machine and operating system. Unless memory space is at a premium, this is a sensible strategy and saves lots of messy fiddling. If you need to delete either the debugging code or one or more or all reference clock drivers to save space, see the Configuration Options page.

                                If your site supports multiple architectures and uses NFS to share files, you can use a single source tree to compile executables for all architectures. While running on a target architecture machine and with the distribution base directory active, create a subdirectory using a command like mkdir `config.guess`, which will create an architecture-specific directory with name peculiar to the architecture and operating system. Then change to this directory and configure with the ../configure command. The remaining steps are the same whether building in the base directory or in the subdirectory.

                                Compilation

                                Use the make command to compile all source modules, construct the libraries and link the distribution. Expect few or no warnings using cc and a moderate level of warnings using gcc. Note: On some Unix platforms the use of gcc can result in quite a few complaints about system header files and type inconsistencies, especially about pointer variables. This is usually the case when the system header files are not up to ANSI standards or gcc-isms. While the autoconfigure process is quite thorough, the Unix programming cultures of the various workstation makers still remain idiosyncratic.

                                Installation

                                As root, use the make install command to install the binaries in the destination directory. You must of course have write permission on the install destination directory. This includes the programs xntpd (the daemon), xntpdc (an xntpd- dependent query program), ntpq (a standard query program), ntpdate (an rdate replacement for boot time date setting and sloppy time keeping) and ntptrace (a utility useful to find the primary (stratum-1) servers). In some systems, the tickadj (a utility useful to adjust kernel variables) is installed. If the precision time kernel modifications are present, the ntptime (a utility useful to debug kernel time functions) is installed.

                                You are now ready to configure the daemon and start it. You will need to create a NTP configuration file ntp.conf and possibly a cryptographic key file ntp.keys. Directions for doing that are in the Notes on Configuring NTP and Setting up a NTP Subnet. A tutorial on debugging technique is in NTP Debugging Technique. If problems peculiar to the particular hardware and software environment are suspected, browse the Hints and Kinks page.

                                Bug reports of a general nature can be sent to David Mills (mills@udel.edu). Bug reports of a specific nature on features implemented by the programmer corps mentioned in the Copyright page should be sent directly to the implementor listed in that page, with copy to mills@udel.edu.

                                Please include the version of the source distribution (e.g., xntp3-5.87) in your bug report.

                                Please include the output of config.guess in your bug report.

                                Additional make commands

                                make clean
                                Cleans out object files, programs and temporary files.

                                make distclean
                                Does the work of clean, but cleans out all directories in preparation for a new distribution release.

                                make dist
                                Does the work of make distclean, but constructs compressed tar files for distribution. You must have GNU automake to perform this function.

                                Building and Installing under Windows NT

                                Under Windows NT, you will need Visual C++ 4.0 or above, InstallShield SDK (comes with VC++), Perl5 and some version of the archiving program ZIP.

                                See the ./scripts/wininstall/readme.nt file for directions to compile the sources, build the libraries and link the executables. Initiate the build by running either bldrel.bat or blddbg.bat to compile all of the source and create an InstallShield based graphical installation package.

                                To install the executables, make sure that you are logged in as a system account, or one with administrator privileges such as the "administrator" account. As part of the build an InstallShield based graphical installer was created. Run \xntp\scripts\wininstall\intel\disk1\setup.exe to begin the installation. This installer will prompt for basic defaults, copy the binaries, install the service, and start it up. The other option is to run \xntp\scripts\wininstall\distrib\install.bat which will do the basic installation from the command line.


                                David L. Mills (mills@udel.edu)
                                07070100002cb4000081a400000064000000640000000132b6099500002117000000200000001b00000000000000000000001900000009reloc/html/clockopt.html Reference Clock Options

                                Reference Clock Options


                                Reference Clock Support

                                The NTP Version 3 daemon currently supports several 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 be found in the Reference Clock Drivers page. Additional information can be found in the pages referenced there, including the Debugging Hints for Reference Clock Drivers and How To Write a Reference Clock Driver pages. In many drivers, support for a PPS signal is available as described in Pulse-per-second (PPS) Signal Interfacing page. Many drivers support special line discipline/streams modules which can significantly improve the accuracy using the driver. These are described in the Line Disciplines and Streams Drivers page.

                                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 U.S. The interface between the computer and the timecode receiver is device dependent and will vary, but is often a serial port. A device driver specific to each clock must be selected and compiled in the distribution; however, most common radio, satellite and modem clocks are included by default. Note that an attempt to configure a reference clock when the driver has not been included or the hardware port has not been appropriately configured results in a scalding remark to the system log file, but is otherwise non hazardous.

                                For the purposes of configuration, xntpd treats reference clocks in a manner analogous to normal NTP peers as much as possible. Reference clocks are identified by a syntactically correct but invalid IP address, in order to distinguish them from normal NTP peers. Reference clock addresses are of the form 127.127.t.u, where t is an integer denoting the clock type and u indicates the type-specific unit number. The server command is used to configure a reference clock, where the address argument in that command is the clock address. The key, version and ttl options are not used for reference clock support. The mode option is added for reference clock support, as described below. The prefer option can be useful to persuade the server to cherish a reference clock with somewhat more enthusiasm than other reference clocks or peers. Further information on this option can be found in the Mitigation Rules and the prefer Keyword page. The minpoll and maxpoll options have meaning only for selected clock drivers. See the individual clock driver document pages for additional information.

                                The stratum of a reference clock is by default zero. Since the xntpd daemon adds one to the stratum of each peer, a primary server ordinarily displays stratum one. In order to provide engineered backups, it is often useful to specify the reference clock stratum as greater than zero. The stratum option is used for this purpose. Also, in cases involving both a reference clock and a pulse-per-second (PPS) discipline signal, it is useful to specify the reference clock identifier as other than the default, depending on the driver. The refid option is used for this purpose. Except where noted, these options apply to all clock drivers.

                                Reference Clock Commands

                                server 127.127.t.u [ prefer ] [ mode int ]
                                This command can be used to configure reference clocks in special ways. The options are interpreted as follows:
                                prefer
                                Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the Mitigation Rules and the prefer Keyword page for further information.

                                mode int
                                Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the parse drivers.

                                minpoll minpoll
                                This option specifies the minimum polling interval for NTP messages, in seconds to the power of two. The allowable range is 4 (16 s to 14 (16384 s) inclusive. The default is 6 (64 s) for all except modem reference clocks, where the default is 10 (1024 s).

                                maxpoll maxpoll
                                This option specifies the maximum polling interval for NTP messages, in seconds to the power of two. The allowable range is 4 (16 s to 14 (16384 s) inclusive. The default is 6 (64 s) for all except modem reference clocks, where the default is 14 (16384 s).
                                fudge 127.127.t.u [ time1 secs ] [ time2 secs ] [ stratum int ] [ refid string ] [ mode int ] [ flag1 0 | 1 ] [ flag2 0 | 1 ] [ flag3 0 | 1] [ flag4 0 | 1 ]
                                This command can be used to configure reference clocks in special ways. It must immediately follow the server command which configures the driver. Note that the same capability is possible at run time using the xntpdc program. The options are interpreted as follows:
                                time1 secs
                                Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular clock to agree with an external standard, such as a precision PPS signal. It also provides a way to correct a systematic error or bias due to serial port latencies, different cable lengths or receiver internal delay. The specified offset is in addition to the propagation delay provided by other means, such as internal DIPswitches. Where a calibration for an individual system and driver is available, an approximate correction is noted in the driver documentation pages.

                                time2 secs
                                Specifies a fixed-point decimal number in seconds, which is interpreted in a driver-dependent way. See the descriptions of specific drivers in the reference clock drivers page.

                                stratum int
                                Specifies the stratum number assigned to the driver, an integer between 0 and 15. This number overrides the default stratum number ordinarily assigned by the driver itself, usually zero.

                                refid string
                                Specifies an ASCII string of from one to four characters which defines the reference identifier used by the driver. This string overrides the default identifier ordinarily assigned by the driver itself.

                                mode int
                                Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the parse drivers.

                                flag1 flag2 flag3 flag4
                                These four flags are used for customizing the clock driver. The interpretation of these values, and whether they are used at all, is a function of the particular clock driver. However, by convention, and unless indicated otherwise, flag3 is used to attach the ppsclock streams module to the configured driver, while flag4 is used to enable recording verbose monitoring data to the clockstats file configured with the filegen command. Further information on the ppsclock streams module can be found in the Pulse-per-second (PPS) Signal Interfacing page. Further information on the filegen command can be found in the Monitoring Options page.


                                David L. Mills (mills@udel.edu)
                                07070100002cb5000081a400000064000000640000000132b60995000017ae000000200000001b00000000000000000000001700000009reloc/html/config.html Configuration Options

                                Configuration Options


                                Basic Configuration Options - the configure utility

                                The following options are for compiling and installing a working version of the xntp3 distribution. In most cases, the build process is completely automatic. In some cases where memory space is at a premium, or the binaries are to be installed in a different place, it is possible to tailor the configuration to remove such features as reference clock driver support, debugging support, and so forth.

                                Configuration options are specified as arguments to the configure script. Following is a summary of the current options:

                                Usage: configure [options] [host]
                                Options: [defaults in brackets after descriptions]

                                Configuration
                                
                                  --cache-file=FILE      cache test results in FILE
                                  --help                 print this message
                                  --no-create            do not create output files
                                  --quiet, --silent      do not print `checking...' messages
                                  --version              print the version of autoconf that created
                                                         configure
                                Directory and file names
                                
                                  --prefix=PREFIX        install architecture-independent files in
                                                         PREFIX [/usr/local]
                                  --exec-prefix=EPREFIX  install architecture-dependent files in EPREFIX
                                                         [same as prefix]
                                  --bindir=DIR           user executables in DIR [EPREFIX/bin]
                                  --sbindir=DIR          system admin executables in DIR [EPREFIX/sbin]
                                  --libexecdir=DIR       program executables in DIR [EPREFIX/libexec]
                                  --datadir=DIR          read-only architecture-independent data in DIR
                                                         [PREFIX/share]
                                  --sysconfdir=DIR       read-only single-machine data in DIR
                                                         [PREFIX/etc]
                                  --sharedstatedir=DIR   modifiable architecture-independent data in DIR
                                                         [PREFIX/com]
                                  --localstatedir=DIR    modifiable single-machine data in DIR
                                                         [PREFIX/var]
                                  --libdir=DIR           object code libraries in DIR [EPREFIX/lib]
                                  --includedir=DIR       C header files in DIR [PREFIX/include]
                                  --oldincludedir=DIR    C header files for non-gcc in DIR
                                                         [/usr/include]
                                  --infodir=DIR          info documentation in DIR [PREFIX/info]
                                  --mandir=DIR           man documentation in DIR [PREFIX/man]
                                  --srcdir=DIR           find the sources in DIR [configure dir or ..]
                                  --program-prefix=PREFIX prepend PREFIX to installed program names
                                  --program-suffix=SUFFIX append SUFFIX to installed program names
                                  --program-transform-name=PROGRAM run sed PROGRAM on installed program
                                                         names
                                Host type
                                
                                  --build=BUILD          configure for building on BUILD [BUILD=HOST]
                                  --host=HOST            configure for HOST [guessed]
                                  --target=TARGET        configure for TARGET [TARGET=HOST]
                                Features and packages
                                
                                  --disable-FEATURE      do not include FEATURE (same as --enable-
                                                         FEATURE=no)
                                  --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
                                  --with-PACKAGE[=ARG]   use PACKAGE [ARG=yes]
                                  --without-PACKAGE      do not use PACKAGE (same as --with-PACKAGE=no)
                                  --x-includes=DIR       X include files are in DIR
                                  --x-libraries=DIR      X library files are in DIR
                                
                                --enable- and --disable- with options recognized
                                
                                     debugging           Include debugging code [enable]
                                     gdt-surveying       Include GDT survey code [disable]
                                     md5                 Include support for MD5 keys [enable]
                                     des                 Include support for DES keys [enable]
                                     all-clocks          Include drivers for all reference clocks
                                                         [enable]
                                
                                  Radio Clocks (these are ordinarily enabled, if supported by the
                                                         machine and operating system)
                                
                                     ACTS                NIST dialup clock
                                     ARBITER             Arbiter 1088A/B GPS receiver
                                     AS2201              Austron 2200A or 2201A GPS receiver
                                     ATOM                ATOM clock
                                     BANCOMM             BANCOMM clock
                                     CHU                 CHU clock
                                     DATUM               Datum Programmable Time System
                                     DCF7000             ELV/DCF7000
                                     GPSVME              GPS-VME Clock
                                     HEATH               HeathKit GC-1000 Most Accurate Clock
                                     HOPF6021            HOPF6021 Radio Clock support
                                     HPGPS               HP 58503A GPS Time & Frequency receiver
                                     IRIG                IRIG (Audio) Clock
                                     LEITCH              Leitch CSD 5300 Master Clock System Driver
                                     LOCAL-CLOCK         Local Clock driver
                                     MEINBERG            Meinberg clocks
                                     MSFEES              MSFEES clock
                                     MOTO                Motorola GPS clock
                                     MX4200              MX4200 clock
                                     NMEA                NMEA GPS clock
                                     PARSE               PARSE clock code
                                     PST                 PST/Traconex 1020 WWV/H receiver
                                     PTBACTS             PTB dialup clock support
                                     RAWDCF              use raw DCF77 time code
                                     RCC8000             RCC8000 Radio Clock support
                                     SCHMID              SCHMID DCF77 clock support
                                     TRAK                TRAK 8810 GPS station clock
                                     TPRO                KSI/Odetics TPRO/S IRIG Interface
                                     TRIMTAIP            Trimble GPS/TAIP Protocol
                                     TRIMTSIP            Trimble GPS/TSIP Protocol
                                     TRUETIME            Kinemetrics/TrueTime (generic) receiver
                                     WWVB                Spectracom 8170 or Netclock/2 WWVB receiver
                                     USNO                US Naval Observatory dialup clock
                                
                                  Miscellany
                                
                                     accurate-adjtime    The adjtime() call is accurate
                                     kmem                Read kmem
                                     tick=VALUE          Force a value for 'tick'
                                     tickadj=VALUE       Force a value for 'tickadj'
                                     udp-wildcard        Use UDP wildcard delivery
                                     slew-always         Always slew the time
                                     step-slew           Step and slew the time
                                     ntpdate-step        If ntpdate should step the time
                                     hourly-todr-sync    If we should sync TODR hourly
                                


                                David L. Mills (mills@udel.edu)
                                07070100002cb6000081a400000064000000640000000132b60995000022cc000000200000001b00000000000000000000001800000009reloc/html/confopt.html Configuration Options

                                Configuration Options


                                Configuration Commands

                                peer address [ key key ] [ version version ] [ prefer ] [ minpoll minpoll [ maxpoll maxpoll ]
                                server address [ key key ] [ version version ] [ prefer ] [ mode mode ]
                                broadcast address [ key key ] [ version version ] [ ttl ttl ]
                                These three commands specify the time server name or address address to be used and the mode in which to operate. The address can be either a DNS name or a IP address in dotted-quad notation. The peer command specifies that the local server is to operate in symmetric active mode with the remote server. In this mode, the local server can be synchronized to the remote server and, in addition, the remote server can be synchronized by the local server. This is useful in a network of servers where, depending on various failure scenarios, either the local or remote server may be the better source of time.

                                The server command specifies that the local server is to operate in client mode with the specified remote server. In this mode, the local server can be synchronized to the remote server, but the remote server can never be synchronized to the local server.

                                The broadcast command specifies that the local server is to operate in broadcast mode, where the local server sends periodic broadcast messages to a client population at the broadcast/multicast address specified. Ordinarily, this specification applies only to the local server operating as a sender; for operation as a broadcast client, see the broadcastclient or multicastclient commands below. In this mode, address is usually the broadcast address on (one of) the local network(s) or a multicast address assigned to NTP. The Numbers Czar has assigned the address 224.0.1.1 to NTP; this is presently the only address that should be used. Note that the use of multicast features requires a multicast kernel, which is not yet ubiquitous in vendor products.

                                Options
                                key key
                                All packets sent to the address are to include authentication fields encrypted using the specified key identifier, which is an unsigned 32 bit integer. The default is to not include an encryption field.

                                version version
                                Specifies the version number to be used for outgoing NTP packets. Versions 1, 2, and 3 are the choices, with version 3 the default.

                                prefer
                                Marks the server as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the Mitigation Rules and the prefer Keyword page for further information.

                                ttl ttl
                                This option is used only with broadcast mode. It specifies the time- to-live ttl to use on multicast packets. Selection of the proper value, which defaults to 127, is something of a black art and must be coordinated with the network administrator(s).

                                minpoll minpoll
                                This option specifies the minimum polling interval for NTP messages, in seconds to the power of two. The allowable range is 4 (16 s to 14 (16384 s) inclusive. The default is 6 (64 s) for all except reference clocks.

                                maxpoll maxpoll
                                This option specifies the maximum polling interval for NTP messages, in seconds to the power of two. The allowable range is 4 (16 s to 14 (16384 s) inclusive. The default is 10 (1024 s) for all except reference clocks.

                                broadcastclient [ address ]
                                This command directs the local server to listen for broadcast messages at the broadcast address address of the local network. The default address is the subnet address with the host field bits set to ones. Upon hearing a broadcast message for the first time, the local server measures the nominal network delay using a brief client/server exchange with the remote server, then enters the broadcastclient mode, in which it listens for and synchronizes to succeeding broadcast messages. Note that, in order to avoid accidental or malicious disruption in this mode, both the local and remote servers should operate using authentication and the same trusted key and key identifier.

                                multicastclient [ address ] [ ... ]
                                This command directs the local server to listen for multicast messages at the group address(es) of the global network. The default address is that assigned by the Numbers Czar to NTP (224.0.1.1). This command operates in the same way as the broadcastclient command, but uses IP multicasting. Support for this command requires a multicast kernel.

                                driftfile driftfile
                                This command specifies the name of the file used to record the frequency offset of the local clock oscillator. If the file exists, it is read at startup in order to set the initial frequency offset and then updated once per hour with the current frequency offset computed by the daemon. If the file does not exist or this command is not given, the initial frequency offset is assumed zero. In this case, it may take some hours for the frequency to stabilize and the residual timing errors to subside.

                                The ntp.drift file format consists of a single line containing a single floating point number, which records the frequency offset measured in parts-per-million (PPM). That the file is updated once per hour by first writing the current drift value into a temporary file and then renaming this file to replace the old version. This implies that xntpd must have write permission for the directory the drift file is located in, and that file system links, symbolic or otherwise, should probably be avoided.

                                enable auth | bclient | monitor | pll | pps | stats
                                disable auth | bclient | monitor | pll | pps | stats
                                Provides a way to enable or disable various server options. Flags not mentioned are unaffected. Note that all of these flags can be controlled remotely using the xntpdc utility program.
                                auth
                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable.

                                bclient
                                Enables the server to listen for a message from a broadcast or multicast server, as in the multicastclient command with default address. The default for this flag is disable.

                                monitor
                                Enables the monitoring facility. See the xntpdc program and the monlist command or further information. The default for this flag is enable.

                                pll
                                Enables the server to adjust its local clock by means of NTP. If disabled, the local clock free-runs at its intrinsic time and frequency offset. This flag is useful in case the local clock is controlled by some other device or protocol and NTP is used only to provide synchronization to other clients. In this case, the local clock driver is used. See the Reference Clock Drivers page for further information. The default for this flag is enable.

                                pps
                                Enables the pulse-per-second (PPS) signal when frequency and time is disciplined by the precision time kernel modifications. See the A Kernel Model for Precision Timekeeping page for further information. The default for this flag is disable.

                                stats
                                Enables the statistics facility. See the Monitoring Options page for further information. The default for this flag is enable.

                                tick value
                                If no value for tick can be found from the kernel, use this value. This is the "normalized" value; if your system keeps tick in nanoseconds you must divide your value by 1000. The expected range of the value is between 900 and 11,000 (don't use the comma in the config file).

                                tickadj value
                                If no value for tickadj can be found in the kernel, use this value. The value must be "normalized"; if your system keeps tickadj in nanoseconds you must divide your value by 1000. The expected range of the value is between 1 and 50.

                                David L. Mills (mills@udel.edu)
                                07070100002cb7000081a400000064000000640000000132b60996000013fa000000200000001b00000000000000000000001a00000009reloc/html/copyright.html Copyright Notice

                                Copyright Notice


                                The following copyright notice applies to all files collectively called the Network Time Protocol Version 4 Distribution. Unless specifically declared otherwise in an individual file, this notice applies as if the text was explicitly included in the file.

                                
                                /***********************************************************************
                                 *                                                                     *
                                 * Copyright (c) David L. Mills 1992, 1993, 1994, 1995, 1996           *
                                 *                                                                     *
                                 * Permission to use, copy, modify, and distribute this software and   *
                                 * its documentation for any purpose and without fee is hereby         *
                                 * granted, provided that the above copyright notice appears in all    *
                                 * copies and that both the copyright notice and this permission       *
                                 * notice appear in supporting documentation, and that the name        *
                                 * University of Delaware not be used in advertising or publicity      *
                                 * pertaining to distribution of the software without specific,        *
                                 * written prior permission. The University of Delaware makes no       *
                                 * representations about the suitability this software for any         *
                                 * purpose. It is provided "as is" without express or implied          *
                                 * warranty.                                                           *
                                 **********************************************************************/
                                
                                

                                The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.

                                1. Mark Andrews <marka@syd.dms.csiro.au> Leitch atomic clock controller
                                2. Viraj Bais <vbais@mailman1.intel.com> and Clayton Kirkwood <kirkwood@striderfm.intel.com> port to WindowsNT 3.5
                                3. Karl Berry <karl@owl.HQ.ileaf.com> syslog to file option
                                4. Piete Brooks <Piete.Brooks@cl.cam.ac.uk> MSF clock driver, Trimble PARSE support
                                5. Steve Clift <clift@ml.csiro.au>: OMEGA clock driver
                                6. Torsten Duwe <duwe@immd4.informatik.uni-erlangen.de> Linux Port
                                7. John A. Dundas III <dundas@salt.jpl.nasa.gov> Apple A/UX port
                                8. Dennis Ferguson <dennis@mrbill.canet.ca> foundation code for NTP Version 2 as specified in RFC-1119
                                9. Glenn Hollinger <glenn@herald.usask.ca> GOES clock driver
                                10. Mike Iglesias <iglesias@uci.edu>: DEC Alpha port
                                11. Jim Jagielski <jim@jagubox.gsfc.nasa.gov> A/UX port
                                12. Jeff Johnson <jbj@chatham.usdesign.com> massive prototyping overhaul
                                13. William L. Jones <jones@hermes.chpc.utexas.edu> RS/6000 AIX modifications, HPUX modifications
                                14. Dave Katz <dkatz@cisco.com> RS/6000 AIX port
                                15. Craig Leres <leres@ee.lbl.gov> 4.4BSD port, ppsclock, Maganavox GPS clock driver
                                16. George Lindholm <lindholm@ucs.ubc.ca> SunOS 5.1 port
                                17. Louis A. Mamakos <louie@ni.umd.edu> MD5-based authentication
                                18. Lars H. Mathiesen <thorinn@diku.dk> adaptation of foundation code for Version 3 as specified in RFC-1305
                                19. David L. Mills <mills@udel.edu> Spectractom WWVB, Austron GPS, Arbiter GPS, Heath, ATOM, ACTS, KSI/Odetics IRIG-B clock drivers; PPS support
                                20. Wolfgang Moeller <moeller@gwdgv1.dnet.gwdg.de> VMS port
                                21. Jeffrey Mogul <mogul@pa.dec.com> ntptrace utility
                                22. Tom Moore <tmoore@fievel.daytonoh.ncr.com> i386 svr4 port
                                23. Rainer Pruy <Rainer.Pruy@informatik.uni-erlangen.de> monitoring/trap scripts, statistics file handling
                                24. Dirce Richards <dirce@zk3.dec.com> Digital UNIX V4.0 port
                                25. Nick Sayer <mrapple@quack.kfu.com> SunOS streams modules
                                26. Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> PARSE <GENERIC> driver (14 reference clocks), STREAMS modules for PARSE, support scripts, syslog cleanup
                                27. Ray Schnitzler <schnitz@unipress.com> Unixware1 port
                                28. Michael Shields <shields@tembel.org> USNO clock driver
                                29. Jeff Steinman <jss@pebbles.jpl.nasa.gov> Datum PTS clock driver
                                30. Harlan Stenn <harlan@pfcs.com> GNU automake/autoconfigure makeover
                                31. Kenneth Stone <ken@sdd.hp.com> HP-UX port
                                32. Ajit Thyagarajan <ajit@ee.udel.edu> IP multicast support
                                33. Tomoaki TSURUOKA <tsuruoka@nc.fukuoka-u.ac.jp> TRAK clock driver
                                34. Paul A Vixie <vixie@vix.com> TrueTime GPS driver, generic TrueTime clock driver
                                35. Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> Corrected and validated HTML documents according to the HTML DTD

                                David L. Mills <mills@udel.edu>
                                07070100002cb8000081a400000064000000640000000132b6099600003aa2000000200000001b00000000000000000000001600000009reloc/html/debug.html NTP Debugging Techniques

                                NTP Debugging Techniques


                                Once the NTP software distribution has been compiled and installed and the configuration file constructed, the next step is to verify correct operation and fix any bugs that may result. Usually, the command line that starts the daemon is included in the system startup file, so it is executed only at system boot time; however, the daemon can be stopped and restarted from root at any time. Usually, no command-line arguments are required, unless special actions described in the xntpd.8 man page are required. Once started, the daemon will begin sending messages, as specified in the configuration file, and interpreting received messages.

                                The best way to verify correct operation is using the ntpq and xntpdc utility programs, either on the server itself or from another machine elsewhere in the network. The ntpq program implements the management functions specified in Appendix A of the NTP specification RFC-1305, Appendix A . The xntpdc program implements additional functions not provided in the standard. Both programs can be used to inspect the state variables defined in the specification and, in the case of xntpdc, additional ones of interest. In addition, the xntpdc program can be used to selectively enable and disable some functions of the daemon while the daemon is running.

                                In extreme cases with elusive bugs, the daemon can operate in two modes, depending on the presence of the -d command-line debug switch. If not present, the daemon detaches from the controlling terminal and proceeds autonomously. If one or more -d switches are present, the daemon does not detach and generates special output useful for debugging. In general, interpretation of this output requires reference to the sources.

                                Some problems are immediately apparent when the daemon first starts running. The most common of these are the lack of a ntp (UDP port 123) in the host /etc/services file. Note that NTP does not use TCP in any form. Other problems are apparent in the system log file. The log file should show the startup banner, some cryptic initialization data, and the computed precision value. The next most common problem is incorrect DNS names. Check that each DNS name used in the configuration file responds to the Unix ping command.

                                When first started, the daemon normally polls the servers listed in the configuration file at 64-second intervals. In order to allow a sufficient number of samples for the NTP algorithms to reliably discriminate between correctly operating servers and possible intruders, at least four valid messages from at least one server is required before the daemon can not set the local clock. However, if the current local time is greater than 1000 seconds in error from the server time, the daemon will not set the local clock; instead, it will plant a message in the system log and shut down. It is necessary to set the local clock to within 1000 seconds first, either by a time-of-year hardware clock, by first using the ntpdate program or manually be eyeball and wristwatch.

                                After starting the daemon, run the ntpq program using the -n switch, which will avoid possible distractions due to name resolution problems. Use the pe command to display a billboard showing the status of configured peers and possibly other clients poking the daemon. After operating for a few minutes, the display should be something like:

                                ntpq>pe
                                  remote           refid      st when poll reach   delay  offset    disp
                                ========================================================================
                                +128.4.2.6    132.249.16.1     2  131  256  373     9.89   16.28   23.25
                                *128.4.1.20   .WWVB.           1  137  256  377   280.62   21.74   20.23
                                -128.8.2.88   128.8.10.1       2   49  128  376   294.14    5.94   17.47
                                +128.4.2.17   .WWVB.           1  173  256  377   279.95   20.56   16.40
                                

                                The host addresses shown in the remote column should agree with the DNS entries in the configuration file, plus any peers not mentioned in the file at the same or lower than your stratum that happen to be configured to peer with you. Be prepared for surprises in cases where the peer has multiple addresses or multiple names. The refid entry shows the current source of synchronization for each peer, while the st reveals its stratum and the poll entry the polling interval, in seconds. The when entry shows the time since the peer was last heard, normally in seconds, while the reach entry shows the status of the reachability register (see RFC-1305), which is in octal format. The remaining entries show the latest delay, offset and dispersion computed for the peer, in milliseconds.

                                The tattletale character at the left margin displays the synchronization status of each peer. The currently selected peer is marked *, while additional peers designated acceptable for synchronization, but not currently selected, are marked +. Peers marked * and + are included in a weighted average computation to set the local clock; the data produced by peers marked with other symbols are discarded. See the ntpq documentation for the meaning of these symbols.

                                Additional details for each peer separately can be determined by the following procedure. First, use the as command to display an index of association identifiers, such as

                                ntpq>as
                                ind assID status  conf reach auth condition  last_event cnt
                                ===========================================================
                                  1 11670  7414    no   yes   ok    synchr.   reachable  1
                                  2 11673  7614    no   yes   ok   sys.peer   reachable  1
                                  3 11833  7314    no   yes   ok    outlyer   reachable  1
                                  4 11868  7414    no   yes   ok    synchr.   reachable  1
                                

                                Each line in this billboard is associated with the corresponding line the pe billboard above. Next, use the rv command and the respective identifier to display a detailed synopsis of the selected peer, such as

                                ntpq>rv 11670
                                status=7414 reach, auth, sel_sync, 1 event, event_reach
                                srcadr=128.4.2.6, srcport=123, dstadr=128.4.2.7, dstport=123, keyid=1,
                                stratum=2, precision=-10, rootdelay=362.00, rootdispersion=21.99,
                                refid=132.249.16.1,
                                reftime=af00bb44.849b0000  Fri, Jan 15 1993  4:25:40.517,
                                delay=    9.89, offset=   16.28, dispersion=23.25, reach=373, valid=8,
                                hmode=2, pmode=1, hpoll=8, ppoll=10, leap=00, flash=0x0,
                                org=af00bb48.31a90000  Fri, Jan 15 1993  4:25:44.193,
                                rec=af00bb48.305e3000  Fri, Jan 15 1993  4:25:44.188,
                                xmt=af00bb1e.16689000  Fri, Jan 15 1993  4:25:02.087,
                                filtdelay=  16.40   9.89 140.08   9.63   9.72   9.22  10.79 122.99,
                                filtoffset= 13.24  16.28 -49.19  16.04  16.83  16.49  16.95 -39.43,
                                filterror=  16.27  20.17  27.98  31.89  35.80  39.70  43.61  47.52
                                

                                A detailed explanation of the fields in this billboard are beyond the scope of this discussion; however, most variables defined in the specification RFC-1305 can be found. The most useful portion for debugging is the last three lines, which give the roundtrip delay, clock offset and dispersion for each of the last eight measurement rounds, all in milliseconds. Note that the dispersion, which is an estimate of the error, increases as the age of the sample increases. From these data, it is usually possible to determine the incidence of severe packet loss, network congestion, and unstable local clock oscillators. There are no hard and fast rules here, since every case is unique; however, if one or more of the rounds show zeros, or if the clock offset changes dramatically in the same direction for each round, cause for alarm exists.

                                Finally, the state of the local clock can be determined using the rv command (without the argument), such as

                                ntpq>rv
                                status=0664 leap_none, sync_ntp, 6 events, event_peer/strat_chg
                                system="UNIX", leap=00, stratum=2, rootdelay=280.62,
                                rootdispersion=45.26, peer=11673, refid=128.4.1.20,
                                reftime=af00bb42.56111000  Fri, Jan 15 1993  4:25:38.336, poll=8,
                                clock=af00bbcd.8a5de000  Fri, Jan 15 1993  4:27:57.540, phase=21.147,
                                freq=13319.46, compliance=2
                                

                                The most useful data in this billboard show when the clock was last adjusted reftime, together with its status and most recent exception event. An explanation of these data is in the specification RFC-1305.

                                When nothing seems to happen in the pe billboard after some minutes, there may be a network problem. The most common network problem is an access controlled router on the path to the selected peer. No known public NTP time server selectively restricts access at this time, although this may change in future; however, many private networks do. It also may be the case that the server is down or running in unsynchronized mode due to a local problem. Use the ntpq program to spy on its own variables in the same way you can spy on your own.

                                Once the daemon has set the local clock, it will continuously track the discrepancy between local time and NTP time and adjust the local clock accordingly. There are two components of this adjustment, time and frequency. These adjustments are automatically determined by the clock discipline algorithm, which functions as a hybrid phase/frequency feedback loop. The behavior of this algorithm is carefully controlled to minimize residual errors due to network jitter and frequency variations of the local clock hardware oscillator that normally occur in practice. However, when started for the first time, the algorithm may take some time to converge on the intrinsic frequency error of the host machine.

                                It has sometimes been the experience that the local clock oscillator frequency error is too large for the NTP discipline algorithm, which can correct frequency errors as large as 30 seconds per day. There are two possibilities that may result in this problem. First, the hardware time- of-year clock chip must be disabled when using NTP, since this can destabilize the discipline process. This is usually done using the tickadj program and the -s command line argument, but other means may be necessary. For instance, in the Sun Solaris kernel, this must be done using a command in the system startup file.

                                Normally, the daemon will adjust the local clock in small steps in such a way that system and user programs are unaware of its operation. The adjustment process operates continuously as long as the apparent clock error exceeds 128 milliseconds, which for most Internet paths is a quite rare event. If the event is simply an outlyer due to an occasional network delay spike, the correction is simply discarded; however, if the apparent time error persists for an interval of about 20 minutes, the local clock is stepped to the new value (as an option, the daemon can be compiled to slew at an accelerated rate to the new value, rather than be stepped). This behavior is designed to resist errors due to severely congested network paths, as well as errors due to confused radio clocks upon the epoch of a leap second.

                                Debugging Checklist

                                If the ntpq or xntpdcxntpdc programs do not show that messages are being received by the daemon or that received messages do not result in correct synchronization, verify the following:

                                1. Verify the /etc/services file host machine is configured to accept UDP packets on the NTP port 123. NTP is specifically designed to use UDP and does not respond to TCP.

                                2. Check the system log for xntpd messages about configuration errors, name-lookup failures or initialization problems.

                                3. Using the xntpdc program and iostats command, verify that the received packets and packets sent counters are incrementing. If the packets send counter does not increment and the configuration file includes designated servers, something may be wrong in the network configuration of the xntpd host. If this counter does increment and packets are actually being sent to the network, but the received packets counter does not increment, something may be wrong in the network or the server may not be responding.

                                4. If both the packets sent counter and received packets counter do increment, but the rec timestamp in the pe billboard shows a date in 1972, received packets are probably being discarded for some reason. There is a handy, undocumented state variable flash visible in the pebillboard. The value is in hex and normally has the value zero (OK). However, if something is wrong, the bits of this variable, reading from the right, correspond to the sanity checks listed in Section 3.4.3 of the NTP specification RFC-1305. A bit other than zero indicates the associated sanity check failed.

                                5. If the org, rec and xmt timestamps in the pe billboard appear current, but the local clock is not set, as indicated by a stratum number less than 16 in the rv command without arguments, verify that valid clock offset, roundtrip delay and dispersion are displayed for at least one peer. The clock offset should be less than 1000 seconds, the roundtrip delay less than one second and the dispersion less than one second.

                                6. While the algorithm can tolerate a relatively large frequency error (over 350 parts per million or 30 seconds per day), various configuration errors (and in some cases kernel bugs) can exceed this tolerance, leading to erratic behavior. This can result in frequent loss of synchronization, together with wildly swinging offsets. Use the xntpdc program (or temporary configuration file) and disable pll command to prevent the xntpd daemon from setting the clock. Using the ntpq or xntpdc programs, watch the apparent offset as it varies over time to determine the intrinsic frequency error. If the error increases by more than 22 milliseconds per 64-second poll interval, the intrinsic frequency must be reduced by some means. The easiest way to do this is with the tickadj program and the -t command line argument.

                                David L. Mills (mills@udel.edu)
                                07070100002cb9000081a400000064000000640000000132b6099600001733000000200000001b00000000000000000000001800000009reloc/html/driver1.html Undisciplined Local Clock

                                Undisciplined Local Clock


                                Synopsis

                                Address: 127.127.1.u
                                Reference ID: LCL
                                Driver ID: LOCAL

                                Description

                                This is a hack to allow a machine to use its own system clock as a reference clock, i.e., to free-run using no outside clock discipline source. This is useful if NTP is to be used in an isolated environment with no radio clock or NIST modem available. Pick a machine that has a good clock oscillator (Digital machines are good, Sun machines are not) and configure it with this driver. Set the clock using the best means available, like eyeball-and-wristwatch. Then, point all the other machines at this one or use broadcast (not multicast) mode to distribute time.

                                Another application for this driver is if a particular server clock is to be used as the clock of last resort when all other normal synchronization sources have gone away. This is especially useful if that server has an ovenized oscillator. For this you would configure this driver at a stratum greater than any other likely sources of time (say 3 or 4) to prevent the server taking over when legitimate sources are still available.

                                A third application for this driver is when an external discipline source is available, such as the NIST lockclock program, which synchronizes the local clock via a telephone modem and the NIST Automated Computer Time Service (ACTS), or the Digital Time Synchronization Service (DTSS), which runs on DCE machines. In this case the stratum should be set at zero, indicating a bona fide stratum-1 source. Exercise some caution with this, since there is no easy way to telegraph via NTP that something might be wrong in the discipline source itself. In the case of DTSS, the local clock can have a rather large jitter, depending on the interval between corrections and the intrinsic frequency error of the clock oscillator. In extreme cases, this can cause clients to exceed the 128-ms slew window and drop off the NTP subnet. In the default mode the behavior of the clock selection algorithm is modified when this driver is in use. The algorithm is designed so that this driver will never be selected unless no other discipline source is available. This can be overridden with the prefer keyword of the server configuration command, in which case only this driver will be selected for synchronization and all other discipline sources will be ignored. This behavior is intended for use when an external discipline source controls the system clock. See the Mitigation Rules and the prefer Keyword page for a detailed description of the finicky behavior.

                                The stratum for this driver is set at 3 by default, but can be changed by the fudge configuration command and/or the xntpdc utility. The reference ID is LCL by default, but can be changed using the same mechanisms. *NEVER* configure this driver to operate at a stratum which might possibly disrupt a client with access to a bona fide primary server, unless the local clock oscillator is reliably disciplined by another source. *NEVER NEVER* configure a server which might devolve to an undisciplined local clock to use multicast mode.

                                This driver provides a mechanism to trim the local clock in both time and frequency, as well as a way to manipulate the leap bits. The fudge time1 parameter adjusts the time (in seconds) and the fudge time2 parameter adjusts the frequency (in parts per million). Both parameters are additive and operate only once; that is, each command (as from xntpdc) adds signed increments in time or frequency to the nominal local clock time and frequency. (Note: The frequency cannot be changed when the kernel modifications are in use - see the A Kernel Model for Precision Timekeeping page.) The fudge flag1 and fudge flag2 flags set the corresponding leap bits; for example, setting only flag1 causes a leap second to be inserted at the end of the UTC day and setting only flag2 causes a leap second to be deleted at the end of the UTC day. Setting both flags causes the local clock driver to appear unsynchronized, which may be a blessing if a server violates the above rules, since xntpdc can turn the bugger off. These bits are not reset automatically when the leap takes place; they must be turned off manually after the leap event and before the next UTC day.

                                Monitor Data

                                No filegen clockstats monitor data are produced by this driver.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Specifies the frequency offset calibration factor, in parts per million, with default 0.0.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 3.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default LCL.

                                flag1 0 | 1
                                Specifies a leap second to be inserted at the end of the current UTC day.

                                flag2 0 | 1
                                Specifies a leap second to be deleted at the end of the current UTC day.

                                flag3 0 | 1
                                Not used by this driver.

                                flag4 0 | 1
                                Not used by this driver.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cba000081a400000064000000640000000132b6099600000ce7000000200000001b00000000000000000000001900000009reloc/html/driver10.html Austron 2200A/2201A GPS Receivers

                                Austron 2200A/2201A GPS Receivers


                                Synopsis

                                Address: 127.127.10.u
                                Reference ID: GPS
                                Driver ID: GPS-AS2201
                                Serial Port: /dev/gpsu; 9600 baud, 8-bits, no parity
                                Features: tty_clk, ppsclock (required)

                                Description

                                This driver supports the Austron 2200A/2201A GPS/LORAN Synchronized Clock and Timing Receiver connected via a serial port. It supports several special features of the clock, including the Input Buffer Module, Output Buffer Module, IRIG-B Interface Module and LORAN Assist Module. It requires the RS232 Serial Interface module for communication with the driver. It requires the ppsclock streams module described in the Line Disciplines and Streams Drivers page. It also requires a gadget box and 1-PPS level converter, such as described in the Pulse-per-second (PPS) Signal Interfacing page.

                                This receiver is capable of a comprehensive and large volume of statistics and operational data. The specific data collection commands and attributes are embedded in the driver source code; however, the collection process can be enabled or disabled using the flag4 flag. If set, collection is enabled; if not, which is the default, it is disabled. A comprehensive suite of data reduction and summary scripts is in the ./scripts/stats directory of the xntp3 distribution.

                                To achieve the high accuracy this device provides, it is necessary to use the ppsclock feature of the xntp3 program distribution or, alternatively, to install the kernel modifications described in the README.kern. The clock can be wired to provide time to a single CPU or bussed in parallel to several CPUs, with one CPU controlling the receiver and the others just listening. Fair accuracy can be achieved in the single-CPU configuration without use of the 1-pps signal, but in multiple CPU configurations accuracy is severely degraded without it.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default GPS.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cbb000081a400000064000000640000000132b6099600001209000000200000001b00000000000000000000001900000009reloc/html/driver11.html Arbiter 1088A/B GPS Receiver

                                Arbiter 1088A/B GPS Receiver


                                Synopsis

                                Address: 127.127.11.u
                                Reference ID: GPS
                                Driver ID: GPS_ARBITER
                                Serial Port: /dev/gpsu; 9600 baud, 8-bits, no parity
                                Features: tty_clk

                                Description

                                This driver supports the Arbiter 1088A/B Satellite Controlled Clock. The claimed accuracy of this clock is 100 ns relative to the PPS output when receiving four or more satellites.

                                The receiver should be configured before starting the NTP daemon, in order to establish reliable position and operating conditions. It does not initiate surveying or hold mode. For use with NTP, the daylight savings time feature should be disables (D0 command) and the broadcast mode set to operate in UTC (BU command).

                                The timecode format supported by this driver is selected by the poll sequence B5, which initiates a line in the following format to be repeated once per second until turned off by the B0 command.

                                Format B5 (24 ASCII printing characters):

                                <cr><lf>i yy ddd hh:mm:ss.000bbb
                                
                                on-time = <cr>
                                i = synchronization flag (' ' = locked, '?' = unlocked)
                                yy = year of century
                                ddd = day of year
                                hh:mm:ss = hours, minutes, seconds
                                .000 = fraction of second (not used)
                                bbb = tailing spaces for fill
                                

                                The alarm condition is indicated by a '?' at i, which indicates the receiver is not synchronized. In normal operation, a line consisting of the timecode followed by the time quality character (TQ) followed by the receiver status string (SR) is written to the clockstats file.

                                The time quality character is encoded in IEEE P1344 standard:

                                Format TQ (IEEE P1344 estimated worst-case time quality)

                                0       clock locked, maximum accuracy
                                F       clock failure, time not reliable
                                4       clock unlocked, accuracy < 1 us
                                5       clock unlocked, accuracy < 10 us
                                6       clock unlocked, accuracy < 100 us
                                7       clock unlocked, accuracy < 1 ms
                                8       clock unlocked, accuracy < 10 ms
                                9       clock unlocked, accuracy < 100 ms
                                A       clock unlocked, accuracy < 1 s
                                B       clock unlocked, accuracy < 10 s
                                

                                The status string is encoded as follows:

                                Format SR (25 ASCII printing characters)

                                V=vv S=ss T=t P=pdop E=ee
                                
                                vv = satellites visible
                                ss = relative signal strength
                                t = satellites tracked
                                pdop = position dilution of precision (meters)
                                ee = hardware errors
                                

                                A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself.

                                Monitor Data

                                The driver writes each timecode as received to the clockstats file. When enabled by the flag4 fudge flag, an additional line containing the latitude, longitude, elevation and optional deviation data is written to the clockstats file. The deviation data operates with an external pulse-per-second (PPS) input, such as a cesium oscillator or another radio clock. The PPS input should be connected to the B event channel and the radio initialized for deviation data on that channel. The deviation data consists of the mean offset and standard deviation of the external PPS signal relative the GPS signal, both in microseconds over the last 16 seconds.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0065.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default GPS.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable extended clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cbc000081a400000064000000640000000132b6099600000954000000200000001b00000000000000000000001900000009reloc/html/driver12.html KSI/Odetics TPRO/S IRIG Interface

                                KSI/Odetics TPRO/S IRIG Interface


                                Synopsis

                                Address: 127.127.12.u
                                Reference ID: IRIG
                                Driver ID: IRIG-TPRO
                                TPRO Device: /ev/tprou
                                Requires: KSI/Odetics device driver, /usr/include/sys/tpro.h header file

                                Description

                                This driver supports the KSI/Odetics TPRO and TPRO-SAT IRIG-B Decoder, which is a module connected directly to the SBus of a Sun workstation. The module works with the IRIG-B signal generated by several radio clocks, including those made by Arbiter, Austron, Odetics, Spectracom and TrueTime, among others, although it is generally an add- on option. In the case of the TPRO-SAT, the module is an integral part of a GPS receiver, which serves as the primary timing source.

                                Using the TPRO interface as a NTP reference clock provides precision time only to xntpd and its clients. With suitable kernel modifications, it is possible to use the TPRO as the CPU system clock, avoiding errors introduced by the CPU clock oscillator wander. See the A Kernel Model for Precision Timekeeping page for further details.

                                Monitor Data

                                The driver writes each timecode as received to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .00037.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default IRIG.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Not used by this driver.

                                flag4 0 | 1
                                Not used by this driver.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cbd000081a400000064000000640000000132b6099600002649000000200000001b00000000000000000000001900000009reloc/html/driver18.html NIST Modem Time Service

                                NIST Modem Time Service


                                Synopsis

                                Address: 127.127.18.u
                                Reference ID: ACTS
                                Driver ID: NIST_ACTS
                                Serial Port: /dev/actsu; 1200 baud, 8-bits, no parity
                                Features: tty_clk
                                Requires: /usr/include/sys/termios.h header file with modem control

                                Description

                                This driver supports the NIST Automated Computer Time Service (ACTS). It periodically dials a prespecified telephone number, receives the NIST timecode data and calculates the local clock correction. It designed primarily for use when neither a radio clock nor connectivity to Internet time servers is available. For the best accuracy, the individual telephone line/modem delay needs to be calibrated using outside sources.

                                The ACTS is located at NIST Boulder, CO, telephone 303 494 4774. A toll call from Newark, DE, costs between three and four cents, although it is not clear what carrier and time of day discounts apply. The modem dial string will differ depending on local telephone configuration, etc., and is specified by the phone command in the configuration file. The argument to this command is an AT command for a Hayes compatible modem.

                                The driver can operate in either of two modes, as determined by the mode parameter in the server configuration command. In mode 0 the driver operates continuously at intervals determined by the fudge time1 parameter, as described above. In mode 1 the driver is enabled only when no other sources of synchronization are available and when we have gone more than MAXOUTAGE (3600 s) since last synchronized by other sources of synchronization.

                                The accuracy produced by this driver should be in the range of a millisecond or two, but may need correction due to the delay characteristics of the individual modem involved. For undetermined reasons, some modems work with the ACTS echo-delay measurement scheme and some don't. This driver tries to do the best it can with what it gets. Initial experiments with a Practical Peripherals 9600SA modem here in Delaware suggest an accuracy of a millisecond or two can be achieved without the scheme by using a fudge time1 value of 65.0 ms. In either case, the dispersion for a single call involving ten samples is about 1.3 ms.

                                For reliable call management, this driver requires a 1200-bps modem with a Hayes-compatible command set and control over the modem data terminal ready (DTR) control line. Present restrictions require the use of a POSIX-compatible programming interface, although other interfaces may work as well. The ACTS telephone number and modem setup string are hard-coded in the driver and may require changes for nonstandard modems or special circumstances.

                                The fudge time1 parameter represents a propagation-delay correction factor which is added to the value computed by ACTS when the echo-delay scheme is used. This scheme does not work with all modems; for those that don't, fudge flag2 should be set to disable the feature. In this case the fudge time1 parameter represents the total propagation delay due to all causes and must be determined by external calibration.

                                The ACTS call interval is determined by a counter initially set to the fudge time2 parameter. At each poll interval, minpoll (usually 64 s) is subtracted from the counter. When the counter is equal to or less than zero, the fudge flag1 is set, which causes up to three call attempts to be made to ACTS. The fudge flag1 is reset after a valid clock update has been determined or by a device fault, timeout or manually using xntpdc. After a valid clock update, the counter is reset for the next interval. Setting the fudge time2 parameter to zero disables automatic call attempts. Manual call attempts can be made at any time by setting fudge flag1 using xntpdc.

                                The NIST timecode message is transmitted at 1200 bps in the following format:

                                
                                jjjjj yy-mm-dd hh:mm:ss tt l uuu mmmmm UTC(NIST) *
                                
                                jjjjj = modified Julian day
                                yy-mm-dd = year, month, day
                                hh:mm:ss = hours, minutes, seconds
                                tt = DST indicator (see driver listing)
                                l = leap-second warning (see driver listing)
                                uuu = DUT1 correction (see driver listing)
                                mmmmm = modem calibration (see driver listing)
                                on-time = '*'
                                
                                

                                The timecode message is transmitted continuously after a signon banner, which this driver ignores. The driver also ignores all but the yy-mm-dd, hh:mm:ss and on-time character '*' fields, although it checks the format of all fields of the message. A timestamp is captured at the '*' character, as required by the ACTS specification, and used as the reference time of the timecode. If a message with an on-time character of '#' is received, the driver updates the propagation delay. The driver disconnects when (a) ten valid messages have been received, (b) no message has been received for 15 s, (c) an on-time character of '#' is received. These messages are processed by a trimmed-mean filter to reduce timing noise and then by the usual NTP algorithms to develop the clock correction.

                                Since the accumulated error grows with the interval between calls, it is important that the intrinsic frequency error be minimized. This can be done by observing difference in offsets between two calls placed some hours apart and calculating the uncorrected frequency error. This error, as a fixed-point value in parts-per-million, should be installed in the ntp.drift file before the daemon is started. Some experimentation may be necessary in order to reduce the intrinsic frequency error to the order of 1 ppm.

                                The behavior of the clock selection algorithm is modified when this driver is in use. The algorithm is designed so that this driver will never be selected unless no other discipline source is available. This can be overridden with the prefer keyword of the server configuration command, in which case only this driver will be selected for synchronization and all other discipline sources will be ignored.

                                Unlike other drivers, each ACTS call generates one clock correction and that correction is processed immediately. There is no wait to allow the clock filter to accumulate samples. In addition, the watchdog timeout of the local clock algorithm is disabled, so that a correction received from this driver that exceeds CLOCK_MAX (128 ms) causes an immediate step/slew.

                                Since the interval between updates can be much longer than used with ordinary NTP peers, the local clock procedure has been modified to operate in either of two modes, depending on whether the interval between updates is less than or greater than CLOCK_MAXSEC (1200 s). If less than this value, the local clock procedure operates using the standard NTP phase-lock loop as with other NTP peers. If greater than this value, the procedure operates using a modified frequency-lock loop suggested by Judah Levine in his lockclock algorithm designed specifically for ACTS.

                                Call Management

                                Since ACTS will be a toll call in most areas of the country, it is necessary to carefully manage the call frequency. This can be done in two ways, by specifying the interval between calls, or by setting a flag bit manually or via a cron job. The call interval is determined by a counter initially set to the fudge time2 parameter. At each poll interval, minpoll (usually 64 s) is subtracted from the counter. When the counter is equal to or less than zero, the fudge flag1 is set, which causes up to three call attempts to be made. The fudge flag1 is reset after ten offset samples have been determined in a single call or by a device fault, timeout or manually using xntpdc. Upon successful completion of a call, the eight samples have been shifted into the clock filter, the local clock updated and the counter reset for the next interval. Setting the fudge time2 parameter to zero disables automatic call attempts.

                                Manual call attempts can be made at any time by setting fudge flag1 using xntpdc. For example, the xntpdc command

                                
                                fudge 127.127.18.1 flags 1
                                
                                

                                will ask for a key identifier and password and, if authenticated by the server, will set flag1. There may be a short delay until the expiration of the current poll timeout.

                                The flag1 can be set from a cron job in the following way. Construct a file with contents

                                keyid 11
                                passwd dialup
                                fudge 127.127.18.1 flags 1
                                quit
                                
                                

                                Then, run the following program at specified times as required.

                                /usr/local/bin/xntpdc <file
                                

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default ACTS.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cbe000081a400000064000000640000000132b6099600000e43000000200000001b00000000000000000000001900000009reloc/html/driver19.html Heath WWV/WWVH Receiver

                                Heath WWV/WWVH Receiver


                                Synopsis

                                Address: 127.127.19.u
                                Reference ID: WWV
                                Driver ID: WWV_HEATH
                                Serial Port: /dev/heathu; 1200 baud, 8-bits, no parity
                                Features: tty_clk
                                Requires: /usr/include/sys/termios.h header file with modem control

                                Description

                                This driver supports the Heath GC-1000 Most Accurate Clock, with RS232C Output Accessory. This is a WWV/WWVH receiver somewhat less robust than other supported receivers. Its claimed accuracy is 100 ms when actually synchronized to the broadcast signal, but this doesn't happen even most of the time, due to propagation conditions, ambient noise sources, etc. When not synchronized, the accuracy is at the whim of the internal clock oscillator, which can wander into the sunset without warning. Since the indicated precision is 100 ms, expect a host synchronized only to this thing to wander to and fro, occasionally being rudely stepped when the offset exceeds the default CLOCK_MAX of 128 ms.

                                The internal DIPswitches should be set to operate at 1200 baud in MANUAL mode and the current year. The external DIPswitches should be set to GMT and 24-hour format. It is very important that the year be set correctly in the DIPswitches; otherwise, the day of year will be incorrect after 28 April of a normal or leap year.

                                In MANUAL mode the clock responds to a rising edge of the request to send (RTS) modem control line by sending the timecode. Therefore, it is necessary that the operating system implement the TIOCMBIC and TIOCMBIS ioctl system calls and TIOCM_RTS control bit. Present restrictions require the use of a POSIX-compatible programming interface, although other interfaces may work as well.

                                The clock message consists of 23 ASCII printing characters in the following format:

                                hh:mm:ss.f     dd/mm/yr<cr>
                                
                                hh:mm:ss.f = hours, minutes, seconds
                                f = deciseconds ('?' when out of spec)
                                dd/mm/yr = day, month, year
                                

                                The alarm condition is indicated by '?', rather than a digit, at A. Note that 0?:??:??.? is displayed before synchronization is first established and hh:mm:ss.? once synchronization is established and then lost again for about a day.

                                A fudge time1 value of .07 s appears to center the clock offset residuals.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default WWV.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cbf000081a400000064000000640000000132b6099600000f75000000200000001b00000000000000000000001800000009reloc/html/driver2.html Trak 8820 GPS Receiver

                                Trak 8820 GPS Receiver


                                Synopsis

                                Address: 127.127.2.u
                                Reference ID: GPS
                                Driver ID: GPS-TRAK
                                Serial Port: /dev/traku; 9600 baud, 8-bits, no parity
                                Features: tty_clk, ppsclock

                                Description

                                This driver supports the Trak 8820 GPS Station Clock. The claimed accuracy at the 1-PPS output is 200-300 ns relative to the broadcast signal; however, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.

                                For best accuracy, this radio requires the tty_clk line discipline, which captures a timestamp at the * on-time character of the timecode. Using this discipline the jitter is in the order of 1 ms and systematic error about 0.5 ms. If unavailable, the buffer timestamp is used, which is captured at the \r ending the timecode message. This introduces a systematic error of 23 character times, or about 24 ms at 9600 bps, together with a jitter well over 8 ms on Sun IPC-class machines.

                                Using the menus, the radio should be set for 9600 bps, one stop bit and no parity. It should be set to operate in computer (no echo) mode. The timecode format includes neither the year nor leap-second warning.

                                In operation, this driver sends a RQTS\r request to the radio at initialization in order to put it in continuous time output mode. The radio then sends the following message once each second:

                                *RQTS U,ddd:hh:mm:ss.0,q<cr><lf>
                                
                                on-time = '*'
                                ddd = day of year
                                hh:mm:ss = hours, minutes, seconds
                                q = quality indicator (phase error), 0-6:
                                     0 > 20 us
                                     6 > 10 us
                                     5 > 1 us
                                     4 > 100 ns
                                     3 > 10 ns
                                     2 < 10 ns
                                

                                The alarm condition is indicated by 0 at Q, which means the radio has a phase error greater than 20 us relative to the broadcast time. The absence of year, DST and leap-second warning in this format is also alarmed.

                                The continuous time mode is disabled using the RQTX\r request, following which the radio sends a RQTX DONE<cr><lf> response. In the normal mode, other control and status requests are effective, including the leap-second status request RQLS<cr>. The radio responds with RQLS yy,mm,dd<cr><lf>, where yy,mm,dd are the year, month and day. Presumably, this gives the epoch of the next leap second, RQLS 00,00,00 if none is specified in the GPS message. Specified in this form, the information is generally useless and is ignored by the driver.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default TRAK.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Not used by this driver.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc0000081a400000064000000640000000132b609960000115e000000200000001b00000000000000000000001900000009reloc/html/driver22.html PPS Clock Discipline

                                PPS Clock Discipline


                                Synopsis

                                Address: 127.127.22.u
                                Reference ID: ATOM
                                Driver ID: ATOM-PPS
                                Serial Port: /dev/ppsu; 9600 baud, 8-bits, no parity
                                Features: tty_clk, ppsclock

                                Description

                                This driver furnishes an interface for pulse-per-second (PPS) signals produced by a cesium clock, radio clock or related equipment. It can be used to remove accumulated jitter and retime a secondary server when synchronized to a primary server over a congested, wide-area network and before redistributing the time to local clients.

                                In order for this driver to work, the local clock must be set to within +-500 ms by another means, such as a radio clock or NTP itself. The PPS signal is connected via a serial port and gadget box consisting of a one-shot and RS232 level converter. When operated at 38.4 kbps with a SPARCstation IPC, this arrangement has a worst-case jitter less than 26 us.

                                There are three ways in which this driver can be used. The first way uses the LDISC_CLKPPS line discipline and works only for the baseboard serial ports of the Sun SPARCstation running SunOS 4.x. In order to use this option, the -DPPS flag must be included in the DEFS_LOCAL line of the distribution configuration file ./Config.local. The PPS signal is connected via the gadget box to the carrier detect (DCD) line of a serial port. The signal is activated by a fudge flag3 1 command following the server command in the configuration file. This causes the ppsclock streams module to be configured for that port and to capture a timestamp at the on-time transition of the PPS signal. This driver then reads the timestamp directly by a designated ioctl() system call. This provides the most accurate time and least jitter of any other scheme. There is no need to configure a dedicated device for this purpose, which ordinarily is the device used for the associated radio clock.

                                The second way uses the LDISC_CLKPPS line discipline and works for any architecture supporting a serial port. In order to use this option, the -DCLK flag must be included in the DEFS_LOCAL line of the distribution configuration file ./Config.local. If after a few seconds this driver finds no ppsclock module configured, it attempts to open a serial port device /dev/pps%d, where %d is the unit number, and assign the LDISC_CLKPPS line discipline to it. If the line discipline fails, no harm is done except the accuracy is reduced somewhat. The pulse generator in the gadget box must be adjusted to produce a start bit of length 26 usec at 38400 bps. Used with the LDISC_CLKPPS line discipline, this produces an ASCII DEL character ('\377') followed by a timestamp at the on-time transition of the PPS signal.

                                The third way involves an auxiliary radio clock driver which calls the PPS driver with a timestamp captured by that driver. This use is documented in the source code for the driver(s) involved.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. This parameter can be used to compensate for the UART and OS delays. Allow about 247 us for UART delays at 38400 bps and about 1 ms for SunOS streams nonsense.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default ATOM.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Not used by this driver.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc1000081a400000064000000640000000132b609960000067a000000200000001b00000000000000000000001900000009reloc/html/driver23.html PTB Modem Time Service

                                PTB Modem Time Service


                                Synopsis

                                Address: 127.127.23.u
                                Reference ID: TPTB
                                Driver ID: PTP-ACTS
                                Serial Port: /dev/ptbu; 1200 baud, 8-bits, no parity
                                Features: none
                                Requires: /usr/include/sys/termios.h header file with modem control

                                Description

                                No further information available.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default USNO.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc2000081a400000064000000640000000132b609970000061c000000200000001b00000000000000000000001900000009reloc/html/driver24.html USNO Modem Time Service

                                USNO Modem Time Service


                                Synopsis

                                Address: 127.127.24.u
                                Reference ID: USNO
                                Driver ID: USNO
                                Serial Port: /dev/cuau; 1200 baud, 8-bits, no parity
                                Features: none
                                Requires: /usr/include/sys/termios.h header file with modem control

                                Description

                                No information available.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default USNO.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                David L. Mills (mills@udel.edu)
                                07070100002cc3000081a400000064000000640000000132b6099700000d2a000000200000001b00000000000000000000001900000009reloc/html/driver26.html Hewlett Packard 58503A GPS Receiver

                                Hewlett Packard 58503A GPS Receiver


                                Synopsis

                                Address: 127.127.26.u
                                Reference ID: GPS
                                Driver ID: GPS-HP
                                Serial Port: /dev/hpgpsu; 9600 baud, 8-bits, no parity
                                Features: none

                                Description

                                This driver supports the HP 58503A Time and Frequency Reference Receiver. It uses HP SmartClock (TM) to implement an Enhanced GPS receiver. The receiver accuracy when locked to GPS in normal operation is better than 1 usec. The accuracy when operating in holdover is typically better than 10 us per day. It receiver should be operated with factory default settings. Initial driver operation: expects the receiver to be already locked to GPS, configured and able to output timecode format 2 messages.

                                The driver uses the poll sequence :PTIME:TCODE? to get a response from the receiver. The receiver responds with a timecode string of ASCII printing characters, followed by a <cr><lf>, followed by a prompt string issued by the receiver, in the following format:

                                T#yyyymmddhhmmssMFLRVcc<cr><lf>
                                

                                The driver processes the response at the <cr> and <lf><cr> and <lf>, so what the driver sees is the prompt from the previous poll, followed by this timecode. The prompt from the current poll is (usually) left unread until the next poll. So (except on the very first poll) the driver sees this:

                                T#yyyymmddhhmmssMFLRVcc<cr><lf>
                                

                                The T is the on-time character, at 980 msec. before the next 1PPS edge. The # is the timecode format type. We look for format 2. Without any of the CLK or PPS stuff, then, the receiver buffer timestamp at the <cr>y is 24 characters later, which is about 25 msec. at 9600 bps, so the first approximation for fudge time1 is nominally -0.955 seconds. This number probably needs adjusting for each machine / OS type, so far: -0.955000 on an HP 9000 Model 712/80 HP-UX 9.05 -0.953175 on an HP 9000 Model 370 HP-UX 9.10

                                This receiver also provides a 1-PPS signal, but I haven't figured out how to deal with any of the CLK or PPS stuff yet. Stay tuned.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default GPS.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                David L. Mills (mills@udel.edu)
                                07070100002cc4000081a400000064000000640000000132b6099700000e53000000200000001b00000000000000000000001800000009reloc/html/driver3.html PSTI/Traconex 1020 WWV/WWVH Receiver

                                PSTI/Traconex 1020 WWV/WWVH Receiver


                                Synopsis

                                Address: 127.127.3.u
                                Reference ID: WWV
                                Driver ID: WWV-PST
                                Serial Port: /dev/wwvu; 9600 baud, 8-bits, no parity
                                Features: tty_clk

                                Description

                                This driver supports the PSTI 1010 and Traconex 1020 WWV/WWVH Receivers. No specific claim of accuracy is made for these receiver, but actual experience suggests that 10 ms would be a conservative assumption.

                                The DIP-switches should be set for 9600 bps line speed, 24-hour day- of-year format and UTC time zone. Automatic correction for DST should be disabled. It is very important that the year be set correctly in the DIP-switches; otherwise, the day of year will be incorrect after 28 April of a normal or leap year. The propagation delay DIP-switches should be set according to the distance from the transmitter for both WWV and WWVH, as described in the instructions. While the delay can be set only to within 11 ms, the fudge time1 parameter can be used for vernier corrections.

                                Using the poll sequence QTQDQM, the response timecode is in three sections totalling 50 ASCII printing characters, as concatenated by the driver, in the following format:

                                ahh:mm:ss.fffs<cr> yy/dd/mm/ddd<cr>
                                frdzycchhSSFTttttuuxx<cr>
                                
                                on-time = first <cr>
                                hh:mm:ss.fff = hours, minutes, seconds, milliseconds
                                a = AM/PM indicator (' ' for 24-hour mode)
                                yy = year (from DIPswitches)
                                dd/mm/ddd = day of month, month, day of year
                                s = daylight-saving indicator (' ' for 24-hour mode)
                                f = frequency enable (O = all frequencies enabled)
                                r = baud rate (3 = 1200, 6 = 9600)
                                d = features indicator (@ = month/day display enabled)
                                z = time zone (0 = UTC)
                                y = year (5 = 91)
                                cc = WWV propagation delay (52 = 22 ms)
                                hh = WWVH propagation delay (81 = 33 ms)
                                SS = status (80 or 82 = operating correctly)
                                F = current receive frequency (4 = 15 MHz)
                                T = transmitter (C = WWV, H = WWVH)
                                tttt = time since last update (0000 = minutes)
                                uu = flush character (03 = ^c)
                                xx = 94 (unknown)
                                

                                The alarm condition is indicated by other than 8 at a, which occurs during initial synchronization and when received signal is lost for an extended period; unlock condition is indicated by other than 0000 in the tttt subfield.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default WWV.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc5000081a400000064000000640000000132b6099700001320000000200000001b00000000000000000000001800000009reloc/html/driver4.html Spectracom 8170 and Netclock/2 WWVB Receivers

                                Spectracom 8170 and Netclock/2 WWVB Receivers


                                Synopsis

                                Address: 127.127.4.u
                                Reference ID: WWVB
                                Driver ID: WWVB-SPEC
                                Serial Port: /dev/wwvbu; 9600 baud, 8-bits, no parity
                                Features: tty_clk

                                Description

                                This driver supports the Spectracom Model 8170 and Netclock/2 WWVB Synchronized Clock. This clock has proven a reliable source of time, except in some cases of high ambient conductive RF interference. The claimed accuracy of the clock is 100 usec relative to the broadcast signal; however, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.

                                The DIPswitches on this clock should be set to 24-hour display, AUTO DST off, time zone 0 (UTC), data format 0 or 2 (see below) and baud rate 9600. If this clock is to used as the source for the IRIG Audio Decoder (refclock_irig.c in this distribution), set the DIPswitches for AM IRIG output and IRIG format 1 (IRIG B with signature control).

                                There are two timecode formats used by these clocks. Format 0, which is available with both the Netclock/2 and 8170, and format 2, which is available only with the Netclock/2 and specially modified 8170.

                                Format 0 (22 ASCII printing characters):

                                <cr><lf>i  ddd hh:mm:ss  TZ=zz<cr><lf>
                                
                                on-time = first <cr>
                                i = synchronization flag (' ' = in synch, '?' = out synch)
                                hh:mm:ss = hours, minutes, seconds
                                

                                The alarm condition is indicated by other than ' ' at i, which occurs during initial synchronization and when received signal is lost for about ten hours.

                                Format 2 (24 ASCII printing characters):

                                <cr><lf>iqyy ddd hh:mm:ss.fff ld
                                
                                on-time = <cr>
                                i = synchronization flag (' ' = in synch, '?' = out synch)
                                q = quality indicator (' ' = locked, 'A'...'D' = unlocked)
                                yy = year (as broadcast)
                                ddd = day of year
                                hh:mm:ss.fff = hours, minutes, seconds, milliseconds
                                

                                The alarm condition is indicated by other than ' ' at i, which occurs during initial synchronization and when received signal is lost for about ten hours. The unlock condition is indicated by other than ' ' at q.

                                The q is normally ' ' when the time error is less than 1 ms and a character in the set A...D when the time error is less than 10, 100, 500 and greater than 500 ms respectively. The l is normally ' ', but is set to L early in the month of an upcoming UTC leap second and reset to ' ' on the first day of the following month. The d is set to S for standard time S, I on the day preceding a switch to daylight time, D for daylight time and O on the day preceding a switch to standard time. The start bit of the first <cr> is synchronized to the indicated time as returned.

                                This driver does not need to be told which format is in use - it figures out which one from the length of the message. A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself, which is a known problem with the older radios.

                                Monitor Data

                                The driver writes each timecode as received to the clockstats file. When enabled by the flag4 fudge flag, a table of quality data maintained internally by the Netclock/2 is retrieved and written to the clockstats file when the first timecode message of a new day is received.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. For a calibrated Sun IPC, the correct value is about .0048.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default WWVB.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable extended clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc6000081a400000064000000640000000132b60997000012bf000000200000001b00000000000000000000001800000009reloc/html/driver5.html TrueTime GPS/GOES/OMEGA Receivers

                                TrueTime GPS/GOES/OMEGA Receivers


                                Synopsis

                                Address: 127.127.5.u
                                Reference ID: GPS, OMEGA, GOES
                                Driver ID: TRUETIME
                                Serial Port: /dev/trueu; 9600 baud, 8-bits, no parity
                                Features: tty_clk

                                Description

                                This driver supports several models models of Kinemetrics/TrueTime timing receivers, including 468-DC MK III GOES Synchronized Clock, GPS- DC MK III and GPS/TM-TMD GPS Synchronized Clock, XL-DC (a 151-602-210, reported by the driver as a GPS/TM-TMD), GPS-800 TCU (an 805-957 with the RS232 Talker/Listener module), OM-DC OMEGA Synchronized Clock, and very likely others in the same model family that use the same timecode formats.

                                Most of this code is originally from refclock_wwvb.c with thanks. It has been so mangled that wwvb is not a recognizable ancestor.

                                Timcode format: ADDD:HH:MM:SSQCL
                                
                                A - control A (this is stripped before we see it)
                                Q - Quality indication (see below)
                                C - Carriage return
                                L - Line feed
                                
                                Quality codes indicate possible error of
                                
                                        468-DC GOES Receiver:
                                        GPS-TM/TMD Receiver:
                                                ? +/- 500 milliseconds  # +/- 50 milliseconds
                                                * +/- 5 milliseconds    . +/- 1 millisecond
                                                space less than 1 millisecond
                                
                                        OM-DC OMEGA Receiver:
                                
                                                > +/- 5 seconds
                                
                                                ? +/- 500 milliseconds  # +/- 50 milliseconds
                                                * +/- 5 milliseconds    . +/- 1 millisecond
                                
                                                A-H less than 1 millisecond. Character indicates which
                                station
                                                is being received as follows: A = Norway, B = Liberia,
                                                C = Hawaii, D = North Dakota, E = La Reunion, F =
                                Argentina,
                                                G = Australia, H = Japan.
                                

                                The carriage return start bit begins on 0 seconds and extends to 1 bit time.

                                Notes on 468-DC and OMEGA receiver:

                                Send the clock a R or C and once per second a timestamp will appear. Send a R to get the satellite position once (GOES only).

                                Notes on the 468-DC receiver:

                                Since the old east/west satellite locations are only historical, you can't set your clock propagation delay settings correctly and still use automatic mode. The manual says to use a compromise when setting the switches. This results in significant errors. The solution; use fudge time1 and time2 to incorporate corrections. If your clock is set for 50 and it should be 58 for using the west and 46 for using the east, use the line

                                fudge 127.127.5.0 time1 +0.008 time2 -0.004

                                This corrects the 4 milliseconds advance and 8 milliseconds retard needed. The software will ask the clock which satellite it sees.

                                The PCL720 from PC Labs has an Intel 8253 look-alike, as well as a bunch of TTL input and output pins, all brought out to the back panel. If you wire a PPS signal (such as the TTL PPS coming out of a GOES or other Kinemetrics/Truetime clock) to the 8253's GATE0, and then also wire the 8253's OUT0 to the PCL720's INPUT3.BIT0, then we can read CTR0 to get the number of microseconds since the last PPS upward edge, mediated by reading OUT0 to find out if the counter has wrapped around (this happens if more than 65535us (65ms) elapses between the PPS event and our being called.)

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, to be used for the West satellite, with default 0.0.

                                time2 time
                                . Specifies the time offset calibration factor, in seconds and fraction, to be used for the East satellite, with default 0.0.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default TRUE.

                                flag1 0 | 1
                                Silence the clock side of xntpd, just reading the clock without trying to write to it.

                                flag2 0 | 1
                                Generate a debug file /tmp/true%d.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc7000081a400000064000000640000000132b609970000147f000000200000001b00000000000000000000001800000009reloc/html/driver6.html IRIG Audio Decoder

                                IRIG Audio Decoder


                                Synopsis

                                Address: 127.127.6.u
                                Reference ID: IRIG
                                Driver ID: IRIG-AUDIO
                                Audio Device: /dev/irigu
                                Requires: modified SunOS 4.1.3 BSD audio driver and /usr/include/sys/bsd_audioirig.h header file

                                Description

                                This driver supports the Inter-Range Instrumentation Group standard time-distribution signal IRIG-B using the audio codec native to the Sun SPARCstation. This signal is generated by several radio clocks, including those made by Austron, TrueTime, Odetics and Spectracom, among others, although it is generally an add-on option. The signal is connected via an attenuator box and cable to the audio codec input on a Sun SPARCstation and requires a specially modified kernel audio driver described in the IRIG Support Using Sun SPARC Audio page.

                                The driver requires a modified SunOS 4.1.3 BSD audio driver available from the archive host ftp.udel.edu as the compressed tar archive pub/ntp/bsd_audio.tar.Z. For ordinary audio applications, the audio driver is transparent; for use with the NTP driver, the audio driver decodes the IRIG audio signals and provides a timestamp, raw binary timecode, status byte and decoded ASCII timecode. The data are represented in the structure in the sys/bsd_audioirig.h header file:

                                     struct irig_time {
                                          struct timeval stamp;    /* timestamp */
                                          u_char    bits[13];      /* 100 IRIG data bits */
                                          u_char    status;        /* status byte */
                                          char      time[14];      /* time string (null terminated) */
                                

                                where stamp represents a timestamp at the zero crossing of the index marker at the second's epoch, bits is a 13-octet, zero-padded binary- coded string representing code elements 1 through 100 in the IRIG-B code format, and status is a status byte, The decoded timestamp is a 13- octet, null-terminated ASCII string ddd hh:mm:ss*, where ddd is the day of year, hh:mm:ss the time of day and * is a status indicator, with ' ' indicating valid time and '?' indicating something wrong.

                                The timestamp is in Unix timeval format, consisting of two 32-bit words, the first of which is the seconds since 1970 and the second is the fraction of the second in microseconds. The status byte is zero if (a) the input signal is within amplitude tolerances, (b) the raw binary timecode contains only valid code elements, (c) 11 position identifiers have been found at the expected element positions, (d) the clock status byte contained in the timecode is valid, and (e) a time determination has been made since the last read() system call.

                                The 100 elements of the IRIG-B timecode are numbered from 0 through 99. Position identifiers occur at elements 0, 9, 19 and every ten thereafter to 99. The control function (CF) elements begin at element 50 (CF 1) and extend to element 78 (CF 27). The straight-binary-seconds (SBS) field, which encodes the seconds of the UTC day, begins at element 80 (CF 28) and extends to element 97 (CF 44). The encoding of elements 50 (CF 1) through 78 (CF 27) is device dependent. This driver presently does not use the CF elements.

                                Where feasible, the interface should be operated with signature control, so that, if the IRIG signal is lost or malformed, the interface produces an unmodulated signal, rather than possibly random digits. The driver will declare itself unsynchronized in this case.

                                     Element   CF        Function
                                     -------------------------------------
                                     55        6         time sync status
                                     60-63     10-13     bcd year units
                                     65-68     15-18     bcd year tens
                                

                                Timing jitter using the decoder and a Sun IPC is in the order of a few microseconds, although the overall timing accuracy is limited by the wander of the CPU oscillator used for timing purposes to a few hundred microseconds. These figures are comparable with what can be achieved using the PPS discipline as describe elsewhere in this note.

                                Monitor Data

                                The driver writes each timecode as received to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default IRIG.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Not used by this driver.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc8000081a400000064000000640000000132b6099700000e02000000200000001b00000000000000000000001800000009reloc/html/driver7.html Scratchbuilt CHU Receiver

                                Scratchbuilt CHU Receiver


                                Synopsis

                                Address: 127.127.7.u
                                Reference ID: CHU
                                Driver ID: CHU
                                Serial Port: /dev/chuu; 300 baud, 8-bits, no parity
                                Features: chu_clk

                                Description

                                This driver supports a shortwave receiver and special modem circuitry described in the ./gadget directory of the xntp3 distribution. It requires the chu_clk line discipline or streams module described in the Line Disciplines and Streams Drivers page. It also requires a gadget box and 300-bps modem, such as described in the Pulse-per-second (PPS) Signal Interfacing page.

                                Unlike the NIST time services, whose timecode requires quite specialized hardware to interpret, the CHU timecode can be received directly via a serial port after demodulation. While there are currently no known commercial CHU receivers, the hardware required to receive the CHU timecode is fairly simple to build. While it is possible to configure several CHU units simultaneously, this is in general not useful.

                                The time1 fudge option can be used to set the CHU propagation delay, compensate for inherent latencies in the serial port hardware and operating system. The default value is 0.0025 seconds, which is about right for Toronto. Values for other locations can be calculated using the propdelay program in the util directory of the xntp3 distribution or equivalent means.

                                The time2 fudge option can also be used to compensate for inherent latencies in the serial port hardware and operating system. The value, which defaults to zero, is in addition to the propagation delay provided by the time1 option. The default value is 0.0002 seconds, which is about right for typical telephone modem chips.

                                The flag1 option can be used to modify the averaging algorithm used to smooth the clock indications. Ordinarily, the algorithm picks the median of a set of samples, which is appropriate under conditions of poor to fair radio propagation conditions. If the clock is located relatively close to the WWV or WWVH transmitters, setting this flag will cause the algorithm to average the set of samples, which can reduce the residual jitter and improve accuracy.

                                Monitor Data

                                When enabled by the flag4 fudge flag, every received timecode is written as-is to the clockstats file.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default CHU.

                                flag1 0 | 1
                                See above.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Enable clockstats recording if set.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002cc9000081a400000064000000640000000132b6099700002682000000200000001b00000000000000000000001800000009reloc/html/driver8.html Generic Reference Driver

                                Generic Reference Driver


                                Synopsis

                                Address: 127.127.8.u
                                Reference ID: PARSE
                                Driver ID: GENERIC
                                Serial Port: /dev/refclock-u; TTY mode according to clock type
                                Features: ppsclock

                                Description

                                The timecode of these receivers is sampled via a STREAMS module in the kernel (The STREAMS module has been designed for use with SUN Systems under SunOS 4.1.x or Solaris 2.3. It can be linked directly into the kernel or loaded via the loadable driver mechanism). This STREAMS module can be adapted to be able to convert different time code formats. If the daemon is compiled without the STREAM definition synchronization will work without the Sun streams module, though accuracy is significantly degraded. This feature allows to use PARSE also on non Sun machines.

                                The actual receiver status is mapped into various synchronization states generally used by receivers. The STREAMS module is configured to interpret the time codes of DCF U/A 31, PZF535, GPS166, Trimble SV6 GPS, ELV DCF7000, Schmid and low cost receivers (see list below).

                                The reference clock support in xntp contains the necessary configuration tables for those receivers. In addition to supporting several different clock types and 4 devices, the generation a a PPS signal is also provided as an configuration option. The PPS configuration option uses the receiver generated time stamps for feeding the PPS loopfilter control for much finer clock synchronization.

                                CAUTION: The PPS configuration option is different from the hardware PPS signal, which is also supported (see below), as it controls the way xntpd is synchronized to the reference clock, while the hardware PPS signal controls the way time offsets are determined.

                                The use of the PPS option requires receivers with an accuracy of better than 1ms.

                                Fudge factors

                                Only two fudge factors are utilized. The time1 fudge factor defines the phase offset of the synchronization character to the actual time. On the availability of PPS information the time2 fudge factor defines the skew between the PPS time stamp and the receiver timestamp of the PPS signal. This parameter is usually zero, as usually the PPS signal is believed in time and OS delays should be corrected in the machine specific section of the kernel driver. time2 needs only be set when the actual PPS signal is delayed for some reason. The flag1 enables input filtering. This a median filter with continuous sampling. The flag2 selects averaging of the samples remaining after the filtering. Leap second-handling is controlled with the flag3. When set a leap second will be deleted on receipt of a leap second indication from the receiver. Otherwise the leap second will be added, (which is the default). flag3 should never be set. PPS handling is enabled by adding 128 to the mode parameter in the server/peer command.

                                ntpq (8)

                                timecode variable

                                The ntpq program can read clock variables command list several variables. These hold the following information: refclock_time is the local time with the offset to UTC (format HHMM). The currently active receiver flags are listed in refclock_status. Additional feature flags of the receiver are optionally listed in parentheses. The actual time code is listed in timecode. A qualification of the decoded time code format is following in refclock_format. The last piece of information is the overall running time and the accumulated times for the clock event states in refclock_states. When PPS information is present additional variable are available. refclock_ppstime lists then the PPS timestamp and refclock_ppsskew lists the difference between RS232 derived timestamp and the PPS timestamp.

                                Currently, fourteen clock types (devices /dev/refclock-0 - /dev/refclock-3) are supported by the PARSE driver.

                                • server 127.127.8.0-3 mode 0
                                  Meinberg PZF535 receiver (FM demodulation/TCXO / 50us)
                                • server 127.127.8.0-3 mode 1
                                  Meinberg PZF535 receiver (FM demodulation/OCXO / 50us)
                                • server 127.127.8.0-3 mode 2
                                  Meinberg DCF U/A 31 receiver (AM demodulation / 4ms)
                                • server 127.127.8.0-3 mode 3
                                  ELV DCF7000 (sloppy AM demodulation / 50ms)
                                • server 127.127.8.0-3 mode 4
                                  Walter Schmid DCF receiver Kit (AM demodulation / 1ms)
                                • server 127.127.8.0-3 mode 5
                                  RAW DCF77 100/200ms pulses (Conrad DCF77 receiver module / 5ms)
                                • server 127.127.8.0-3 mode 6
                                  RAW DCF77 100/200ms pulses (TimeBrick DCF77 receiver module / 5ms)
                                • server 127.127.8.0-3 mode 7
                                  Meinberg GPS166 receiver (GPS / <<1us)
                                • server 127.127.8.0-3 mode 8
                                  IGEL clock
                                • server 127.127.8.0-3 mode 9
                                  Trimble SV6 GPS receiver TAIP protocol (GPS / <<1us)
                                • server 127.127.8.0-3 mode 10
                                  Trimble SV6 GPS receiver TSIP protocol (GPS / <<1us) (no kernel support yet)
                                • server 127.127.8.0-3 mode 11
                                  Radiocode Clocks Ltd RCC 8000 Intelligent Off-Air Master Clock support
                                • server 127.127.8.0-3 mode 12
                                  HOPF Funkuhr 6021
                                • server 127.127.8.0-3 mode 13
                                  Diem's Computime Radio Clock

                                Actual data formats and set-up requirements of the various clocks can be found in XNTP PARSE clock data formats.

                                The reference clock support carefully monitors the state transitions of the receiver. All state changes and exceptional events such as loss of time code transmission are logged via the syslog facility. Every hour a summary of the accumulated times for the clock states is listed via syslog.

                                PPS support is only available when the receiver is completely synchronized. The receiver is believed to deliver correct time for an additional period of time after losing synchronizations, unless a disruption in time code transmission is detected (possible power loss). The trust period is dependent on the receiver oscillator and thus a function of clock type. This is one of the parameters in the clockinfo field of the reference clock implementation. This parameter cannot be configured by xntpdc.

                                In addition to the PPS loopfilter control a true PPS hardware signal can be applied on Sun Sparc stations via the CPU serial ports on the CD pin. This signal is automatically detected and will be used for offset calculation. The input signal must be the time mark for the following time code. (The edge sensitivity can be selected - look into the appropriate kernel/parsestreams.c for details). Meinberg receivers can be connected by feeding the PPS pulse of the receiver via a 1488 level converter to Pin 8 (CD) of a Sun serial zs-port. To select PPS support the STREAMS driver for PARSE must be loaded and the mode parameter ist the mode value of above plus 128. If 128 is not added to the mode value PPS will be detected to be available but it will not be used. For PPS to be used you MUST add 128 to the mode parameter.

                                There exists a special firmware release for the PZF535 Meinberg receivers. This release (PZFUERL 4.6 (or higher - The UERL is important)) is absolutely recommended for XNTP use, as it provides LEAP warning, time code time zone information and alternate antenna indication. Please check with Meinberg for this firmware release. For the Meinberg GPS166 receiver is also a special firmware release available (Uni-Erlangen). This release must be used for proper operation.

                                The raw DCF77 pulses can be fed via a level converter directly into Pin 3 (Rx) of the Sun. The telegrams will be decoded an used for synchronization. AM DCF77 receivers are running as low as $25. The accuracy is dependent on the receiver and is somewhere between 2ms (expensive) to 10ms (cheap). Upon bad signal reception of DCF77 synchronizations will cease as no backup oscillator is available as usually found in other reference clock receivers. So it is important to have a good place for the DCF77 antenna. For transmitter shutdowns you are out of luck unless you have other NTP servers with alternate time sources available.

                                Monitor Data

                                clock states statistics are written hourly the the syslog service. Online information can be found by examining the clock variable via the ntpq cv command.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default depending on clock type.

                                time2 time
                                Specifies the offset if the PPS signal to the actual time. (PPS fine tuning).

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default according to current clock type.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                delete next leap second instead of adding it.

                                flag4 0 | 1
                                Delete next leap second instead of adding it - flag will be re-defined soon - so don't use it. Statistics are provided by more common means (syslog, clock variable via ntpq)

                                Making your own PARSE clocks

                                The pare clock mechanismis deviated from the way other xntp reference clocks work. For a short description how to build parse reference clocks see making PARSE clocks

                                Additional Information

                                Reference Clock Drivers


                                Frank Kardel (kardel@informatik.uni-erlangen.de)
                                07070100002cca000081a400000064000000640000000132b609970000077a000000200000001b00000000000000000000001800000009reloc/html/driver9.html Magnavox MX4200 GPS Receiver

                                Magnavox MX4200 GPS Receiver


                                Synopsis

                                Address: 127.127.5.u
                                Reference ID: GPS
                                Driver ID: GPS-MX4200
                                Serial Port: /dev/gpsu; 9600 baud, 8-bits, no parity
                                Features: ppsclock (required)

                                Description

                                This driver supports the Magnavox MX4200 Navigation Receiver adapted to precision timing applications. It requires the ppsclock line discipline or streams module described in the Line Disciplines and Streams Drivers page. It also requires a gadget box and 1-PPS level converter, such as described in the Pulse-per-second (PPS) Signal Interfacing page.

                                Monitor Data

                                No filegen clockstats monitor data are produced by this driver.

                                Fudge Factors

                                time1 time
                                Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

                                time2 time
                                Not used by this driver.

                                stratum number
                                Specifies the driver stratum, in decimal from 0 to 15, with default 0.

                                refid string
                                Specifies the driver reference identifier, an ASCII string from one to four characters, with default GPS.

                                flag1 0 | 1
                                Not used by this driver.

                                flag2 0 | 1
                                Not used by this driver.

                                flag3 0 | 1
                                Enable ppsclock line discipline/streams module if set.

                                flag4 0 | 1
                                Not used by this driver.

                                Additional Information

                                Reference Clock Drivers


                                David L. Mills (mills@udel.edu)
                                07070100002ccb000081a400000064000000640000000132b6099700001565000000200000001b00000000000000000000001700000009reloc/html/gadget.html Gadget Box PPS Level Converter and CHU Modem

                                Gadget Box PPS Level Converter and CHU Modem


                                Introduction

                                Many radio clocks used as a primary reference source for NTP servers produce a pulse-per-second (PPS) signal that can be used to improve accuracy to a high degree. However, the signals produced are usually incompatible with the modem interface signals on the serial ports used to connect the signal to the host. The gadget box consists of a handful of electronic components assembled in a small aluminum box. It includes level converters and a optional radio modem designed to decode the radio timecode signals transmitted by the Canadian time and frequency station CHU. A complete set of schematics, PCB artwork, drill templates is in the pub/ntp/gadget.tar.Z file on ftp.udel.edu.

                                The gadget box is assembled in a 5"x3"x2" aluminum minibox containing the level converter and modem circuitry. It includes two subcircuits. One of these converts a TTL positive edge into a fixed- width pulse at EIA levels and is for use with a timecode receiver or oscillator including a TTL PPS output. The other converts the timecode modulation broadcast by Canadian time/frequency standard station CHU into a 300-bps serial character stream at EIA levels and is for use with the tty_clk and chu_tty line disciplines in the xntp3 distribution.

                                This archive contains complete construction details for the gadget box, including schematic, parts list and artwork for a two-sided, printed-circuit board. All files are in PostScript, with the exception of this file and an information file, which are in ASCII. The artwork is in the 1:1 scale and is suitable for direct printing on photographic resist for each side of the board. While a plated-through-holes process is most convenient, it is possible to bridge the two sides using soldered wires where necessary.

                                Circuit Description

                                Following is a brief functional description of the device. See the schematic diagram gadget.s01 for reference. The audio output of a shortwave radio tuned to CHU at 3330, 7335 or 14670 kHz is connected to J2. A level of at least 30 mV peak-peak is required, such as provided by the recorder output on many receivers. The input level is adjusted by potentiometer R8 so that the timecode modulation broadcast at 31-39 seconds past the minute reliably lights green LED1, but the signals broadcast during other seconds of the minute do not.

                                Opamp U4A provides low-impedance drive for the bridged-tee bandpass filter U4B. The filter has a bandpass of about 600 Hz at the 6-dB points and a center frequency of about 2150 Hz. It is designed to avoid aliasing effects with receivers of relatively wide bandpass characteristics. The modem itself is implemented by U2 and its associated circuitry. Resistors R4 and R1 are a 40-dB pad which matches the filter output to the modem input. U2 is a TTL/EIA level converter with integral power supply for bipolar signals. The modem output is available at pin 3 (receive data) of DB25 connector J1.

                                The TTL PPS signal is connected via J3 to a retriggerable one-shot U3A, which generates a TTL pulse of width determined by potentiometer R7. The pulse width is determined by the bit rate of the attached serial port. In the common case the width is one bit-time, such as 26 us for 38.4 kbps, for example. This appears to the port as a single start bit of zero followed by eight bits of ones and a stop bit of one. The second one-shot U3B generates a 200-ms pulse suitable for driving the amber LED3 as a visual monitor. The output of U3A is converted to EIA levels by U1 and appears at pin 12 (secondary receive data) of J1.

                                If only the PPS circuit is required, U2 and U4 can be deleted and the gadget box powered from the EIA modem-control signal at pin 20 (terminal ready) of J1, assuming this signal is placed in the on (positive voltage) condition by the computer program. J1 is wired to keep most finicky UARTs and terminal-driver programs happy. If the CHU circuit is required, an external 12-volt AC transformer or 9-12-volt DC supply connected to J4 is required. Red LED2 indicates power is supplied to the box.

                                Files

                                Following is a list of files included in this archive. All files are in PostScript, except the README and gadget.lst files, which are in ASCII. The files gadget.s01, gadget.s02 and gadget.lst were generated using the Schema schematic-capture program from Omation. The printed-circuit files *.lpr were generated using Schema- PCB, also from Omation.

                                Files

                                README - helpful information
                                gadget.s01 - circuit schematic
                                gadget.s02 - minibox assembly drawing
                                gadget.lst - net list, pin list, parts list, etc.
                                gen0102.lpr - pcb x-ray diagram
                                art01.lpr - pcb artword side 1
                                art02.lpr - pcb artwork side 2
                                adt0127.lpr - pcb assembly drawing
                                dd0124.lpr - pcb drill drawing
                                sm0228.lpr - pcb solder mask (side 2)
                                sst0126.lpr - pcb silkscreen mask (side 1)


                                David L. Mills (mills@udel.edu)
                                07070100002ccc000081a400000064000000640000000132b60997000004c8000000200000001b00000000000000000000001600000009reloc/html/hints.html Hints and Kinks

                                Hints and Kinks


                                This is an index for a set of troubleshooting notes contained in individual text files in the ./hints directory. They were supplied by various volunteers in the form of mail messages, patches or just plain word of mouth. Each note applies to a specific computer and operating system and gives information found useful in setting up the xntp3 distribution or site configuration. The notes are very informal and subject to errors; no attempt has been made to verify the accuracy of the information contained in them.

                                Additions or corrections to this list or the information contained in the notes is solicited. The most useful submissions include the name of the computer manufacturer (and model numbers where appropriate), operating system (specific version(s) where appropriate), problem description, problem solution and submitter's name and electric address. If the submitter is willing to continue debate on the problem, please so advise. Bash here for a directory listing.


                                David L. Mills (mills@udel.edu)
                                07070100002ccd000081a400000064000000640000000132b6099700003120000000200000001b00000000000000000000001600000009reloc/html/howto.html How to Write a Reference Clock Driver

                                How to Write a Reference Clock Driver


                                Description

                                Reference clock support maintains the fiction that the clock is actually an ordinary peer in the NTP tradition, but operating at a synthetic stratum of zero. The entire suite of algorithms used to filter the received data, select the best clocks or peers and combine them to produce a local clock correction are operative as with ordinary NTP peers. In this way, defective clocks can be detected and removed from the peer population. As no packets are exchanged with a reference clock, however, we replace the transmit, receive and packet procedures with separate code to simulate them.

                                Radio and modem reference clocks by convention have addresses in the form 127.127.t.u,, where t is the clock type and u in the range 0-3 is used to distinguish multiple instances of clocks of the same type. Most clocks require a serial port or special bus peripheral. The particular device is normally specified by adding a soft link /dev/devicedd to the particular hardware device involved, where d corresponds to the unit number.

                                The best way to understand how the clock drivers work is to study the ntp_refclock.c module and one of the drivers already implemented, such as refclock_wwvb.c. Routines refclock_transmit() and refclock_receive() maintain the peer variables in a state analogous to an actual peer and pass received data on through the clock filters. Routines refclock_peer() and refclock_unpeer() are called to initialize and terminate reference clock associations, should this ever be necessary. A set of utility routines is included to open serial devices, process sample data, edit input lines to extract embedded timestamps and to perform various debugging functions.

                                The main interface used by these routines is the refclockproc structure, which contains for most drivers the decimal equivalents of the year, day, month, hour, second and millisecond/microsecond decoded from the ASCII timecode. Additional information includes the receive timestamp, exception report, statistics tallies, etc. In addition, there may be a driver-specific unit structure used for local control of the device. The support routines are passed a pointer to the peer structure, which is used for all peer- specific processing and contains a pointer to the refclockproc structure, which in turn contains a pointer to the unit structure, if used. A table typeunit[type][unit] contains the peer structure pointer for each configured clock type and unit.

                                Many drivers support the tty_clk and/or ppsclock line disciplines or streams modules described in the included in the Line Disciplines and Streams Modules page. The tty_clk module reduces latency errors due to the operating system and serial port code in slower systems. The ppsclock module is an interface for the PPS signal provided by some radios. It can be connected via a level converter/pulse generator described in the Gadget Box PPS Level Converter and CHU Modem page.

                                By convention, reference clock drivers are named in the form refclock_xxxx.c, where xxxx is a unique string. Each driver is assigned a unique type number, long-form driver name, short-form driver name, and device name. The existing assignments are in the Reference Clock Drivers page and its dependencies. Drivers are conditionally compiled using a unique flag string in the CLOCKDEFS line described in the Configuration Options page.

                                The standard clock driver interface includes a set of common support routines some of which do such things as start and stop the device, open the serial port, and establish special functions such as PPS signal support. Other routines read and write data to the device and process time values. Most drivers need only a little customizing code to, for instance, transform idiosyncratic timecode formats to standard form, poll the device as necessary, and handle exception conditions. A standard interface is available for remote debugging and monitoring programs, such as ntpq and xntpdc, as well as the filegen facility, which can be used to record device status on a continuous basis.

                                The interface code and this documentation have been developed over some time and required not a little hard work converting old drivers, etc. Should you find success writing a driver for a new radio or modem service, please consider contributing it to the common good. Send the driver file itself and patches for the other files to Dave Mills (mills@udel.edu).

                                Files Which Need to be Changed

                                A new reference clock implementation needs to supply, in addition to the driver itself, several changes to existing files.

                                ./include/ntp.h
                                The reference clock type defines are used in many places. Each driver is assigned a unique type number. Unused numbers are clearly marked in the list. A unique REFCLK_xxxx identification code should be recorded in the list opposite its assigned type number.

                                ./libntp/clocktypes.c
                                The ./libntp/clktype array is used by certain display functions. A unique short-form name of the driver should be entered together with its assigned identification code.

                                ./xntpd/ntp_control.c
                                The clocktypes array is used for certain control message displays functions. It should be initialized with the reference clock class assigned to the driver, as per the NTP specification RFC-1305. See the ./include/ntp_control.h header file for the assigned classes.

                                ./xntpd/refclock_conf.c
                                This file contains a list of external structure definitions which are conditionally defined. A new set of entries should be installed similar to those already in the table. The refclock_conf array is a set of pointers to transfer vectors in the individual drivers. The external name of the transfer vector should be initialized in correspondence with the type number.

                                ./acconfig.h
                                This is a configuration file used by the autoconfigure scheme. Add two lines in the form:

                                  /* Define if we have a FOO clock */
                                  #undef FOO
                                

                                where FOO is the define used to cause the driver to be included in the distribution.

                                ./configure.in
                                This is a configuration file used by the autoconfigure scheme. Add lines similar to the following:

                                  AC_MSG_CHECKING(FOO clock_description)
                                  AC_ARG_ENABLE(FOO, [  --enable-FOO        clock_description],
                                      [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
                                  if test "$ntp_ok" = "yes"; then
                                      ntp_refclock=yes
                                      AC_DEFINE(FOO)
                                  fi
                                  AC_MSG_RESULT($ntp_ok)
                                

                                (Note that $ntp_eac is the value from -- {dis,en}able-all-clocks for non-PARSE clocks and $ntp_eacp is the value from --{dis,en}able-parse- clocks for PARSE clocks. See the documentation on the autoconf and automake tools from the GNU distributions.)

                                ./xntpd/Makefile.am

                                This is the makefile prototype used by the autoconfigure scheme. Add the driver file name to the entries already in the xntpd_SOURCES list.

                                Patches to automake-1.0 are required for the autoconfigure scripts to work properly. The file automake- 1.0.patches can be used for this purpose.

                                ./xntpd/Makefile.am
                                Do the following sequence of commands:

                                  automake
                                  autoconf
                                  autoheader
                                  configure
                                

                                or simply run make, which will do this command sequence automatically.

                                Interface Routine Overview

                                refclock_newpeer - initialize and start a reference clock
                                This routine allocates and initializes the interface structure which supports a reference clock in the form of an ordinary NTP peer. A driver-specific support routine completes the initialization, if used. Default peer variables which identify the clock and establish its reference ID and stratum are set here. It returns one if success and zero if the clock address is invalid or already running, insufficient resources are available or the driver declares a bum rap.

                                refclock_unpeer - shut down a clock
                                This routine is used to shut down a clock and return its resources to the system.

                                refclock_transmit - simulate the transmit procedure
                                This routine implements the NTP transmit procedure for a reference clock. This provides a mechanism to call the driver at the NTP poll interval, as well as provides a reachability mechanism to detect a broken radio or other madness.

                                refclock_sample - process a pile of samples from the clock
                                This routine converts the timecode in the form days, hours, minutes, seconds, milliseconds/microseconds to internal timestamp format. It then calculates the difference from the receive timestamp and assembles the samples in a shift register. It implements a recursive median filter to suppress spikes in the data, as well as determine a rough dispersion estimate. A configuration constant time adjustment fudgetime1 can be added to the final offset to compensate for various systematic errors. The routine returns one if success and zero if failure due to invalid timecode data or very noisy offsets.

                                Note that no provision is included for the year, as provided by some (but not all) radio clocks. Ordinarily, the year is implicit in the Unix file system and hardware/software clock support, so this is ordinarily not a problem. Nevertheless, the absence of the year should be considered more a bug than a feature and may be supported in future.

                                refclock_receive - simulate the receive and packet procedures
                                This routine simulates the NTP receive and packet procedures for a reference clock. This provides a mechanism in which the ordinary NTP filter, selection and combining algorithms can be used to suppress misbehaving radios and to mitigate between them when more than one is available for backup.

                                refclock_gtlin - groom next input line and extract timestamp
                                This routine processes the timecode received from the clock and removes the parity bit and control characters. If a timestamp is present in the timecode, as produced by the tty_clk line discipline/streams module, it returns that as the timestamp; otherwise, it returns the buffer timestamp. The routine return code is the number of characters in the line.

                                refclock_open - open serial port for reference clock
                                This routine opens a serial port for I/O and sets default options. It returns the file descriptor if success and zero if failure.

                                refclock_ioctl - set serial port control functions
                                This routine attempts to hide the internal, system-specific details of serial ports. It can handle POSIX (termios), SYSV (termio) and BSD (sgtty) interfaces with varying degrees of success. The routine sets up the tty_clk, chu_clk and ppsclock streams module/line discipline, if compiled in the daemon and requested in the call. The routine returns one if success and zero if failure.

                                refclock_control - set and/or return clock values
                                This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using xntpdc and the clockstat command. It can also be used to initialize configuration variables, such as fudgetimes, fudgevalues, reference ID and stratum.

                                refclock_buginfo - return debugging info
                                This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using xntpdc and the clkbug command.

                                David L. Mills (mills@udel.edu)
                                07070100002cce000081a400000064000000640000000132b6099700001f85000000200000001b00000000000000000000001600000009reloc/html/index.html The Network Time Protocol (NTP) Distribution

                                The Network Time Protocol (NTP) Distribution


                                Introduction

                                Note: The software contained in this distribution is available without charge under the conditions set forth in the Copyright Notice.

                                The Network Time Protocol (NTP) is used to synchronize the time of a computer client or server to another server or reference time source, such as a radio or satellite receiver or modem. It provides client accuracies typically within a millisecond on LANs and up to a few tens of milliseconds on WANs relative to a primary server synchronized to Coordinated Universal Time (UTC) via a Global Positioning Service (GPS) receiver, for example. Typical NTP configurations utilize multiple redundant servers and diverse network paths, in order to achieve high accuracy and reliability. Some configurations include cryptographic authentication to prevent accidental or malicious protocol attacks. Information on the NTP architecture, protocol and algorithms can be found in the Further Information and Bibliography page.

                                Building and Installing NTP

                                The Building and Installing the Distribution page presents an overview of the procedures for compiling the distribution and installing it on a typical client or server. The build procedures inspect the system hardware and software environment and automatically select the appropriate options for that environment. While these procedures work with most computers and operating systems marketed today, exceptions requiring manual intervention do exist, as documented in the Configuration Options and Release Notes pages.

                                Bringing up a NTP primary server requires a radio or satellite receiver or modem. The distribution includes hardware drivers for over two dozen radio clocks and modem services. A list of the particular receivers and modem drivers supported in the distribution is given in the Reference Clock Drivers page. For most popular workstations marketed by DEC, Sun and Hewlett Packard, the automatic build procedures select all drivers that run on the target machine. While this increases the size of the executable binary somewhat, individual drivers can be included or excluded using special scripts.

                                Configuring Clients and Servers

                                In order to participate in the existing NTP synchronization subnet and obtain accurate, reliable time, it is necessary to construct an appropriate configuration file, usually called ntp.conf, which establishes the servers and/or external receivers or modems to be used by this particular machine. Directions for constructing this file are in the Notes on Configuring NTP and Setting up a NTP Subnet page.

                                The most important factor in providing accurate, reliable time is the selection of modes and servers to be used in the configuration file. NTP support for one or more computers is normally engineered as part of the existing NTP synchronization subnet. The existing NTP subnet consists of a multiply redundant hierarchy of servers and clients, with each level in the hierarchy identified by stratum number. Primary servers operate at stratum one and provide synchronization to secondary servers operating at stratum two and so on to higher strata. In this hierarchy, clients are simply servers that have no dependents.

                                The NTP subnet presently includes over 50 public primary servers synchronized directly to UTC by radio, satellite or modem and located in North America, Europe and Asia. Normally, client workstations and servers with a relatively small number of clients do not synchronize to primary servers. There are about 100 public secondary servers synchronized to the primary servers and providing synchronization to a total in excess of 100,000 clients and servers in the Internet. The current lists are maintained in the List of Public NTP Servers page, which is updated frequently. There are numerous private primary and secondary servers not normally available to the public as well.

                                Resolving Problems

                                Like other things Internet, the NTP synchronization subnets tend to be large and devilishly intricate, with many opportunities for misconfiguration and network problems. The NTP engineering model is specifically designed to help isolate and repair such problems using an integrated management protocol, together with a suite of monitoring and debugging tools. There is an optional data recording facility which can be used to record normal and aberrant operation, log problems to the system log facility, and retain records of client access. The NTP Debugging Techniques and Hints and Kinks pages contain useful information for identifying problems and devising solutions.

                                Users are requested to report bugs, offer suggestions and contribute additions to this distribution. The Patching Procedures page suggests procedures which greatly simplify distribution updates, while the Porting Hints suggest ways to make porting this code to new hardware and operating systems easier. Additional information on reference clock driver construction and debugging can be found in the Reference Clock Drivers page. Further information on NTP in the Internet can be found in the NTP web page.

                                Program Manual Pages

                                xntpd - Network Time Protocol (NTP) daemon
                                ntpq - standard NTP query program
                                xntpdc - special NTP query program
                                ntpdate - set the date and time via NTP
                                ntptrace - trace a chain of NTP servers back to the primary source
                                tickadj - set time-related kernel variables
                                ntptime - read kernel time variables
                                authspeed - determine authentication delays
                                authcert - DES validation program
                                md5 - generate message digest

                                Supporting Documentation

                                Copyright Notice
                                Notes on Configuring NTP and Setting up a NTP Subnet
                                Release Notes
                                Building and Installing the Distribution
                                Configuration Options
                                NTP Debugging Techniques
                                Reference Clock Drivers
                                Further Information and Bibliography
                                Patching Procedures
                                Hints and Kinks
                                Porting Hints

                                Application Notes

                                Mitigation Rules and the prefer Keyword
                                Gadget Box PPS Level Converter and CHU Modem
                                IRIG Support Using Sun SPARC Audio
                                Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation
                                A Kernel Model for Precision Timekeeping
                                A Kernel Programming Interface for Precision Time Signals


                                David L. Mills (mills@udel.edu)
                                07070100002ccf000081a400000064000000640000000132b609970000413f000000200000001b00000000000000000000001500000009reloc/html/irig.html IRIG Support Using Sun SPARC Audio

                                IRIG Support Using Sun SPARC Audio


                                Introduction

                                A companion software distribution pub/ntp/bsd_audio.tar.Z includes modifications to the BSD audio driver for the Sun SPARCstation written by Van Jacobson and collaborators at Lawrence Berkeley National Laboratory. The modifications provide for the connection of a standard Inter-Range Instrumentation Group (IRIG) timecode signal generator and the decoding of the signal to produce data sufficient to synchronize a host clock to the IRIG signal. There are several timing receivers now on the market that can produce IRIG signals, including those made by Austron, TrueTime, Odetics and Spectracom, among others. These data can be used to precisely synchronize the host computer clock to within a few microseconds without requiring level converters or pulse generators necessary with the pulse-per-second signals also produced by these receivers. The current implementation of the Network Time Protocol Version 3 supports the modified BSD driver when installed in the SunOS 4.1.x kernel.

                                The specific IRIG signal format supported by the driver is designated IRIG-B. It consists of an amplitude-modulated 1000-Hz sinewave, where each symbol is encoded as ten full carrier cycles, or 10 ms in duration. The symbols are distinguished using a pulse-width code, where 2 ms corresponds to logic zero, 5 ms to logic one and 8 ms to a position identifier used for symbol synchronization. The complete IRIG-B message consists of a frame of ten fields, each field consisting of a nine information symbols followed by a position identifier for a total frame duration of one second. The first symbol in the frame is also a position identifier to facilitate frame synchronization.

                                The IRIG-B signal encodes the day of year and time of day in binary- coded decimal (BCD) format, together with a set of control functions, which are not used by the driver, but included in the raw binary timecode. Either the BCD timecode or the combined raw timecode and BCD timecode can be returned in response to a read() system call. The BCD timecode is in handy ASCII format: "ddd hh:mm:ss*" for convenience in client programs. In this format the "*" status character is " " when the driver is operating normally and "?" when errors may be present (see below). In order to reduce residual errors to the greatest extent possible, the driver computes a timestamp based on the value of the kernel clock at the on-time epoch of the IRIG-B signal. In addition, the driver automatically adjusts for slowly varying amplitude levels of the IRIG-B signal and suppresses noise transients.

                                In operation the IRIG driver interprets the IRIG-B signal in real time, synchronizes to the signal, demodulates the data bits and prepares the data to be read later. At the on-time epoch a timestamp is captured from the kernel clock and adjusted for the phase of the IRIG carrier signal relative to the 8-kHz codec sample clock. When a client program issues a read() request, the most recent timecode data, including a status byte and the corrected timestamp, are stored in a structure and returned to the caller. Depending on the frequency with which the driver is called, this may result in old data or duplicate data or even invalid data, should the driver be called before it has computed its first timestamp.

                                In practice, the resulting ambiguity causes few problems. The caller converts the ASCII timecode returned by a read() system call to Unix timeval format and subtracts it from the kernel timestamp provided by the driver. The result is an adjustment that can be subtracted from the kernel time, as returned in a gettimeofday() call, for example, to correct for the deviation between IRIG time and kernel time. The result can always be relied on to within plus/minus 128 microseconds, the audio codec sampling interval, and ordinarily to within a few microseconds, as determined by the interpolation algorithm.

                                Programming Interface

                                The IRIG driver modifications are integrated in the BSD audio driver bsd_audio.c without affecting its usual functions in transmitting and receiving ordinary speech, except when enabled by specific ioctl() system calls. However, the driver cannot be used for both speech and IRIG signals at the same time. Once activated by a designated ioctl() call, the driver remains active until it is explicitly deactivated by another ioctl() call. This allows applications to configure the audio device and pass the pre-configured driver to other applications. Since the driver is currently only a receiver, it does not affect the operation of the BSD audio output driver.

                                Data are read using the standard read() system call. Since the output formats have constant lengths, the application receives the data into a fixed-length buffer or structure. The read() call never blocks; it simply returns the most recent IRIG data received during the last second. It may happen that, due to unavoidable race conditions in the kernel, data for other than the most recent second are returned. The driver's internal data structure is updated as an atomic unit; thus, the entire structure is valid, even if it contains old data. This should cause no problems, since in the intended application the driver is called at regular intervals by a time-synchronization daemon such as NTP. The daemon can determine the validity of the time indication by checking the timecode or status byte returned with the data.

                                The header file bsd_audioirig.h defines the irig_time structure and ioctl() codes used by the driver. Following are those codes specific to the IRIG function of the driver. Unless indicated otherwise, the (third) argument of the ioctl() system call points to an integer or string.

                                audio_IRIG_OPEN
                                This command activates the IRIG receiver. The audio driver must be opened with this command before other commands can be issued. The argument is ignored. When the IRIG receiver is initialized, all internal data are purged and any buffered data are lost.

                                audio_IRIG_CLOSE
                                This command deactivates the IRIG receiver. The argument is ignored. The buffers are purged and any buffered time data are lost. The original BSD audio driver functions are enabled and it resumes operating normally.

                                audio_IRIG_SETFORMAT
                                The argument is a pointer to an integer designating the output format for the IRIG data. There are currently two formats defined, 0 (default) and 1. If an invalid format is selected, the default format is used.

                                The data returned by a read() system call in format 0 is a character string in the format ddd hh:mm:ss*\n, which consists of 13 ASCII characters followed by a \n terminator for a total of 14 characters. The * status character is an ASCII space if the status byte determined by the driver is zero and ? if not. This format is intended to be used with simple user programs that care only about the time to the nearest second.

                                The data returned by a read() system call in format 1 is a structure defined in the bsd_audioirig.h header file:

                                        struct irig_time {
                                                struct timeval stamp;   /* timestamp */
                                                u_char bits[13];                /* 100 irig data bits */
                                                u_char status;                  /* status byte */
                                                char    time[14];                       /* time string
                                */
                                        };
                                

                                The irig_time.stamp is a pair of 32-bit longwords in Unix timeval format, as defined in the /usr/include/sys/time.h header file. The first word is the number of seconds since 1 January 1970, while the second is the number of microseconds in the current second. The timestamp is captured at the most recent on-time epoch of the IRIG timecode and applies to all other values returned in the irig_time structure.

                                The irig_time.bits[13] is a vector of 13 bytes to hold the 100-bit, zero-padded raw binary timecode, packed 8 symbols per byte. The symbol encoding maps IRIG one to 1 and both IRIG zero and IRIG position identifier to 0. The order of encoding is illustrated by the following diagram (the padding bits are represented by xxxx, which are set to zero):

                                IRIG symbol number      00000000001111111111 . . . 8888889999999999xxxx
                                                                01234567890123456789 . . .
                                4567890123456789xxxx
                                                                ----------------------------------------
                                -------
                                bits byte       number  <--00--><--01--><----     ----
                                ><--11--><--12-->
                                bits bit in byte        01234567012345670123 . . . 45670123456701234567
                                

                                The irig_time.status is a single byte with bits defined in the bsd_audioirig.h header file. In ordinary operation all bits of the status byte are zero and the ASCII space status character is set in the ASCII timecode. If any of these bits are nonzero, the ? status character is set in the ASCII timecode.

                                audio_IRIG_BADSIGNAL
                                The signal amplitude is outside tolerance limits, either in amplitude or modulation depth. The indicated time may or may not be in error. If the signal is too high, it may be clipped by the codec, so that the pulse width cannot be reliably determined. If too low, it may be obscured by noise. The nominal expectation is that the peak amplitude of the signal be maintained by the codec AGC at about 10 dB below the clipping level and that the modulation index be at least 0.5 (6 dB).

                                audio_IRIG_BADDATA
                                An invalid hex code (A through F) has been found where BCD data is expected. The ASCII representation of the invalid code is set to ?. Errors of this type are most likely due to noise on the IRIG signal due to ground loops, coupling to other noise sources, etc.

                                audio_IRIG_BADSYNC
                                A code element has been found where a position identifier should be or a position identifier has been found where a code element should be. The time is meaningless and should be disregarded. Errors of this type can be due to severe noise on the IRIG signal due to ground loops, coupling to other noise sources, etc., or during initial acquisition of the signal.

                                audio_IRIG_BADCLOCK
                                Some IRIG timecode generators can indicate whether or not the generator is operating correctly or synchronized to its source of standard time using a designated field in the raw binary timecode. Where such information is available and the IRIG decoder can detect it, this bit is set when the generator reports anything except normal operating conditions.

                                audio_IRIG_OLDDATA
                                The IRIG time has not changed since the last time it was returned in a read() call. This is not normally considered an error, unless it persists for longer than a few seconds, in which case it probably indicates a hardware problem.

                                The irig_time.time[14] vector is a character string in the format ddd hh:mm:ss*\0, which consists of 13 ASCII characters followed by a zero terminator. The * status character is an ASCII space if the status byte is zero and ? if not. This format is identical to format 0, except that in format 1 the time string is null-terminated.

                                Programming Example

                                The following pseudo-code demonstrates how the IRIG receiver may be used by a simple user program. Of course, real code should include error checking after each call to ensure the driver is communicating properly. It should also verify that the correct fields in the structure are being filled by the read() call.

                                        include "bsd_audioirig.h"
                                
                                        int format = 1;
                                        struct irig_time it;
                                
                                        Audio_fd = open("/dev/audio", O_RDONLY);
                                        ioctl(Audio_fd, AUDIO_IRIG_OPEN, NULL);
                                        ioctl(Audio_fd, AUDIO_IRIG_SETFORMAT,&format);
                                        while (condition)
                                                read(Audio_fd, &it, sizeof(it);
                                                printf("%s\n", it.time);
                                        ioctl(Audio_fd, AUDIO_IRIG_CLOSE, NULL);
                                        close(Audio_fd);
                                

                                Implementation and Configuration Notes

                                The signal level produced by most IRIG-equipped radios is on the order of a few volts peak-peak, which is far larger than the audio codec can accept; therefore, an attenuator in the form of a voltage divider is needed. The codec can handle IRIG signals at the microphone input from 4.2 mV to 230 mV peak-peak. A suitable attenuator conists of a series- connected 100K-Ohm resistor at the input and a parallel-connected 1K-Ohm resistor at the output, both contained along with suitable connectors in a small aluminum box. The exact values of these resistors are not critical, since the IRIG driver includes an automatic level-adjustment capability.

                                For the most accurate time using the IRIG signal and a particular radio, it may be necessary to adjust the time1 parameter of the fudge command to compensate for the codec delay and any additional delay due to IRIG processing in the radio itself. Since the codec samples at an 8-kHz rate, the average delay is about 62 us; however, the delays due to the radios and IRIG signals themselves can vary. For instance, in the Austron recievers the IRIG delay is essentially zero, while in the Spectracom receivers the delay is about 240 usec relative to the PPS signal. In addition, the poll interval can be reduced from the usual 64 seconds to 16 seconds to reduce wander of the local hardware clock. Finally, the prefer keyword can be used to bias the clock-selection algorithm to favor the IRIG time, which is ordinarily the best time available. The Mitigation Rules and the prefer Keyword page describes the operation of this keyword. For example, the following two lines in the NTP configuration file ntp.conf are appropriate for the Spectracom Netclock/1 WWVB Synchronized Clock with IRIG Option:

                                server 127.127.6.0 prefer minpoll 4 maxpoll 4 # irig audio decoder
                                fudge 127.127.6.0 time1 0.0005
                                

                                The time1 value of .0005 s (500 us) was determined by actual measurement. Since the IRIG delay in Austron receivers is essentially zero, the fudge command is not necessary with these receivers. The correct value in case of other radios may have to be determined by actual measurement. A convenient way of doing this is to configure the ppsclock streams module. This module can be built from the ppsclock.tar.Z distribution. It can be used to adjust time1 until the PPS signal and IRIG signal both show the same offset. The ppsclock streams module is described in the Line Disciplines and Streams Drivers page.

                                The modified BSD driver includes both the modified driver itself bsd_audio.c and the IRIG header file bsd_audioirig.h, as well as modified header files bsd_audiovar.h and bsd_audioio.h. The driver is installed in the same way as described in the BSD driver documentation, with the addition of the following define in the kernel configuration file:

                                options AUDIO_IRIG              # IRIG driver
                                

                                This causes the IRIG code to be included in the BSD driver, as well as a C-coded codec interrupt routine which replaces the assembly-coded routine and provides the IRIG functionality. While the C-coded routine is somewhat slower than the assembly-coded routine, the extra overhead is not expected to be significant. Note that the IRIG driver calls the kernel routine microtime() as included in the ppsclock.tar.Z distribution. It is highly recommended that this routine be installed in the kernel configuration as well. The instructions for doing this are contained in the ppsclock directory of the xntp3 distribution.


                                David L. Mills (mills@udel.edu)
                                07070100002cd0000081a400000064000000640000000132b6099700000c42000000200000001b00000000000000000000001500000009reloc/html/kern.html A Kernel Model for Precision Timekeeping

                                A Kernel Model for Precision Timekeeping


                                The technical memorandum: A Kernel Model for Precision Timekeeping (PostScript) describes an engineering model which implements a precision time-of-day function for a generic operating system. The model is based on the principles of disciplined oscillators using phase-lock loops (PLL) and frequency-lock loops (FLL) often found in the engineering literature. The model implements a hybrid PLL/FLL discipline algorithm implemented in the kernel. The hybrid loop provides automatic time and frequency steering with update intervals from a few seconds to several hours.

                                The hybrid PLL/FLL has been implemented in the Unix kernels for several workstations, including those made by Sun Microsystems, Digital and Hewlett Packard. The model changes the way the system clock is adjusted in time and frequency, as well as provides mechanisms to discipline its time and frequency to an external precision timing source, such as a pulse-per-second (PPS) signal. The model incorporates a generic system-call interface for use with the Network Time Protocol (NTP) or similar time synchronization protocol. The NTP Version 3 daemon xntpd operates with this model to provide synchronization limited in principle only by the accuracy and stability of the external timing source.

                                This memorandum does not propose a standard protocol, specification or algorithm. It is intended to provoke comment, refinement and implementations for kernels not considered herein. While a working knowledge of NTP is not required for an understanding of the design principles or implementation of the model, it may be helpful in understanding how the model behaves in a fully functional timekeeping system.

                                The model has been implemented in the Unix kernels for Sun Microsystems, Digital and Hewlett Packard workstations. In addition, for the Digital machines the model provides improved precision to one microsecond. Since these specific implementations involve modifications to licensed code, they cannot be provided directly. Inquiries should be directed to the manufacturer's representatives. However, the engineering model for these implementations, including a simulator with code segments almost identical to the implementations, but not involving licensed code, is available kernel.tar.Z via anonymous FTP.

                                There are two new system calls defined in the model, ntp_gettime(), which returns a structure including the current time, estimated error and maximum error, and ntp_adjtime(), which provides a means to adjust kernel variables, including the current time and frequency offsets. Further information on the calling sequences and variable definitions are in the ./include/sys/timex.h file.


                                David L. Mills (mills@udel.edu)
                                07070100002cd1000081a400000064000000640000000132b60997000004a6000000200000001b00000000000000000000001800000009reloc/html/kernpps.html A Kernel Programming Interface for Precision Time Signals Network Performance Evaluation

                                A Kernel Programming Interface for Precision Time Signals


                                The technical memorandum: A Kernel Programming Interface for Precision Time Signals (PostScript) describes a proposed programming interface for external precision time signals, such as the pulse-per-second (PPS) signal generated by some radio clocks and cesium oscillators.

                                The memorandum argues for a generic capability in the ubiquitous Unix kernel, which could be used for a wide variety of measurement applications, including network time synchronization and experiments involving performance measurement and evaluation of computer networks and transmission systems. The hardware to do this requires only a serial port and a modem control lead, such as the data carrier detect (DCD) lead, which can be driven by an external source via a level converter/pulse generator.


                                David L. Mills (mills@udel.edu)
                                07070100002cd2000081a400000064000000640000000132b6099700001d4c000000200000001b00000000000000000000001600000009reloc/html/ldisc.html Line Disciplines and Streams Modules

                                Line Disciplines and Streams Modules


                                Description

                                Most radio and modem clocks used for a primary (stratum-1) NTP server utilize serial ports operating at speeds of 9600 baud or greater. The timing jitter contributed by the serial port hardware and software driver can accumulate to several milliseconds on a typical Unix workstation. In order to reduce these errors, a set of special line disciplines and stream modules can be configured in the Unix kernel. These routines intercept special characters or signals provided by the radio or modem clock and save a local timestamp for later processing.

                                The routines can be compiled in the kernel in older BSD-derived systems, or installed as System V streams modules and either compiled in the kernel or dynamically loaded when required. In either case, they require minor changes in some kernel files and in the NTP daemon xntpd. The streams modules can be pushed and popped from the streams stack using conventional System V streams program primitives. Note that not all Unix kernels support line disciplines and of those that do, not all support System V streams. The disciplines here are known to work correctly with SunOS 4.x kernels, but have not been tested for other kernels.

                                There are two line disciplines and a special streams module included in the distribution. Support for each in xntpd is enabled by adding flags to the DEFS_LOCAL line of the xntpd configuration file ./Config.local. This can be done automatically by the autoconfiguration build procedures, or can be inserted/deleted after the process has completed.

                                tty_clk
                                This routine intercepts characters received from the serial port and passes unchanged all except a set of designated characters to the generic serial port discipline. For each of the exception characters, the character is inserted in the receiver buffer followed by a local timestamp in Unix timeval format. Both select() and SIGIO are supported by the routine. The -DTTYCLK flag is used to compile support for this discipline in xntpd. This flag is automatically included if the clkdefs.h file is found in the /usr/include/sys directory, or it can be added (or deleted) manually. This module must be configured in the kernel during the kernel build process, as described in the README file in the ./kernel directory.

                                tty_chu
                                This routine is a special purpose line discipline for receiving a special timecode broadcast by Canadian time and frequency standard station CHU. The radio signal is first demodulated by the 300-baud modem included in the gadget box, then processed by the discipline and finally processed by the CHU modem driver (type 7) described in the Reference Clock Drivers page. This discipline should be used in raw mode. The -DCHUCLK flag is used to compile support for this discipline in xntpd. This flag is automatically included if the chudefs.h file is found in the /usr/include/sys directory, or it can be added (or deleted) manually. This module must be configured in the kernel during the kernel build process, as described in the README file in the ./kernel directory.

                                ppsclock
                                This routine is a special purpose streams module which monitors the state of the data carrier detect (DCD) modem interface signal. It is normally used in connection with a pulse-per-second (PPS) signal generated by some radio clocks, which requires a hardware level converter/pulse generator, such as described in the Gadget Box PPS Level Converter and CHU Modem page. For each positive-going edge of the DCD signal, the ppsclock module captures a timestamp in Unix timeval format for later retrieval using a special ioctl() system call. The -DPPS flag is used to compile support for this module in xntpd. This flag is automatically included if the ppsclock.h file is found in the /sys/sys directory, or it can be added (or deleted) manually. This module must also be configured in the kernel during the kernel build process, as described in the README file in the ./kernel directory.

                                There are two versions of both the tty_clk and chu_clk programs. The tty_clk.c and chu_clk.c are designed for use with older BSD systems and are compiled in the kernel. The tty_clk_STREAMS.c and chu_clk_STREAMS.c are designed for use with System V streams, in which case they can be either compiled in the kernel or dynamically loaded. Since these programs are small, unobtrusive, and do nothing unless specifically enabled by an application program, it probably doesn't matter which version is chosen. Instructions on how to configure and build a kernel supporting either or both of these line disciplines is in the README file in the ./kernel directory.

                                How to Use the tty_clk Line Discipline

                                The tty_clk line discipline defines a new ioctl(), CLK_SETSTR, which takes a pointer to a string of no more than 32 characters. Until the first CLK_SETSTR is performed, the discipline will simply pass through characters. Once it is passed a string by CLK_SETSTR, any character in that string will be immediately followed by a timestamp in Unix timeval format. You can change the string whenever you want by doing another CLK_SETSTR. The character must be an exact, 8 bit match. The character '\000' cannot, be used, as it is the string terminator. Passing an empty string to CLK_SETSTR turns off timestamping. Passing NULL will produce undefined results.

                                How to Use the tty_chu Line Discipline

                                The tty_chu line discipline translates data received from the CHU modem and returns chucode structures, as defined in chudefs.h, and expected by the Scratchbuilt CHU Receiver reference clock driver. Depending on the settings of PEDANTIC and ANAL_RETENTIVE used when compiling the kernel, some checking of the data may or may not be necessary.

                                How to Use the ppsclock Stream Module

                                The ppsclock streams module implements an ioctl() CIOGETEV, which takes a pointer to the structure

                                struct ppsclockev {
                                     struct timeval tv;
                                     u_int serial;
                                };
                                

                                The ppsclock module is pushed on the streams stack of the serial port connected to the PPS signal. The port must be configured for local operation, rather than remote (modem) operation. At each positive-going edge of the DCD signal, the routine latches the current local timestamp and increments a counter. At each CIOGETEV ioctl() call, the current values of the timestamp and counter are returned in the ppsclockev structure.


                                David L. Mills (mills@udel.edu)
                                07070100002cd3000081a400000064000000640000000132b60998000003e6000000200000001b00000000000000000000001800000009reloc/html/md5cert.html md5 - generate message digest

                                md5 - generate message digest


                                Synopsis

                                md5 [ -0123456789 ] [ -h] file

                                Description

                                This program generates the message digest of the given file using the RSA Message Digest 5 (MD5) and other selected algorithms. If file is not given, the program uses the standard input.

                                Options

                                -0123456789
                                Select algorithm from the following list
                                -0 null
                                -1 MD5
                                -2 SNEFRU
                                -3 CRC32
                                -4 CRC16
                                -5 MD4
                                -6 MD2
                                -7 SHA
                                -8 HAVAL
                                -9 null

                                -h
                                Display the result in hex; the default is base-64

                                David L. Mills (mills@udel.edu)
                                07070100002cd4000081a400000064000000640000000132b6099800000a6d000000200000001b00000000000000000000001800000009reloc/html/measure.html Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation

                                Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation


                                The technical memorandum: Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation (PostScript) describes a number of techniques for conducting experiments typical of computer network and transmission systems engineering.

                                In most experiments in which time is involved, it is necessary to develop estimates of time, frequency and measurement errors from a series of time measurements between the clocks of a number of computers and ancillary devices interconnected by some kind of computer network. However, time is not a physical quantity, such as mass, nor can it be measured relative to an absolute frame of reference, such as velocity. The only way to measure time in our universe is to compare the reading of one clock, which runs according to its own timescale, with another clock, which runs according to a given timescale, at some given instant or epoch. The errors arise from the precision of time comparisons and the accuracy of frequency estimates between the timescales involved.

                                The usual data collected during a performance run of some experiment might include time offsets, time delays, frequency offsets and various error statistics. While time offsets between two clocks can be measured directly, frequency offsets can be estimated only from two or more time offsets made over some time interval in the experiment. In practice, a sequence of time comparisons can be performed over the lifetime of the experiment and the instantaneous frequency estimated either in real time with a recurrence relation, or retrospectively with a polynomial fit to the data.

                                Estimating time and frequency errors in real time has been studied by a distinct subspecies of physicists who have made a career of the technology involved. Various means including autoregressive models, Kalman filters and simple weighted-average algorithms are used extensively by national standards laboratories to model cesium-clock ensembles. These techniques have been adapted to computer network and transmission engineering problems as well. This memorandum explores issues in performing experiments of this type and summarizes various techniques found useful in practice.


                                David L. Mills (mills@udel.edu)
                                07070100002cd5000081a400000064000000640000000132b609980000165b000000200000001b00000000000000000000001800000009reloc/html/miscopt.html Miscellaneous Options

                                Miscellaneous Options


                                Miscellaneous Commands

                                broadcastdelay seconds
                                The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. Ordinarily, this is done automatically by the initial protocol exchanges between the local and remote servers. In some cases, the calibration procedure may fail due to network or server access controls, for example. This command specifies the default delay to be used under these circumstances. Typically (for Ethernet), a number between 0.003 and 0.007 seconds is appropriate. The default when this command is not used is 0.004 seconds.

                                trap host_address [ port port_number ] [ interface interface_address ]
                                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 of 18447 is used. If the interface address is not specified, the message is sent with a source address of the local interface the message is sent through. Note that on a multihomed host the interface used may vary from time to time with routing changes.

                                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 trap receiver will ensure that no messages are lost when the server is started.

                                setvar variable [ default ]
                                This command adds an additional system variable. These variables can be used to distribute additional information such as the access policy. If the variable of the form name = value is followed by the default keyword, the variable will be listed as part of the default system variables (ntpq rv command). These additional variables serve informational purposes only. They are not related to the protocol other that they can be listed. The known protocol variables will always override any variables defined via the setvar mechanism.

                                There are three special variables that contain the names of all variable of the same group. The sys_var_list holds the names of all system variables. The peer_var_list holds the names of all peer variables and the clock_var_list holds the names of the reference clock variables.

                                logfile logfile
                                This command specifies the location of an alternate log file to be used instead of the default system syslog facility.

                                logconfig configkeyword
                                This command controls the amount and type of output written to the system syslog facility or the alternate logfile log file. By default, all output is turned on. All configkeyword keywords can be prefixed with =, + and -, where = sets the syslogmask, + adds and - removes messages. syslog messages can be controlled in four classes (, peer, sys and sync). Within these classes four types of messages can be controlled.

                                Informational messages (info) control configuration information. Event messages (events) control logging of events (reachability, synchronization, alarm conditions). Statistical output is controlled with the statistics keyword. The final message group is the status messages. This describes mainly the synchronizations status. Configuration keywords are formed by concatenating the message class with the event class. The allprefix can be used instead of a message class. A message class may also be followed by the all keyword to enable/disable all messages of the respective message class.

                                Thus, a minimal log configuration could look like this:

                                logconfig = syncstatus +sysevents

                                This would just list the synchronizations state of xntpd and the major system events. For a simple reference server, the following minimum message configuration could be useful:

                                logconfig = syncall +clockall

                                This configuration will list all clock information and synchronization information. All other events and messages about peers, system events and so on is suppressed.

                                Variables

                                Most variables used by the NTP protocol can be examined with the xntpdc (mode 7 messages) and the ntpq (mode 6 messages). Currently, very few variables can be modified via mode 6 messages. These variables are either created with the setvar directive or the leap warning bits. The leap warning bits can be set in the leapwarning variable up to one month ahead. Both the leapwarning and leapindication variables have a slightly different encoding than the usual leap bits interpretation:

                                00
                                The daemon passes the leap bits of its synchronization source (usual mode of operation).

                                01/10
                                A leap second is added/deleted (operator forced leap second).

                                11
                                Leap information from the synchronizations source is ignored (thus LEAP_NOWARNING is passed on).

                                David L. Mills (mills@udel.edu)
                                07070100002cd6000081a400000064000000640000000132b6099800002168000000200000001b00000000000000000000001700000009reloc/html/monopt.html Monitoring Options

                                Monitoring Options


                                Monitoring Support

                                xntpd includes a comprehensive monitoring facility suitable for continuous, long term recording of server and client timekeeping performance. See the statistics command below for a listing and example of each type of statistics currently supported. Statistic files are managed using file generation sets and scripts in the ./scripts directory of this distribution. Using these facilities and Unix cron jobs, the data can be automatically summarized and archived for retrospective analysis.

                                Monitoring Commands

                                statistics name [ ... ]
                                Enables writing of statistics records. Currently, three kinds of name statistics are supported.

                                loopstats
                                Enables recording of loop filter statistics information. Each update of the local clock outputs a line of the following form to the file generation set named loopstats:
                                48773 10847.650 0.0001307 17.3478 2
                                
                                The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next three fields show time offset in seconds, frequency offset in parts-per-million and time constant of the clock-discipline algorithm at each update of the clock.

                                peerstats
                                Enables recording of peer statistics information. This includes statistics records of all peers of a NTP server and of special signals, where present and configured. Each valid update appends a line of the following form to the current element of a file generation set named peerstats:
                                48773 10847.650 127.127.4.1 9714 -0.001605 0.00000 0.00142
                                
                                The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next two fields show the peer address in dotted-quad notation and status, respectively. The status field is encoded in hex in the format described in Appendix A of the NTP specification RFC 1305. The final three fields show the offset, delay and dispersion, all in seconds.

                                clockstats
                                Enables recording of clock driver statistics information. Each update received from a clock driver outputs a line of the following form to the file generation set named clockstats:
                                49213 525.624 127.127.4.1 93 226 00:08:29.606 D
                                
                                The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field shows the clock address in dotted-quad notation, The final field shows the last timecode received from the clock in decoded ASCII format, where meaningful. In some clock drivers a good deal of additional information can be gathered and displayed as well. See information specific to each clock for further details.

                                statsdir directory_path
                                Indicates the full path of a directory where statistics files should be created (see below). This keyword allows the (otherwise constant) filegen filename prefix to be modified for file generation sets, which is useful for handling statistics logs.

                                filegen name [ file filename ] [ type typename ] [ flag flagval ] [ link | nolink ] [ enable | disable ]
                                Configures setting of generation file set name. Generation file sets provide a means for handling files that are continuously growing during the lifetime of a server. Server statistics are a typical example for such files. Generation file sets provide access to a set of files used to store the actual data. At any time at most one element of the set is being written to. The type given specifies when and how data will be directed to a new element of the set. This way, information stored in elements of a file set that are currently unused are available for administrational operations without the risk of disturbing the operation of xntpd. (Most important: they can be removed to free space for new data produced.)

                                Filenames of set members are built from three elements:
                                prefix
                                This is a constant filename path. It is not subject to modifications via the filegen option. It is defined by the server, usually specified as a compile-time constant. It may, however, be configurable for individual file generation sets via other commands. For example, the prefix used with loopstats and peerstats generation can be configured using the statsdir option explained above.

                                filename
                                This string is directly concatenated to the prefix mentioned above (no intervening / (slash)). This can be modified using the file argument to the filegen statement. No .. elements are allowed in this component to prevent filenames referring to parts outside the filesystem hierarchy denoted by prefix.

                                suffix
                                This part is reflects individual elements of a file set. It is generated according to the type of a file set.

                                A file generation set is characterized by its type. The following types are supported:
                                none
                                The file set is actually a single plain file.

                                pid
                                One element of file set is used per incarnation of a xntpd server. This type does not perform any changes to file set members during runtime, however it provides an easy way of separating files belonging to different xntpd server incarnations. The set member filename is built by appending a . (dot) to concatenated prefix and filename strings, and appending the decimal representation of the process ID of the xntpd server process.

                                day
                                One file generation set element is created per day. A day is defined as the period between 00:00 and 24:00 UTC. The file set member suffix consists of a . (dot) and a day specification in the form YYYYMMDD. YYYY is a 4-digit year number (e.g., 1992). MM is a two digit month number. DD is a two digit day number. Thus, all information written at 10 December 1992 would end up in a file named prefix filename.19921210.

                                week
                                Any file set member contains data related to a certain week of a year. The term week is defined by computing day-of-year modulo 7. Elements of such a file generation set are distinguished by appending the following suffix to the file set filename base: A dot, a 4-digit year number, the letter W, and a 2-digit week number. For example, information from January, 10th 1992 would end up in a file with suffix .1992W1.

                                month
                                One generation file set element is generated per month. The file name suffix consists of a dot, a 4-digit year number, and a 2-digit month.

                                year
                                One generation file element is generated per year. The filename suffix consists of a dot and a 4 digit year number.

                                age
                                This type of file generation sets changes to a new element of the file set every 24 hours of server operation. The filename suffix consists of a dot, the letter a, and an 8-digit number. This number is taken to be the number of seconds the server is running at the start of the corresponding 24-hour period.

                                Information is only written to a file generation by specifying enabl; output is prevented by specifying disable.

                                It is convenient to be able to access the current element of a file generation set by a fixed name. This feature is enabled by specifying link and disabled using nolink. If link is specified, a hard link from the current file set element to a file without suffix is created. When there is already a file with this name and the number of links of this file is one, it is renamed appending a dot, the letter C, and the pid of the xntpd server process. When the number of links is greater than one, the file is unlinked. This allows the current file to be accessed by a constant name.

                                David L. Mills (mills@udel.edu)
                                07070100002cd7000081a400000064000000640000000132b6099800010185000000200000001b00000000000000000000001600000009reloc/html/notes.html Notes on Configuring NTP and Setting up a NTP Subnet

                                Notes on Configuring NTP and Setting up a NTP Subnet


                                Introduction

                                This document is a collection of notes concerning the use of xntpd and related programs, and on coping with the Network Time Protocol (NTP) in general. It is a major rewrite and update of an earlier document written by Dennis Ferguson of the University of Toronto and includes many changes and additions resulting from the NTP Version 3 specification and new implementation features. It supersedes the earlier document, which should no longer be used for new configurations.

                                xntpd is a complete implementation of the NTP Version 3 specification, as defined in: Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. (Abstract: PostScript), (Body: PostScript), (Appendices: PostScript), with additional features planned for future versions. It also retains compatibility with both NTP Version 2, as defined in RFC-1119, and NTP Version 1, as defined in RFC-1059, although this compatibility is sometimes strained and only semiautomatic. In order to support in principle the ultimate precision of about 232 picoseconds in the NTP specification, xntpd uses no floating-point arithmetic and instead manipulates the 64-bit NTP timestamps as unsigned 64-bit integers. xntpd fully implements NTP Versions 2 and 3 authentication and a mode-6 control- message facility. As extensions to the specification, a flexible address-and-mask restriction facility has been included, along with a private mode-7 control-message facility used to remotely reconfigure the system and monitor a considerable amount of internal detail.

                                The code is biased towards the needs of a busy time server with numerous, often hundreds, of clients and other servers. Tables are hashed to allow efficient handling of many associations, though at the expense of additional overhead when the number of associations is small. Many fancy features have been included to permit efficient management and monitoring of a busy primary server, features which are probably excess baggage for a high stratum client. In such cases, a stripped-down version of the protocol, the Simple Network Time Protocol (SNTP) can be used. SNTP and NTP servers and clients can interwork in most situations, as described in: Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-1769, University of Delaware, March 1995, 14 pp. (ASCII).

                                The code was written with near demonic attention to details which can affect precision and as a consequence should be able to make good use of high performance, special purpose hardware such as precision oscillators and radio clocks. The present code supports a number of radio clocks, including those for the WWV, CHU, WWVB, MSF, DCF77, GOES and GPS radio and satellite time services and USNO, ACTS and PTB modem time services. The server methodically avoids the use of Unix-specific library routines where possible by implementing local versions, in order to aid in porting the code to perverse Unix and non-Unix platforms.

                                While this implementation conforms in most respects to the NTP specification RFC-1305, a number of improvements have been made which are described in the conformance statement in the Further Information and Bibliography page. It has been specifically tuned to achieve the highest accuracy possible on whatever hardware and operating-system platform is available. In general, its precision and stability are limited only by the characteristics of the onboard clock source used by the hardware and operating system, usually an uncompensated crystal oscillator. On modern RISC-based processors connected directly to radio clocks via serial- asynchronous interfaces, the accuracy is usually limited by the radio clock and interface to the order of a millisecond or two. The code includes special features to support a pulse-per-second (PPS) signal generated by some radio clocks. When used in conjunction with a suitable hardware level converter, the accuracy can be improved to a few tens of microseconds. Further improvement is possible using an outboard, stabilized frequency source, in which the accuracy and stability are limited only by the characteristics of that source.

                                The xntp3 distribution includes, in addition to the daemon itself (xntpd), several utility programs, including two remote-monitoring programs ( ntpq, xntpdc), a remote clock-setting program similar to the Unix rdate program (ntpdate), a traceback utility useful to discover suitable synchronization sources (ntptrace), and various programs used to configure the local platform and calibrate the intrinsic errors. NTP has been ported to a large number of platforms, including most RISC and CISC workstations and mainframes manufactured today. Example configuration files for many models of these machines are included in the xntp3 distribution. While in most cases the standard version of the implementation runs with no hardware or operating-system modifications, not all features of the distribution are available on all platforms. For instance, a special feature allowing Sun workstations to achieve accuracies in the order of 100 microseconds requires some minor changes and additions to the kernel and input/output support.

                                There are, however, several drawbacks to all of this. xntpd is quite fat. This is rotten if your intended platform for the daemon is memory limited. xntpd uses SIGIO for all input, a facility which appears to not enjoy universal support and whose use seems to exercise the parts of your vendors' kernels which are most likely to have been done poorly. The code is unforgiving in the face of kernel problems which affect performance, and generally requires that you repair the problems in order to achieve acceptable performance. The code has a distinctly experimental flavour and contains features which could charitably be termed failed experiments, but which have not been completely hacked out. Much was learned from the addition of support for a variety of radio clocks, with the result that this support could use some rewriting.

                                How NTP Works

                                The approach used by NTP to achieve reliable time synchronization from a set of possibly unreliable remote time servers is somewhat different than other protocols. In particular, NTP does not attempt to synchronize clocks to each other. Rather, each server attempts to synchronize to Universal Coordinated Time (UTC) using the best available source and available transmission paths to that source. This is a fine point which is worth understanding. A group of NTP-synchronized clocks may be close to each other in time, but this is not a consequence of the clocks in the group having synchronized to each other, but rather because each clock has synchronized closely to UTC via the best source it has access to. As such, trying to synchronize a set of clocks to a set of servers whose time is not in mutual agreement may not result in any sort of useful synchronization of the clocks, even if you don't care about UTC. However, in networks isolated from UTC sources, provisions can made to nominate one of them as a phantom UTC source.

                                NTP operates on the premise that there is one true standard time, and that if several servers which claim synchronization to standard time disagree about what that time is, then one or more of them must be broken. There is no attempt to resolve differences more gracefully since the premise is that substantial differences cannot exist. In essence, NTP expects that the time being distributed from the root of the synchronization subnet will be derived from some external source of UTC (e.g., a radio clock). This makes it somewhat inconvenient (though by no means impossible) to synchronize hosts together without a reliable source of UTC to synchronize them to. If your network is isolated and you cannot access other people's servers across the Internet, a radio clock may make a good investment.

                                Time is distributed through a hierarchy of NTP servers, with each server adopting a stratum which indicates how far away from an external source of UTC it is operating at. Stratum-1 servers, which are at the top of the pile (or bottom, depending on your point of view), have access to some external time source, usually a radio clock synchronized to time signal broadcasts from radio stations which explicitly provide a standard time service. A stratum-2 server is one which is currently obtaining time from a stratum-1 server, a stratum-3 server gets its time from a stratum-2 server, and so on. To avoid long lived synchronization loops the number of strata is limited to 15.

                                Each client in the synchronization subnet (which may also be a server for other, higher stratum clients) chooses exactly one of the available servers to synchronize to, usually from among the lowest stratum servers it has access to. This is, however, not always an optimal configuration, for indeed NTP operates under another premise as well, that each server's time should be viewed with a certain amount of distrust. NTP really prefers to have access to several sources of lower stratum time (at least three) since it can then apply an agreement algorithm to detect insanity on the part of any one of these. Normally, when all servers are in agreement, NTP will choose the best of these, where "best" is defined in terms of lowest stratum, closest (in terms of network delay) and claimed precision, along with several other considerations. The implication is that, while one should aim to provide each client with three or more sources of lower stratum time, several of these will only be providing backup service and may be of lesser quality in terms of network delay and stratum (i.e., a same-stratum peer which receives time from lower stratum sources the local server doesn't access directly can also provide good backup service).

                                Finally, there is the issue of association modes. There are a number of modes in which NTP servers can associate with each other, with the mode of each server in the pair indicating the behaviour the other server can expect from it. In particular, when configuring a server to obtain time from other servers, there is a choice of two modes which may be used. Configuring an association in symmetric-active mode (usually indicated by a peer declaration in the configuration file) indicates to the remote server that one wishes to obtain time from the remote server and that one is also willing to supply time to the remote server if need be. This mode is appropriate in configurations involving a number of redundant time servers interconnected via diverse network paths, which is presently the case for most stratum-1 and stratum-2 servers on the Internet today. Configuring an association in client mode (usually indicated by a server declaration in the configuration file) indicates that one wishes to obtain time from the remote server, but that one is not willing to provide time to the remote server. This mode is appropriate for file-server and workstation clients that do not provide synchronization to other local clients. Client mode is also useful for boot-date-setting programs and the like, which really have no time to provide and which don't retain state about associations over the longer term.

                                Where the requirements in accuracy and reliability are modest, clients can be configured to use broadcast and/or multicast modes. These modes are not normally utilized by servers with dependent clients. The advantage of these modes is that clients do not need to be configured for a specific server, so that all clients operating can use the same configuration file. Broadcast mode requires a broadcast server on the same subnet, while multicast mode requires support for IP multicast on the client machine, as well as connectivity via the MBONE to a multicast server. Since broadcast messages are not propagated by routers, only those broadcast servers on the same subnet will be used. There is at present no way to select which of possibly many multicast servers will be used, since all operate on the same group address.

                                Where the maximum accuracy and reliability provided by NTP are needed, clients and servers operate in either client/server or symmetric modes. Symmetric modes are most often used between two or more servers operating as a mutually redundant group. In these modes, the servers in the group members arrange the synchronization paths for maximum performance, depending on network jitter and propagation delay. If one or more of the group members fail, the remaining members automatically reconfigure as required. Dependent clients and servers normally operate in client/server mode, in which a client or dependent server can be synchronized to a group member, but no group member can synchronize to the client or dependent server. This provides protection against malfunctions or protocol attacks.

                                Servers that provide synchronization to a sizeable population of clients normally operate as a group of three or more mutually redundant servers, each operating with three or more stratum-one or stratum-two servers in client-server modes, as well as all other members of the group in symmetric modes. This provides protection against malfunctions in which one or more servers fail to operate or provide incorrect time. The NTP algorithms have been specifically engineered to resist attacks where some fraction of the configured synchronization sources accidently or purposely provide incorrect time. In these cases a special voting procedure is used to identify spurious sources and discard their data.

                                Configuring Your Subnet

                                At startup time the xntpd daemon running on a host reads the initial configuration information from a file, usually /etc/ntp.conf, unless a different name has been specified at compile time. Putting something in this file which will enable the host to obtain time from somewhere else is usually the first big hurdle after installation of the software itself, which is described in the Building and Installing the Distribution page. At its simplest, what you need to do in the configuration file is declare the servers that the daemon should poll for time synchronization. In principle, no such list is needed if some other time server operating in broadcast/multicast mode is available, which requires the client to operate in a broadcastclient mode.

                                In the case of a workstation operating in an enterprise network for a public or private organization, there is often an administrative department that coordinates network services, including NTP. Where available, the addresses of appropriate servers can be provided by that department. However, if this infrastructure is not available, it is necessary to explore some portion of the existing NTP subnet now running in the Internet. There are at present many thousands of time servers running NTP in the Internet, a significant number of which are willing to provide a public time-synchronization service. Some of these are listed in the list of public time servers in the NTP web page. This page is updated on a regular basis using information provided voluntarily by various site administrators. There are other ways to explore the nearby subnet using the ntptrace and xntpdc programs.

                                It is vital to carefully consider the issues of robustness and reliability when selecting the sources of synchronization. Normally, not less than three sources should be available, preferably selected to avoid common points of failure. It is usually better to choose sources which are likely to be "close" to you in terms of network topology, though you shouldn't worry overly about this if you are unable to determine who is close and who isn't. Normally, it is much more serious when a server becomes faulty and delivers incorrect time than when it simply stops operating, since an NTP-synchronized host normally can coast for hours or even days without its clock accumulating serious error approaching a second, for instance. Selecting at least three sources from different operating administrations, where possible, is the minimum recommended, although a lesser number could provide acceptable service with a degraded degree of robustness.

                                Normally, it is not considered good practice for a single workstation to request synchronization from a primary (stratum-1) time server. At present, these servers provide synchronization for hundreds of clients in many cases and could, along with the network access paths, become seriously overloaded if large numbers of workstation clients requested synchronization directly. Therefore, workstations located in sparsely populated administrative domains with no local synchronization infrastructure should request synchronization from nearby stratum-2 servers instead. In most cases the keepers of those servers listed in the NTP page provide unrestricted access without prior permission; however, in all cases it is considered polite to notify the administrator listed in the file upon commencement of regular service. In all cases the access mode and notification requirements listed in the file must be respected.

                                In the case of a gateway or file server providing service to a significant number of workstations or file servers in an enterprise network it is even more important to provide multiple, redundant sources of synchronization and multiple, diversity-routed, network access paths. The preferred configuration is at least three administratively coordinated time servers providing service throughout the administrative domain including campus networks and subnetworks. Each of these should obtain service from at least two different outside sources of synchronization, preferably via different gateways and access paths. These sources should all operate at the same stratum level, which is one less than the stratum level to be used by the local time servers themselves. In addition, each of these time servers should peer with all of the other time servers in the local administrative domain at the stratum level used by the local time servers, as well as at least one (different) outside source at this level. This configuration results in the use of six outside sources at a lower stratum level (toward the primary source of synchronization, usually a radio clock), plus three outside sources at the same stratum level, for a total of nine outside sources of synchronization. While this may seem excessive, the actual load on network resources is minimal, since the interval between polling messages exchanged between peers usually ratchets back to no more than one message every 17 minutes.

                                The stratum level to be used by the local time servers is an engineering choice. As a matter of policy, and in order to reduce the load on the primary servers, it is desirable to use the highest stratum consistent with reliable, accurate time synchronization throughout the administrative domain. In the case of enterprise networks serving hundreds or thousands of client file servers and workstations, conventional practice is to obtain service from stratum-1 primary servers such as listed in the NTP page. When choosing sources away from the primary sources, the particular synchronization path in use at any time can be verified using the ntptrace program included in the xntp3 distribution. It is important to avoid loops and possible common points of failure when selecting these sources. Note that, while NTP detects and rejects loops involving neighboring servers, it does not detect loops involving intervening servers. In the unlikely case that all primary sources of synchronization are lost throughout the subnet, the remaining servers on that subnet can form temporary loops and, if the loss continues for an interval of many hours, the servers will drop off the subnet and free-run with respect to their internal (disciplined) timing sources. After some period with no outside timing source (currently one day), a host will declare itself unsynchronized and provide this information to local application programs.

                                In many cases the purchase of one or more radio clocks is justified, in which cases good engineering practice is to use the configurations described above anyway and connect the radio clock to one of the local servers. This server is then encouraged to participate in a special primary-server subnetwork in which each radio-equipped server peers with several other similarly equipped servers. In this way the radio-equipped server may provide synchronization, as well as receive synchronization, should the local or remote radio clock(s) fail or become faulty. xntpd treats attached radio clock(s) in the same way as other servers and applies the same criteria and algorithms to the time indications, so can detect when the radio fails or becomes faulty and switch to alternate sources of synchronization. It is strongly advised, and in practice for most primary servers today, to employ the authentication or access-control features of the NTP specification in order to protect against hostile intruders and possible destabilization of the time service. Using this or similar strategies, the remaining hosts in the same administrative domain can be synchronized to the three (or more) selected time servers. Assuming these servers are synchronized directly to stratum-1 sources and operate normally as stratum-2, the next level away from the primary source of synchronization, for instance various campus file servers, will operate at stratum 3 and dependent workstations at stratum 4. Engineered correctly, such a subnet will survive all but the most exotic failures or even hostile penetrations of the various, distributed timekeeping resources.

                                The above arrangement should provide very good, robust time service with a minimum of traffic to distant servers and with manageable loads on the local servers. While it is theoretically possible to extend the synchronization subnet to even higher strata, this is seldom justified and can make the maintenance of configuration files unmanageable. Serving time to a higher stratum peer is very inexpensive in terms of the load on the lower stratum server if the latter is located on the same concatenated LAN. When justified by the accuracy expectations, NTP can be operated in broadcast and multicast modes, so that clients need only listen for periodic broadcasts and do not need to send anything.

                                When planning your network you might, beyond this, keep in mind a few generic don'ts, in particular:

                                • Don't synchronize a local time server to another peer at the same stratum, unless the latter is receiving time from lower stratum sources the former doesn't talk to directly. This minimizes the occurrence of common points of failure, but does not eliminate them in cases where the usual chain of associations to the primary sources of synchronization are disrupted due to failures.

                                • Don't configure peer associations with higher stratum servers. Let the higher strata configure lower stratum servers, but not the reverse. This greatly simplifies configuration file maintenance, since there is usually much greater configuration churn in the high stratum clients such as personal workstations.

                                • Don't synchronize more than one time server in a particular administrative domain to the same time server outside that domain. Such a practice invites common points of failure, as well as raises the possibility of massive abuse, should the configuration file be automatically distributed do a large number of clients.

                                There are many useful exceptions to these rules. When in doubt, however, follow them.

                                Configuring Your Server or Client

                                As mentioned previously, the configuration file is usually called /etc/ntp.conf. This is an ASCII file conforming to the usual comment and whitespace conventions. A working configuration file might look like (In this and other examples, do not copy this directly.):

                                     # peer configuration for host whimsy
                                     # (expected to operate at stratum 2)
                                
                                     server rackety.udel.edu
                                     server umd1.umd.edu
                                     server lilben.tn.cornell.edu
                                
                                     driftfile /etc/ntp.drift
                                

                                (Note the use of host names, although host addresses in dotted-quad notation can also be used. It is always preferable to use names rather than addresses, since over time the addresses can change, while the names seldom change.)

                                This particular host is expected to operate as a client at stratum 2 by virtue of the server keyword and the fact that two of the three servers declared (the first two) have radio clocks and usually run at stratum 1. The third server in the list has no radio clock, but is known to maintain associations with a number of stratum 1 peers and usually operates at stratum 2. Of particular importance with the last host is that it maintains associations with peers besides the two stratum 1 peers mentioned. This can be verified using the ntpq program mentioned above. When configured using the server keyword, this host can receive synchronization from any of the listed servers, but can never provide synchronization to them.

                                Unless restricted using facilities described later, this host can provide synchronization to dependent clients, which do not have to be listed in the configuration file. Associations maintained for these clients are transitory and result in no persistent state in the host. These clients are normally not visible using the ntpq program included in the distribution; however, xntpd includes a monitoring feature (described later) which caches a minimal amount of client information useful for debugging administrative purposes.

                                A time server expected to both receive synchronization from another server, as well as to provide synchronization to it, is declared using the peer keyword instead of the server keyword. In all other aspects the server operates the same in either mode and can provide synchronization to dependent clients or other peers. If a local source of UTC time is available, it is considered good engineering practice to declare time servers outside the administrative domain as peer and those inside as server in order to provide redundancy in the global Internet, while minimizing the possibility of instability within the domain itself. A time server in one domain can in principle heal another domain temporarily isolated from all other sources of synchronization. However, it is probably unwise for a casual workstation to bridge fragments of the local domain which have become temporarily isolated.

                                Note the inclusion of a driftfile declaration. One of the things the NTP daemon does when it is first started is to compute the error in the intrinsic frequency of the clock on the computer it is running on. It usually takes about a day or so after the daemon is started to compute a good estimate of this (and it needs a good estimate to synchronize closely to its server). Once the initial value is computed, it will change only by relatively small amounts during the course of continued operation. The driftfile declaration indicates to the daemon the name of a file where it may store the current value of the frequency error so that, if the daemon is stopped and restarted, it can reinitialize itself to the previous estimate and avoid the day's worth of time it will take to recompute the frequency estimate. Since this is a desirable feature, a driftfile declaration should always be included in the configuration file.

                                An implication in the above is that, should xntpd be stopped for some reason, the local platform time will diverge from UTC by an amount that depends on the intrinsic error of the clock oscillator and the time since last synchronized. In view of the length of time necessary to refine the frequency estimate, every effort should be made to operate the daemon on a continuous basis and minimize the intervals when for some reason it is not running.

                                Xntp3 Versus Previous Versions

                                There are several items of note when dealing with a mixture of xntp3 and previous distributions of NTP Version 2 (xntpd) and NTP Version 1 (ntp3.4). The xntp3 implementation conforms to the NTP Version 3 specification. As such, by default when no additional information is available concerning the preferences of the peer, xntpd claims to be version 3 in the packets that it sends.

                                An NTP implementation conforming to a previous version specification ordinarily discards packets from a later version. However, in most respects documented in RFC-1305, The version 2 implementation is compatible with the version-3 algorithms and protocol. The version 1 implementation contains most of the version-2 algorithms, but without important features for clock selection and robustness. Nevertheless, in most respects the NTP version are backwards compatible. The sticky part here is that, when either version 2 or version 1 implementation receives a packet claiming to be from a version-3 server, it discards it without further processing. Hence there is a danger that in some situations synchronization with previous versions will fail.

                                xntpd is aware of this problem. In particular, when xntpd is polled first by a host claiming to be a previous version 1 or version 2 implementation, xntpd claims to be a version 1 or 2 implementation, respectively, in packets returned to the poller. This allows xntpd to serve previous version clients transparently. The trouble occurs when an previous version is to be included in an xntpd configuration file. With no further indication, xntpd will send packets claiming to be version 3 when it polls. To get around this, xntpd allows a qualifier to be added to configuration entries to indicate which version to use when polling. Hence the entries

                                     # specify NTP version 1
                                
                                     server mimsy.mil version 1     # server running ntpd version 1
                                     server apple.com version 2     # server running xntpd version 2
                                

                                will cause version 1 packets to be sent to the host mimsy.mil and version 2 packets to be sent to apple.com. If you are testing xntpd against previous version servers you will need to be careful about this. Note that, as indicated in the RFC-1305 specification, there is no longer support for the original NTP specification, popularly called NTP Version 0.

                                Traffic Monitoring

                                xntpd handles peers whose stratum is higher than the stratum of the local server and pollers using client mode by a fast path which minimizes the work done in responding to their polls, and normally retains no memory of these pollers. Sometimes, however, it is interesting to be able to determine who is polling the server, and how often, as well as who has been sending other types of queries to the server.

                                To allow this, xntpd implements a traffic monitoring facility which records the source address and a minimal amount of other information from each packet which is received by the server. This feature is normally enabled, but can be disabled if desired using the configuration file entry:

                                     # disable monitoring feature
                                
                                     disable monitor
                                

                                The recorded information can be displayed using the xntpdc query program, described briefly below.

                                Address-and-Mask Restrictions

                                The address-and-mask configuration facility supported by xntpd is quite flexible and general, but is not an integral part of the NTP Version 3 specification. The major drawback is that, while the internal implementation is very nice, the user interface is not. For this reason it is probably worth doing an example here. Briefly, the facility works as follows. There is an internal list, each entry of which holds an address, a mask and a set of flags. On receipt of a packet, the source address of the packet is compared to each entry in the list, with a match being posted when the following is true:

                                     (source_addr & mask) == (address & mask)
                                

                                A particular source address may match several list entries. In this case the entry with the most one bits in the mask is chosen. The flags associated with this entry are used to control the access.

                                In the current implementation the flags always add restrictions. In effect, an entry with no flags set leaves matching hosts unrestricted. An entry can be added to the internal list using a restrict declaration. The flags associated with the entry are specified textually. For example, the notrust flag indicates that hosts matching this entry, while treated normally in other respects, shouldn't be trusted to provide synchronization even if otherwise so enabled. The nomodify flag indicates that hosts matching this entry should not be allowed to do run-time configuration. There are many more flags, see the xntpd - Network Time Protocol (NTP) daemon page.

                                Now the example. Suppose you are running the server on a host whose address is 128.100.100.7. You would like to ensure that run time reconfiguration requests can only be made from the local host and that the server only ever synchronizes to one of a pair of off-campus servers or, failing that, a time source on net 128.100. The following entries in the configuration file would implement this policy:

                                     # by default, don't trust and don't allow modifications
                                
                                     restrict default notrust nomodify
                                
                                     # these guys are trusted for time, but no modifications allowed
                                
                                     restrict 128.100.0.0 mask 255.255.0.0 nomodify
                                     restrict 128.8.10.1 nomodify
                                     restrict 192.35.82.50 nomodify
                                
                                     # the local addresses are unrestricted
                                
                                     restrict 128.100.100.7
                                     restrict 127.0.0.1
                                

                                The first entry is the default entry, which all hosts match and hence which provides the default set of flags. The next three entries indicate that matching hosts will only have the nomodify flag set and hence will be trusted for time. If the mask isn't specified in the restrict keyword, it defaults to 255.255.255.255. Note that the address 128.100.100.7 matches three entries in the table, the default entry (mask 0.0.0.0), the entry for net 128.100 (mask 255.255.0.0) and the entry for the host itself (mask 255.255.255.255). As expected, the flags for the host are derived from the last entry since the mask has the most bits set.

                                The only other thing worth mentioning is that the restrict declarations apply to packets from all hosts, including those that are configured elsewhere in the configuration file and even including your clock pseudopeer(s), if any. Hence, if you specify a default set of restrictions which you don't wish to be applied to your configured peers, you must remove those restrictions for the configured peers with additional restrict declarations mentioning each peer separately.

                                Authentication

                                xntpd supports the optional authentication procedure specified in the NTP Version 2 and 3 specifications. Briefly, when an association runs in authenticated mode, each packet transmitted has appended to it a 32-bit key ID and a 64/128-bit cryptographic checksum of the packet contents computed using either the Data Encryption Standard (DES) or Message Digest (MD5) algorithms. Note that, while either of these algorithms provide sufficient protection from message- modification attacks, distribution of the former algorithm implementation is restricted to the U.S. and Canada, while the latter presently is free from such restrictions. With either algorithm the receiving peer recomputes the checksum and compares it with the one included in the packet. For this to work, the peers must share at least one encryption key and, furthermore, must associate the shared key with the same key ID.

                                This facility requires some minor modifications to the basic packet processing procedures, as required by the specification. These modifications are enabled by the enable authenticate configuration declaration. In particular, in authenticated mode, peers which send unauthenticated packets, peers which send authenticated packets which the local server is unable to decrypt and peers which send authenticated packets encrypted using a key we don't trust are all marked untrustworthy and unsuitable for synchronization. Note that, while the server may know many keys (identified by many key IDs), it is possible to declare only a subset of these as trusted. This allows the server to share keys with a client which requires authenticated time and which trusts the server, but which is not trusted by the server. Also, some additional configuration language is required to specify the key ID to be used to authenticate each configured peer association. Hence, for a server running in authenticated mode, the configuration file might look similar to the following:

                                     # peer configuration for 128.100.100.7
                                     # (expected to operate at stratum 2)
                                     # fully authenticated this time
                                
                                     peer 128.100.49.105 key 22 # suzuki.ccie.utoronto.ca
                                     peer 128.8.10.1 key 4    # umd1.umd.edu
                                     peer 192.35.82.50 key 6  # lilben.tn.cornell.edu
                                
                                
                                     authenticate yes         # enable authentication
                                     keys /usr/local/etc/ntp.keys  # path for key file
                                     trustedkey 1 2 14 15     # define trusted keys
                                     requestkey 15            # key (7) for accessing server variables
                                     controlkey 15            # key (6) for accessing server variables
                                
                                     authdelay 0.000094       # authentication delay (Sun4c/50 IPX)
                                

                                There are a couple of previously unmentioned things in here. The authenticate yes line enables authentication processing, while the keys /usr/local/etc/ntp.keys specifies the path to the keys file (see below and the xntpd document page for details of the file format). The trustedkey declaration identifies those keys that are known to be uncompromised; the remainder presumably represent the expired or possibly compromised keys. Both sets of keys must be declared by key identifier in the ntp.keys file described below. This provides a way to retire old keys while minimizing the frequency of delicate key-distribution procedures. The requestkey 15 line establishes the key to be used for mode- 6 control messages as specified in RFC-1305 and used by the ntpq utility program, while the controlkey 15 establishes the key to be used for mode-7 private control messages used by the xntpdc utility program. These keys are used to prevent unauthorized modification of daemon variables.

                                The authdelay declaration is an estimate of the amount of processing time taken between the freezing of a transmit timestamp and the actual transmission of the packet when authentication is enabled (i.e. more or less the time it takes for the DES or MD5 routine to encrypt a single block), and is used as a correction for the transmit timestamp. This can be computed for your CPU by the authspeed program included in the distribution. The usage is illustrated by the following:

                                     # for DES keys
                                
                                     authspeed -n 30000 auth.samplekeys
                                     # for MD5 keys
                                
                                     authspeed -mn 30000 auth.samplekeys
                                

                                Additional utility programs included in the ./authstuff directory can be used to generate random keys, certify implementation correctness and display sample keys. As a general rule, keys should be chosen randomly, except possibly the request and control keys, which must be entered by the user as a password.

                                The ntp.keys file contains the list of keys and associated key IDs the server knows about (for obvious reasons this file is better left unreadable by anyone except root). The contents of this file might look like:

                                     # ntp keys file (ntp.keys)
                                
                                     1    N    29233E0461ECD6AE    # des key in NTP format
                                     2    M    RIrop8KPPvQvYotM    # md5 key as an ASCII random string
                                     14   M    sundial             # md5 key as an ASCII string
                                     15   A    sundial             # des key as an ASCII string
                                
                                     # the following 3 keys are identical
                                
                                     10   A    SeCReT
                                     10   N    d3e54352e5548080
                                     10   S    a7cb86a4cba80101
                                

                                In the keys file the first token on each line indicates the key ID, the second token the format of the key and the third the key itself. There are four key formats. An A indicates a DES key written as a 1-to-8 character string in 7-bit ASCII representation, with each character standing for a key octet (like a Unix password). An S indicates a DES key written as a hex number in the DES standard format, with the low order bit (LSB) of each octet being the (odd) parity bit. An N indicates a DES key again written as a hex number, but in NTP standard format with the high order bit of each octet being the (odd) parity bit (confusing enough?). An M indicates an MD5 key written as a 1-to-31 character ASCII string in the A format. Note that, because of the simple tokenizing routine, the characters ' ', '#', '\t', '\n' and '\0' can't be used in either a DES or MD5 ASCII key. Everything else is fair game, though. Key 0 (zero) is used for special purposes and should not appear in this file.

                                The big trouble with the authentication facility is the keys file. It is a maintenance headache and a security problem. This should be fixed some day. Presumably, this whole bag of worms goes away if/when a generic security regime for the Internet is established.

                                Query Programs

                                Three utility query programs are included with the distribution, ntpq, ntptrace and xntpdc. ntpq is a handy program which sends queries and receives responses using NTP standard mode-6 control messages. Since it uses the standard control protocol specified in RFC-1305, it may be used with NTP Version 2 and Version 3 implementations for both Unix and Fuzzball, but not Version 1 implementations. It is most useful to query remote NTP implementations to assess timekeeping accuracy and expose bugs in configuration or operation.

                                ntptrace can be used to display the current synchronization path from a selected host through possibly intervening servers to the primary source of synchronization, usually a radio clock. It works with both version 2 and version 3 servers, but not version 1.

                                xntpdc is a horrid program which uses NTP private mode-7 control messages to query local or remote servers. The format and contents of these messages are specific to this version of xntpd and some older versions. The program does allow inspection of a wide variety of internal counters and other state data, and hence does make a pretty good debugging tool, even if it is frustrating to use. The other thing of note about xntpdc is that it provides a user interface to the run time reconfiguration facility. See the respective document pages for details on the use of these programs.

                                Run-Time Reconfiguration

                                xntpd was written specifically to allow its configuration to be fully modifiable at run time. Indeed, the only way to configure the server is at run time. The configuration file is read only after the rest of the server has been initialized into a running default-configured state. This facility was included not so much for the benefit of Unix, where it is handy but not strictly essential, but rather for dedicated platforms where the feature is more important for maintenance. Nevertheless, run time configuration works very nicely for Unix servers as well.

                                Nearly all of the things it is possible to configure in the configuration file may be altered via NTP mode-7 messages using the xntpdc program. Mode-6 messages may also provide some limited configuration functionality (though the only thing you can currently do with mode-6 messages is set the leap-second warning bits) and the ntpq program provides generic support for the latter. The leap bits that can be set in the leap_warning variable (up to one month ahead) and in the leap_indication variable have a slightly different encoding than the usual interpretation:

                                        Value           Action
                                
                                         00             The daemon passes the leap bits of its
                                                        synchronisation source (usual mode of operation)
                                
                                        01/10   A leap second is added/deleted
                                
                                         11             Leap information from the synchronization source
                                                        is ignored (thus LEAP_NOWARNING is passed on)
                                

                                Mode-6 and mode-7 messages which would modify the configuration of the server are required to be authenticated using standard NTP authentication. To enable the facilities one must, in addition to specifying the location of a keys file, indicate in the configuration file the key IDs to be used for authenticating reconfiguration commands. Hence the following fragment might be added to a configuration file to enable the mode-6 (ntpq) and mode-7 (xntpdc) facilities in the daemon:

                                     # specify mode-6 and mode-7 trusted keys
                                
                                     requestkey 65535    # for mode-7 requests
                                     controlkey 65534    # for mode-6 requests
                                

                                If the requestkey and/or the controlkey configuration declarations are omitted from the configuration file, the corresponding run-time reconfiguration facility is disabled.

                                The query programs require the user to specify a key ID and a key to use for authenticating requests to be sent. The key ID provided should be the same as the one mentioned in the configuration file, while the key should match that corresponding to the key ID in the keys file. As the query programs prompt for the key as a password, it is useful to make the request and control authentication keys typeable (in ASCII format) from the keyboard.

                                Name Resolution

                                xntpd includes the capability to specify host names requiring resolution in peer and server declarations in the configuration file. However, in some outposts of the Internet, name resolution is unreliable and the interface to the Unix resolver routines is synchronous. The hangups and delays resulting from name-resolver clanking can be unacceptable once the NTP server is running (and remember it is up and running before the configuration file is read). However, it is advantageous to resolve time server names, since their addresses are occasionally changed.

                                In order to prevent configuration delays due to the name resolver, the daemon runs the name resolution process in parallel with the main daemon code. When the daemon comes across a peer or server entry with a non-numeric host address, it records the relevant information in a temporary file and continues on. When the end of the configuration file has been reached and one or more entries requiring name resolution have been found, the server runs the name resolver from the temporary file. The server then continues on normally but with the offending peers/servers omitted from its configuration.

                                As each name is resolved, it configures the associated entry into the server using the same mode-7 run time reconfiguration facility that xntpdc uses. If temporary resolver failures occur, the resolver will periodically retry the requests until a definite response is received. The program will continue to run until all entries have been resolved.

                                Dealing with Frequency Tolerance Violations (tickadj and Friends)

                                The NTP Version 3 specification RFC-1305 calls for a maximum oscillator frequency tolerance of +-100 parts-per-million (PPM), which is representative of those components suitable for use in relatively inexpensive workstation platforms. For those platforms meeting this tolerance, NTP will automatically compensate for the frequency errors of the individual oscillator and no further adjustments are required, either to the configuration file or to various kernel variables.

                                However, in the case of certain notorious platforms, in particular Sun 4.1.1 systems, the 100-ppm tolerance is routinely violated. In such cases it may be necessary to adjust the values of certain kernel variables; in particular, tick and tickadj. The variable tick is the increment in microseconds added to the system time on each interval- timer interrupt, while the variable tickadj is used by the time adjustment code as a slew rate, in microseconds per tick. When the time is being adjusted via a call to the system routine adjtime(), the kernel increases or reduces tick by tickadj microseconds per tick until the specified adjustment has been completed. Unfortunately, in most Unix implementations the tick increment must be either zero or plus/minus exactly tickadj microseconds, meaning that adjustments are truncated to be an integral multiple of tickadj (this latter behaviour is a misfeature, and is the only reason the tickadj code needs to concern itself with the internal implementation of tickadj at all). In addition, the stock Unix implementation considers it an error to request another adjustment before a prior one has completed.

                                Thus, to make very sure it avoids problems related to the roundoff, the xntpd daemon reads the values of tick and tickadj from the kernel when it starts. It then ensures that all adjustments given to adjtime() are an even multiple of tickadj microseconds and computes the largest adjustment that can be completed in the adjustment interval (using both the value of tick and the value of tickadj) so it can avoid exceeding this limit.

                                Unfortunately, the value of tickadj set by default is almost always too large for xntpd. NTP operates by continuously making small adjustments to the clock, usually at one- second intervals. If tickadj is set too large, the adjustments will disappear in the roundoff; while, if tickadj is too small, NTP will have difficulty if it needs to make an occasional large adjustment. While the daemon itself will read the kernel's values of these variables, it will not change the values, even if they are unsuitable. You must do this yourself before the daemon is started using the tickadj program included in the ./util directory of the distribution. Note that the latter program will also compute an optimal value of tickadj for NTP use based on the kernel's value of tick.

                                The tickadj program can reset several other kernel variables if asked. It can change the value of tick if asked. This is handy to compensate for kernel bugs which cause the clock to run with a very large frequency error, as with SunOS 4.1.1 systems. It can also be used to set the value of the kernel dosynctodr variable to zero. This variable controls whether to synchronize the system clock to the time-of-day clock, something you really don't want to be happen when xntpd is trying to keep it under control.

                                In order to maintain reasonable correctness bounds, as well as reasonably good accuracy with acceptable polling intervals, xntpd will complain if the frequency error is greater than 100 PPM. For machines with a value of tick in the 10-ms range, a change of one in the value of tick will change the frequency by about 100 PPM. In order to determine the value of tick for a particular CPU, disconnect the machine from all sources of time (dosynctodr = 0) and record its actual time compared to an outside source (eyeball-and-wristwatch will do) over a day or more. Multiply the time change over the day by 0.116 and add or subtract the result to tick, depending on whether the CPU is fast or slow. An example call to tickadj useful on SunOS 4.1.1 is:

                                     tickadj -t 9999 -a 5 -s
                                

                                which sets tick 100 PPM fast, tickadj to 5 microseconds and turns off the clock/calendar chip fiddle. This line can be added to the rc.local configuration file to automatically set the kernel variables at boot time.

                                All this stuff about diddling kernel variables so the NTP daemon will work is really silly. If vendors would ship machines with clocks that kept reasonable time and would make their adjtime() system call apply the slew it is given exactly, independent of the value of tickadj, all this could go away. This is in fact the case on current SunOS 5.3 systems.

                                Tuning Your Subnet

                                There are several parameters available for tuning the NTP subnet for maximum accuracy and minimum jitter. One of these is the prefer configuration declaration described in Mitigation Rules and the prefer Keyword documentation page. When more than one eligible server exists, the NTP clock-selection and combining algorithms act to winnow out all except the "best" set of servers using several criteria based on differences between the readings of different servers and between successive readings of the same server. The result is usually a set of surviving servers that are apparently statistically equivalent in accuracy, jitter and stability. The population of survivors remaining in this set depends on the individual server characteristics measured during the selection process and may vary from time to time as the result of normal statistical variations. In LANs with high speed RISC-based time servers, the population can become somewhat unstable, with individual servers popping in and out of the surviving population, generally resulting in a regime called clockhopping.

                                When only the smallest residual jitter can be tolerated, it may be convenient to elect one of the servers at each stratum level as the preferred one using the keyword prefer on the configuration declaration for the selected server:

                                     # preferred server declaration
                                
                                     peer rackety.udel.edu prefer    # preferred server
                                

                                The preferred server will always be included in the surviving population, regardless of its characteristics and as long as it survives preliminary sanity checks and validation procedures.

                                The most useful application of the prefer keyword is in high speed LANs equipped with precision radio clocks, such as a GPS receiver. In order to insure robustness, the hosts need to include outside peers as well as the GPS-equipped server; however, as long as that server is running, the synchronization preference should be that server. The keyword should normally be used in all cases in order to prefer an attached radio clock. It is probably inadvisable to use this keyword for peers outside the LAN, since it interferes with the carefully crafted judgement of the selection and combining algorithms.

                                Provisions for Leap Seconds and Accuracy Metrics

                                xntpd understands leap seconds and will attempt to take appropriate action when one occurs. In principle, every host running xntpd will insert a leap second in the local timescale in precise synchronization with UTC. This requires that the leap-warning bits be activated some time prior to the occurrence of a leap second at the primary (stratum 1) servers. Subsequently, these bits are propagated throughout the subnet depending on these servers by the NTP protocol itself and automatically implemented by xntpd and the time- conversion routines of each host. The implementation is independent of the idiosyncrasies of the particular radio clock, which vary widely among the various devices, as long as the idiosyncratic behavior does not last for more than about 20 minutes following the leap. Provisions are included to modify the behavior in cases where this cannot be guaranteed. While provisions for leap seconds have been carefully crafted so that correct timekeeping immediately before, during and after the occurrence of a leap second is scrupulously correct, stock Unix systems are mostly inept in responding to the available information. This caveat goes also for the maximum-error and statistical-error bounds carefully calculated for all clients and servers, which could be very useful for application programs needing to calibrate the delays and offsets to achieve a near-simultaneous commit procedure, for example. While this information is maintained in the xntpd data structures, there is at present no way for application programs to access it. This may be a topic for further development.

                                Clock Support Overview

                                xntpd was designed to support radio (and other external) clocks and does some parts of this function with utmost care. Clocks are treated by the protocol as ordinary NTP peers, even to the point of referring to them with an (invalid) IP host address. Clock addresses are of the form 127.127.t.u, where t specifies the particular type of clock (i.e., refers to a particular clock driver) and u is a unit number whose interpretation is clock-driver dependent. This is analogous to the use of major and minor device numbers by Unix and permits multiple instantiations of clocks of the same type on the same server, should such magnificent redundancy be required.

                                Because clocks look much like peers, both configuration file syntax and run time reconfiguration commands can be used to control clocks in the same way as ordinary peers. Clocks are configured via server declarations in the configuration file, can be started and stopped using xntpdc and are subject to address-and-mask restrictions much like a normal peer, should this stretch of imagination ever be useful. As a concession to the need to sometimes transmit additional information to clock drivers, an additional configuration file is available: the fudge statement. This enables one to specify the values of two time quantities, two integral values and two flags, the use of which is dependent on the particular clock driver. For example, to configure a PST radio clock which can be accessed through the serial device /dev/pst1, with propagation delays to WWV and WWVH of 7.5 and 26.5 milliseconds, respectively, on a machine with an imprecise system clock and with the driver set to disbelieve the radio clock once it has gone 30 minutes without an update, one might use the following configuration file entries:

                                     # radio clock fudge fiddles
                                
                                     server 127.127.3.1
                                     fudge 127.127.3.1 time1 0.0075 time2 0.0265
                                     fudge 127.127.3.1 value2 30 flag1 1
                                

                                Additional information on the interpretation of these data with respect to various radio clock drivers is given in the Reference Clock Drivers document page and in the individual driver documents accessible via that page.

                                Towards the Ultimate Tick

                                This section considers issues in providing precision time synchronization in NTP subnets which need the highest quality time available in the present technology. These issues are important in subnets supporting real-time services such as distributed multimedia conferencing and wide-area experiment control and monitoring.

                                In the Internet of today synchronization paths often span continents and oceans with moderate to high variations in delay due to traffic spasms. NTP is specifically designed to minimize timekeeping jitter due to delay variations using intricately crafted filtering and selection algorithms; however, in cases where these variations are as much as a second or more, the residual jitter following these algorithms may still be excessive. Sometimes, as in the case of some isolated NTP subnets where a local source of precision time is available, such as a PPS signal produced by a calibrated cesium clock, it is possible to remove the jitter and retime the local clock oscillator of the NTP server. This has turned out to be a useful feature to improve the synchronization quality of time distributed in remote places where radio clocks are not available. In these cases special features of the distribution are used together with the PPS signal to provide a jitter-free timing signal, while NTP itself is used to provide the coarse timing and resolve the seconds numbering.

                                Most available radio clocks can provide time to an accuracy in the order of milliseconds, depending on propagation conditions, local noise levels and so forth. However, as a practical matter, all clocks can occasionally display errors significantly exceeding nominal specifications. Usually, the algorithms used by NTP for ordinary network peers, as well as radio clock "peers" will detect and discard these errors as discrepancies between the disciplined local clock oscillator and the decoded time message produced by the radio clock. Some radio clocks can produce a special PPS signal which can be interfaced to the server platform in a number of ways and used to substantially improve the (disciplined) clock oscillator jitter and wander characteristics by at least an order of magnitude. Using these features it is possible to achieve accuracies in the order of 100 microseconds with a fast RISC- based platform.

                                There are three ways to implement PPS support, depending on the radio clock model, platform model and serial line interface. These are described in detail in the application notes mentioned in the The Network Time Protocol (NTP) Distribution document page. Each of these requires circuitry to convert the TTL signal produced by most clocks to the EIA levels used by most serial interfaces. The Gadget Box PPS Level Converter and CHU Modem document page describes a device designed to do this. Besides being useful for this purpose, this device includes an inexpensive modem designed for use with the Canadian CHU time/frequency radio station.

                                In order to select the appropriate implementation, it is important to understand the underlying PPS mechanism used by xntpd. The PPS support depends on a continuous source of PPS pulses used to calculate an offset within +-500 milliseconds relative to the local clock. The serial timecode produced by the radio or the time determined by NTP in absence of the radio is used to adjust the local clock within +-128 milliseconds of the actual time. As long as the local clock is within this interval the PPS support is used to discipline the local clock and the timecode used only to verify that the local clock is in fact within the interval. Outside this interval the PPS support is disabled and the timecode used directly to control the local clock.

                                Parting Shots

                                There are several undocumented programs which can be useful in unusual cases. They can be found in the ./clockstuff and ./authstuff directories of the distribution. One of these is the propdelay program, which can compute high frequency radio propagation delays between any two points whose latitude and longitude are known. The program understands something about the phenomena which allow high frequency radio propagation to occur, and will generally provide a better estimate than a calculation based on the great circle distance. Other programs of interest include clktest, which allows one to exercise the generic clock line discipline, and chutest, which runs the basic reduction algorithms used by the daemon on data received from a serial port.


                                David L. Mills (mills@udel.edu)
                                07070100002cd8000081a400000064000000640000000132b6099800001821000000200000001b00000000000000000000001800000009reloc/html/ntpdate.html ntpdate - set the date and time via NTP

                                ntpdate - set the date and time via NTP


                                Synopsis

                                ntpdate [ -bBdosu ] [ -a key ] [ -e authdelay ] [ -k keyfile ] [ -o version ] [ -p samples ] [ -t timeout ] server [ ... ]

                                Description

                                ntpdate sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the server arguments to determine the correct time. It must be run as root on the local host. A number of samples are obtained from each of the servers specified and a subset of the NTP clock filter and selection algorithms are applied to select the best of these. Note that the accuracy and reliability of ntpdate depends on the number of servers, the number of polls each time it is run and the interval between runs.

                                ntpdate can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon xntpd. It is also possible to run ntpdate from a cron script. However, it is important to note that ntpdate with contrived cron scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since ntpdate does not discipline the host clock frequency as does xntpd, the accuracy using ntpdate is limited.

                                Time adjustments are made by ntpdate in one of two ways. If ntpdate determines the clock is in error more than 0.5 second it will simply step the time by calling the system settimeofday() routine. If the error is less than 0.5 seconds, it will slew the time by calling the system adjtime() routine. The latter technique is less disruptive and more accurate when the error is small, and works quite well when ntpdate is run by cron every hour or two.

                                ntpdate will decline to set the date if an NTP server daemon (e.g., xntpd) is running on the same host. When running ntpdate on a regular basis from cron as an alternative to running a daemon, doing so once every hour or two will result in precise enough timekeeping to avoid stepping the clock.

                                Command Line Options

                                -a key
                                Enable the authentication function and specify the key identifier to be used for authentication as the argument keyntpdate. The keys and key identifiers must match in both the client and server key files. The default is to disable the authentication function.

                                -B
                                Force the time to always be slewed using the adjtime() system call, even if the measured offset is greater than +-128 ms. The default is to step the time using settimeofday() if the offset is greater than +-128 ms. Note that, if the offset is much greater than +-128 ms in this case, that it can take a long time (hours) to slew the clock to the correct value. During this time. the host should not be used to synchronize clients.

                                -b
                                Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call. This option should be used when called from a startup file at boot time.

                                -d
                                Enable the debugging mode, in which ntpdate will go through all the steps, but not adjust the local clock. Information useful for general debugging will also be printed.

                                -e authdelay
                                Specify the processing delay to perform an authentication function as the value authdelay, in seconds and fraction (see xntpd for details). This number is usually small enough to be negligible for most purposes, though specifying a value may improve timekeeping on very slow CPU's.

                                -k keyfile
                                Specify the path for the authentication key file as the string keyfile. The default is /etc/ntp.keys. This file should be in the format described in xntpd.

                                -o version
                                Specify the NTP version for outgoint packets as the integer version, which can be 1 or 2. The default is 3. This allows ntpdate to be used with older NTP versions.

                                -p samples
                                Specify the number of samples to be acquired from each server as the integer samples, with values from 1 to 8 inclusive. The default is 4.

                                -s
                                Divert logging output from the standard output (default) to the system syslog facility. This is designed primarily for convenience of cron scripts.

                                -t timeout
                                Specify the maximum time waiting for a server response as the value timeout, in seconds and fraction. The value is is rounded to a multiple of 0.2 seconds. The default is 1 second, a value suitable for polling across a LAN.

                                -u
                                Direct ntpdate to use an unprivileged port or outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronise with hosts beyond the firewall. Note that the -d option always uses unprivileged ports.

                                Files

                                /etc/ntp.keys - encryption keys used by ntpdate.

                                Bugs

                                The slew adjustment is actually 50% larger than the measured offset, since this (it is argued) will tend to keep a badly drifting clock more accurate. This is probably not a good idea and may cause a troubling hunt for some values of the kernel variables tick and tickadj.


                                David L. Mills (mills@udel.edu)
                                07070100002cd9000081a400000064000000640000000132b60998000040c1000000200000001b00000000000000000000001500000009reloc/html/ntpq.html ntpq - standard NTP query program

                                ntpq - standard NTP query program


                                Synopsis

                                ntpq [ -inp ] [ -c command ] [ host ] [ ... ]

                                Description

                                ntpq is used to query NTP servers which implement the recommended NTP mode 6 control message format about current state and to request changes in that state. The program may be run either in interactive mode or controlled using command line arguments. Requests to read and write arbitrary variables can be assembled, with raw and pretty-printed output options being available. ntpq can also obtain and print a list of peers in a common format by sending multiple queries to the server.

                                If one or more request options is included on the command line when ntpq is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, ntpq will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. ntpq will prompt for commands if the standard input is a terminal device.

                                ntpq uses NTP mode 6 packets to communicate with the NTP server, and hence can be used to query any compatable server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. ntpq makes one attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.

                                Command line options are described following. Specifying a command line option other than -i or -n will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, ntpq will attempt to read interactive format commands from the standard input.

                                -c
                                The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given.

                                -i
                                Force ntpq to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.

                                -n
                                Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.

                                -p
                                Print a list of the peers known to the server as well as a summary of their state. This is equivalent to the peers interactive command.

                                Internal Commands

                                Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a "<", followed by a file name, to the command line. A number of interactive format commands are executed entirely within the ntpq program itself and do not result in NTP mode 6 requests being sent to a server. These are described following.

                                ? [ command_keyword ]
                                helpl [ command_keyword ]
                                A "?" by itself will print a list of all the command keywords known to this incarnation of ntpq. A "?" followed by a command keyword will print funcation and usage information about the command. This command is probably a better source of information about ntpq than this manual page.

                                addvars variable_name [ = value ] [ ... ]
                                rmvars variable_name [ ... ]
                                clearvars
                                The data carried by NTP mode 6 messages consists of a list of items of the form variable_name = value, where the " = value" is ignored, and can be omitted, in requests to the server to read variables. ntpq maintains an internal list in which data to be included in control messages can be assembled, and sent using the readlist and writelist commands described below. The addvars command allows variables and their optional values to be added to the list. If more than one variable is to be added, the list should be comma-separated and not contain white space. The rmvars command can be used to remove individual variables from the list, while the clearlist command removes all variables from the list.

                                authenticate yes | no
                                Normally ntpq does not authenticate requests unless they are write requests. The command authenticate yes causes ntpq to send authentication with all requests it makes. Authenticated requests causes some servers to handle requests slightly differently, and can occasionally melt the CPU in fuzzballs if you turn authentication on before doing a peer display.

                                cooked
                                Causes output from query commands to be "cooked". Variables which are recognized by the server will have their values reformatted for human consumption. Variables which ntpq thinks should have a decodeable value but didn't are marked with a trailing "?".

                                debug more | less | off
                                Turns internal query program debugging on and off.

                                delay milliseconds
                                Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.

                                host hostname
                                Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.

                                hostnames [ yes | no ]
                                If "yes" is specified, host names are printed in information displays. If "no" is specified, numeric addresses are printed instead. The default is "yes", unless modified using the command line -n switch.

                                keyid keyid
                                This command allows the specification of a key number to be used to authenticate configuration requests. This must correspond to a key number the server has been configured to use for this purpose.

                                ntpversion 1 | 2 | 3
                                Sets the NTP version number which ntpq claims in packets. Defaults to 3, Note that mode 6 control messages (and modes, for that matter) didn't exist in NTP version 1. There appear to be no servers left which demand version 1.

                                quit
                                Exit ntpq.

                                passwd
                                This command prompts you to type in a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for use by the NTP server for this purpose if such requests are to be successful.

                                raw
                                Causes all output from query commands is printed as received from the remote server. The only formating/intepretation done on the data is to transform nonascii data into a printable (but barely understandable) form.

                                timeout millseconds
                                Specify a timeout period for responses to server queries. The default is about 5000 milliseconds. Note that since ntpq retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.

                                Control Message Commands

                                Each peer known to an NTP server has a 16 bit integer association identifier assigned to it. NTP control messages which carry peer variables must identify the peer the values correspond to by including its association ID. An association ID of 0 is special, and indicates the variables are system variables, whose names are drawn from a separate name space.

                                Control message commands result in one or more NTP mode 6 messages being sent to the server, and cause the data returned to be printed in some format. Most commands currently implemented send a single message and expect a single response. The current exceptions are the peers command, which will send a preprogrammed series of messages to obtain the data it needs, and the mreadlist and mreadvar commands, which will iterate over a range of associations.

                                associations
                                Obtains and prints a list of association identifiers and peer statuses for in-spec peers of the server being queried. The list is printed in columns. The first of these is an index numbering the associations from 1 for internal use, the second the actual association identifier returned by the server and the third the status word for the peer. This is followed by a number of columns containing data decoded from the status word. Note that the data returned by the "associations" command is cached internally in ntpq. The index is then of use when dealing with stupid servers which use association identifiers which are hard for humans to type, in that for any subsequent commands which require an association identifier as an argument, the form &index may be used as an alternative.

                                clockvar [ assocID ] [ variable_name [ =
                                cv [ assocID ] [ variable_name [ = value [ ... ] ] [ ... ]
                                Requests that a list of the server's clock variables be sent. Servers which have a radio clock or other external synchronization will respond positively to this. If the association identifier is omitted or zero the request is for the variables of the "system clock" and will generally get a positive response from all servers with a clock. If the server treats clocks as pseudo-peers, and hence can possibly have more than one clock connected at once, referencing the appropriate peer association ID will show the variables of a particular clock. Omitting the variable list will cause the server to return a default variable display.

                                lassocations
                                Obtains and prints a list of association identifiers and peer statuses for all associations for which the server is maintaining state. This command differs from the "associations" command only for servers which retain state for out-of-spec client associations (i.e., fuzzballs). Such associations are normally omitted from the display when the "associations" command is used, but are included in the output of "lassociations".

                                lpassociations
                                Print data for all associations, including out-of-spec client associations, from the internally cached list of associations. This command differs from "passociations" only when dealing with fuzzballs.

                                lpeers
                                Like R peers, except a summary of all associations for which the server is maintaining state is printed. This can produce a much longer list of peers from fuzzball servers.

                                mreadlist assocID assocID
                                mrl assocID assocID
                                Like the readlist command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent associations command.

                                mreadvar assocID assocID [ variable_name [ = value [ ... ]
                                mrv assocID assocID [ variable_name [ = value [ ... ]
                                Like the readvar command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent associations command.

                                opeers
                                An old form of the peers command with the reference ID replaced by the local interface address.

                                passociations
                                Prints association data concerning in-spec peers from the internally cached list of associations. This command performs identically to the "associations" except that it displays the internally stored data rather than making a new query.

                                peers
                                Obtains a list of in-spec peers of the server, along with a summary of each peer's state. Summary information includes the address of the remote peer, the reference ID (0.0.0.0 if the refID is unknown), the stratum of the remote peer, the type of the peer (local, unicast, multicast or broadcast), when the last packet was received, the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in seconds.

                                The character in the left margin indicates the fate of this peer in the clock selection process. The codes mean: <sp> discarded due to high stratum and/or failed sanity checks; "x" designated falsticker by the intersection algorithm; "." culled from the end of the candidate list; "-" discarded by the clustering algorithmi; "+" included in the final selection set; "#" selected for synchronizatio;n but distance exceeds maximum; "*" selected for synchronization; and "o" selected for synchronization, PPS signal in use.

                                Note that since the peers command depends on the ability to parse the values in the responses it gets it may fail to work from time to time with servers which poorly control the data formats.

                                The contents of the host field may be one of four forms. It may be a host name, an IP address, a reference clock implementation name with its parameter or "REFCLK(<implementation number>, <parameter>)". On "hostnames no" only IP- addresses will be displayed.

                                pstatus assocID
                                Sends a read status request to the server for the given association. The names and values of the peer variables returned will be printed. Note that the status word from the header is displayed preceding the variables, both in hexidecimal and in pidgeon English.

                                readlist [ assocID ]
                                rl [ assocID ]
                                Requests that the values of the variables in the internal variable list be returned by the server. If the association ID is omitted or is 0 the variables are assumed to be system variables. Otherwise they are treated as peer variables. If the internal variable list is empty a request is sent without data, which should induce the remote server to return a default display.

                                readvar assocID variable_name [ = value ] [ ... ]
                                rv assocID [ variable_name [ = value ] [ ... ]
                                Requests that the values of the specified variables be returned by the server by sending a read variables request. If the association ID is omitted or is given as zero the variables are system variables, otherwise they are peer variables and the values returned will be those of the corresponding peer. Omitting the variable list will send a request with no data which should induce the server to return a default display.

                                writevar assocID variable_name [ = value [ ... ]
                                Like the readvar request, except the specified variables are written instead of read.

                                writelist [ assocID ]
                                Like the readlist request, except the internal list variables are written instead of read.

                                Bugs

                                The peers command is non-atomic and may occasionally result in spurious error messages about invalid associations occurring and terminating the command. The timeout time is a fixed constant, which means you wait a long time for timeouts since it assumes sort of a worst case. The program should improve the timeout estimate as it sends queries to a particular host, but doesn't.


                                David L. Mills (mills@udel.edu)
                                07070100002cda000081a400000064000000640000000132b60998000006bb000000200000001b00000000000000000000001800000009reloc/html/ntptime.html ntptime - read kernel time variables

                                ntptime - read kernel time variables


                                Synopsis

                                ntptime [ -chr ] [ -e est_error ] [ -f frequency ] [ -m max_error ] [ -o offset ] [ -s status ] [ -t time_constant ]

                                Description

                                This program is useful only with special kernels described in the A Kernel Model for Precision Timekeeping page. It reads and displays time-related kernel variables using the ntp_gettime() system call. A similar display can be obtained using the xntpdc program and kerninfo command.

                                Options

                                -c
                                Display the execution time of ntptime itself.

                                -e est_error
                                Specify estimated error, in microseconds.

                                -f frequency
                                Specify frequency offset, in parts per million.

                                -h
                                Display times in Unix timeval format. Default is NTP format.

                                -l
                                Specify the leap bits as a code from 0 to 3.

                                -m max_error
                                Display help information.

                                -o offset
                                Specify clock offset, in microseconds.

                                -r
                                Display Unix and NTP times in raw format.

                                -s status
                                Specify clock status. Better know what you are doing.

                                -t time_constant
                                Specify time constant, an integer in the range 0-4.

                                David L. Mills (mills@udel.edu)
                                07070100002cdb000081a400000064000000640000000132b60998000008a2000000200000001b00000000000000000000001900000009reloc/html/ntptrace.html ntptrace - trace a chain of NTP servers back to the primary source

                                ntptrace - trace a chain of NTP servers back to the primary source


                                Synopsis

                                ntptrace [ -vdn ] [ -r retries ] [ -t timeout ] [ server ]

                                Description

                                ntptrace determines where a given Network Time Protocol (NTP) server gets its time from, and follows the chain of NTP servers back to their master time source. If given no arguments, it starts with localhost. Here is an example of the output from ntptrace:

                                % ntptrace
                                localhost: stratum 4, offset 0.0019529, synch distance 0.144135
                                server2ozo.com: stratum 2, offset 0.0124263, synch distance 0.115784
                                usndh.edu: stratum 1, offset 0.0019298, synch distance 0.011993, refid
                                'WWVB'
                                

                                On each line, the fields are (left to right): the host name, the host stratum, the time offset between that host and the local host (as measured by ntptrace; this is why it is not always zero for "localhost"), the host synchronization distance, and (only for stratum-1 servers) the reference clock ID. All times are given in seconds. Note that the stratum is the server hop count to the primary source, while the synchronization distance is the estimated error relative to the primary source. These terms are precisely defined in RFC-1305.

                                Options

                                -d
                                Turns on some debugging output.

                                -n
                                Turns off the printing of host names; instead, host IP addresses are given. This may be useful if a nameserver is down.

                                -r retries
                                Sets the number of retransmission attempts for each host (default = 5).

                                -t timeout
                                Sets the retransmission timeout (in seconds) (default = 2).

                                -v
                                Prints verbose information about the NTP servers.

                                Bugs

                                This program makes no attempt to improve accuracy by doing multiple samples.


                                David L. Mills (mills@udel.edu)
                                07070100002cdc000081a400000064000000640000000132b6099800003373000000200000001b00000000000000000000001a00000009reloc/html/parsedata.htmlXNTP PARSE clock data formats

                                XNTP PARSE clock data formats

                                The parse driver currently supports several clocks with different query mechanisms. In order for you to find a sample that might be similar to a clock you might want to integrate into parse i'll sum up the major features of the clocks (this information is distributed in the parse/clk_*.c and xntpd/refclock_parse.c files).


                                Meinberg clocks

                                Meinberg: start=<STX>, end=<ETX>, sync on start
                                      pattern="\2D:  .  .  ;T: ;U:  .  .  ;    \3"
                                      pattern="\2  .  .  ;  ;   :  :  ;        \3"
                                      pattern="\2  .  .  ;  ;   :  :  ;    :  ;        ;   .         .       "
                                

                                Meinberg is a german manufacturer of time code receivers. Those clocks have a pretty common output format in the stock version. In order to support NTP Meinberg was so kind to produce some special versions of the firmware for the use with NTP. So, if you are going to use a Meinberg clock please ask whether there is a special Uni Erlangen version.

                                General characteristics:
                                Meinberg clocks primarily output pulse per second and a describing ASCII string. This string can be produced in two modes. either upon the reception of a question mark or every second. NTP uses the latter mechanism. The DCF77 variants have a pretty good relationship between RS232 time code and the PPS signal while the GPS receiver has no fixed timeing between the datagram and the pulse (you need to use PPS with GPS!) on DCF77 you might get away without the PPS signal.

                                	The preferred tty setting for Meinberg is:
                                		CFLAG		(B9600|CS7|PARENB|CREAD|HUPCL)
                                		IFLAG		(IGNBRK|IGNPAR|ISTRIP)
                                		OFLAG		0
                                		LFLAG		0
                                        

                                The clock is run at datagram once per second. Stock dataformat is:

                                    <STX>D:<dd>.<mm>.<yy>;T:<w>;U:<hh>:<mm>:<ss>;<S><F><D><A><ETX>
                                pos:  0  00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2  2  3  3   3
                                      1  23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8  9  0  1   2
                                
                                <STX>           = '\002' ASCII start of text
                                <ETX>           = '\003' ASCII end of text
                                <dd>,<mm>,<yy>  = day, month, year(2 digits!!)
                                <w>             = day of week (sunday= 0)
                                <hh>,<mm>,<ss>  = hour, minute, second
                                <S>             = '#' if never synced since powerup else ' ' for DCF U/A 31
                                                  '#' if not PZF sychronisation available else ' ' for PZF 535
                                <F>             = '*' if time comes from internal quartz else ' '
                                <D>             = 'S' if daylight saving time is active else ' '
                                <A>             = '!' during the hour preceeding an daylight saving time
                                                      start/end change
                                

                                For the university of Erlangen a special format was implemented to support LEAP announcement and anouncement of alternate antenna.

                                Version for UNI-ERLANGEN Software is: PZFUERL V4.6 (Meinberg)

                                The use of this software release (or higher) is *ABSOLUTELY* recommended (ask for PZFUERL version as some minor HW fixes have been introduced) due to the LEAP second support and UTC indication. The standard timecode does not indicate when the timecode is in UTC (by front panel configuration) thus we have no chance to find the correct utc offset. For the standard format do not ever use UTC display as this is not detectable in the time code !!!

                                
                                        <STX><dd>.<mm>.<yy>; <w>; <hh>:<mm>:<ss>; <U><S><F><D><A><L><R><ETX>
                                    pos:  0   00 0 00 0 00 11 1 11 11 1 11 2 22 22 2  2  2  2  2  3  3   3
                                          1   23 4 56 7 89 01 2 34 56 7 89 0 12 34 5  6  7  8  9  0  1   2
                                    <STX>           = '\002' ASCII start of text
                                    <ETX>           = '\003' ASCII end of text
                                    <dd>,<mm>,<yy>  = day, month, year(2 digits!!)
                                    <w>             = day of week (sunday= 0)
                                    <hh>,<mm>,<ss>  = hour, minute, second
                                    <U>             = 'U' UTC time display
                                    <S>             = '#' if never synced since powerup else ' ' for DCF U/A 31
                                                      '#' if not PZF sychronisation available else ' ' for PZF 535
                                    <F>             = '*' if time comes from internal quartz else ' '
                                    <D>             = 'S' if daylight saving time is active else ' '
                                    <A>             = '!' during the hour preceeding an daylight saving time
                                                          start/end change
                                    <L>             = 'A' LEAP second announcement
                                    <R>             = 'R' alternate antenna
                                

                                Meinberg GPS166 receiver
                                You must get the Uni-Erlangen firmware for the GPS receiver support to work to full satisfaction !

                                        <STX><dd>.<mm>.<yy>; <w>; <hh>:<mm>:<ss>; <+/-><00:00>; <U><S><F><D><A><L><R><L>; <position...><ETX>
                                 *
                                           000000000111111111122222222223333333333444444444455555555556666666
                                           123456789012345678901234567890123456789012345678901234567890123456
                                        \x0209.07.93; 5; 08:48:26; +00:00;        ; 49.5736N  11.0280E  373m\x03
                                 *
                                    
                                    <STX>           = '\002' ASCII start of text
                                    <ETX>           = '\003' ASCII end of text
                                    <dd>,<mm>,<yy>  = day, month, year(2 digits!!)
                                    <w>             = day of week (sunday= 0)
                                    <hh>,<mm>,<ss>  = hour, minute, second
                                    <+/->,<00:00>   = offset to UTC
                                    <S>             = '#' if never synced since powerup else ' ' for DCF U/A 31
                                                      '#' if not PZF sychronisation available else ' ' for PZF 535
                                    <U>             = 'U' UTC time display
                                    <F>             = '*' if time comes from internal quartz else ' '
                                    <D>             = 'S' if daylight saving time is active else ' '
                                    <A>             = '!' during the hour preceeding an daylight saving time
                                                          start/end change
                                    <L>             = 'A' LEAP second announcement
                                    <R>             = 'R' alternate antenna (reminiscent of PZF535) usually ' '
                                    <L>		   = 'L' on 23:59:60
                                

                                For the Meinberg parse look into clock_meinberg.c

                                Raw DCF77 Data via serial line

                                RAWDCF: end=TIMEOUT>1.5s, sync each char (any char),generate psuedo time codes, fixed format

                                direct DCF77 code input

                                In Europe it is relatively easy/cheap the receive the german time code transmitter DCF77. The simplest version to process its signal is to feed the 100/200ms pulse of the demodulated AM signal via a level converter to an RS232 port at 50Baud. parse/clk_rawdcf.c holds all necessary decoding logic for the time code which is transmitted each minute for one minute. A bit of the time code is sent once a second.

                                	The preferred tty setting is:
                                		CFLAG           (B50|CS8|CREAD|CLOCAL)
                                		IFLAG		0
                                		OFLAG		0
                                 		LFLAG		0
                                

                                DCF77 raw time code

                                From "Zur Zeit", Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, Mrz 1989

                                	Timecode transmission:
                                
                                	AM:
                                
                                	time marks are send every second except for the second before the
                                	next minute mark
                                	time marks consist of a reduction of transmitter power to 25%
                                	of the nominal level
                                	the falling edge is the time indication (on time)
                                	time marks of a 100ms duration constitute a logical 0
                                	time marks of a 200ms duration constitute a logical 1
                                
                                	FM:
                                
                                	see the spec. (basically a (non-)inverted psuedo random phase shift)
                                
                                	Encoding:
                                
                                	Second	Contents
                                	0  - 10	AM: free, FM: 0
                                	11 - 14	free
                                	15		R     - alternate antenna
                                	16		A1    - expect zone change (1 hour before)
                                	17 - 18	Z1,Z2 - time zone
                                		 0  0 illegal
                                		 0  1 MEZ  (MET)
                                		 1  0 MESZ (MED, MET DST)
                                		 1  1 illegal
                                	19		A2    - expect leap insertion/deletion (1 hour before)
                                	20		S     - start of time code (1)
                                	21 - 24	M1    - BCD (lsb first) Minutes
                                	25 - 27	M10   - BCD (lsb first) 10 Minutes
                                	28		P1    - Minute Parity (even)
                                	29 - 32	H1    - BCD (lsb first) Hours
                                	33 - 34      H10   - BCD (lsb first) 10 Hours
                                	35		P2    - Hour Parity (even)
                                	36 - 39	D1    - BCD (lsb first) Days
                                	40 - 41	D10   - BCD (lsb first) 10 Days
                                	42 - 44	DW    - BCD (lsb first) day of week (1: Monday -> 7: Sunday)
                                	45 - 49	MO    - BCD (lsb first) Month
                                	50           MO0   - 10 Months
                                	51 - 53	Y1    - BCD (lsb first) Years
                                	54 - 57	Y10   - BCD (lsb first) 10 Years
                                	58 		P3    - Date Parity (even)
                                	59		      - usually missing (minute indication), except for leap insertion
                                

                                Schmid clock

                                Schmid clock: needs poll, binary input, end='\xFC', sync start

                                The Schmid clock is a DCF77 receiver that sends a binary time code at the reception of a flag byte. The contents if the flag byte determined the time code format. The binary time code is delimited by the byte 0xFC.

                                	TTY setup is:
                                		CFLAG		(B1200|CS8|CREAD|CLOCAL)
                                		IFLAG		0
                                		OFLAG		0
                                 		LFLAG		0
                                
                                

                                The command to Schmid's DCF77 clock is a single byte; each bit allows the user to select some part of the time string, as follows (the output for the lsb is sent first).

                                	Bit 0:	time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths
                                	Bit 1:	date 3 bytes *binary, not BCD: dd.mm.yy
                                	Bit 2:	week day, 1 byte (unused here)
                                	Bit 3:	time zone, 1 byte, 0=MET, 1=MEST. (unused here)
                                	Bit 4:	clock status, 1 byte,	0=time invalid,
                                					1=time from crystal backup,
                                					3=time from DCF77
                                	Bit 5:	transmitter status, 1 byte,
                                					bit 0: backup antenna
                                					bit 1: time zone change within 1h
                                					bit 3,2: TZ 01=MEST, 10=MET
                                					bit 4: leap second will be
                                						added within one hour
                                					bits 5-7: Zero
                                	Bit 6:	time in backup mode, units of 5 minutes (unused here)
                                

                                Trimble SV6 ASCII time code (TAIP)

                                Trimble SV6: needs poll, ascii timecode, start='>', end='<', query='>QTM<', eol='<'

                                Trimble SV6 is a GPS receiver with PPS output. It needs to be polled. It also need a special tty mode setup (EOL='<').

                                	TTY setup is:
                                		CFLAG            (B4800|CS8|CREAD)
                                		IFLAG            (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
                                		OFLAG            (OPOST|ONLCR)
                                		LFLAG            (ICANON|ECHOK)
                                
                                	Special flags are:
                                		PARSE_F_PPSPPS	    - use CIOGETEV for PPS time stamping
                                		PARSE_F_PPSONSECOND - the time code is not related to
                                				      the PPS pulse (so use the time code
                                				      only for the second epoch)
                                
                                	Timecode
                                	0000000000111111111122222222223333333	/ char
                                	0123456789012345678901234567890123456	\ posn
                                	>RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx<	Actual
                                	----33445566600112222BB7__-_____--99-	Parse
                                	>RTM                      1     ;*  < 	Check
                                

                                ELV DCF7000

                                ELV DCF7000: end='\r', pattern=" - - - - - - - \r"

                                The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'

                                	Timecode
                                	  YY-MM-DD-HH-MM-SS-FF\r
                                
                                		FF&0x1	- DST
                                		FF&0x2	- DST switch warning
                                		FF&0x4  - unsynchronised
                                

                                HOPF 6021 und Kompatible

                                HOPF Funkuhr 6021 mit serieller Schnittstelle Created by F.Schnekenbuehl <frank@comsys.dofn.de> from clk_rcc8000.c Nortel DASA Network Systems GmbH, Department: ND250 A Joint venture of Daimler-Benz Aerospace and Nortel.

                                 hopf Funkuhr 6021 
                                      used with 9600,8N1,
                                      UTC via serial line
                                      "Sekundenvorlauf" ON
                                      ETX zum Sekundenvorlauf ON
                                      dataformat 6021
                                      output time and date
                                      transmit with control characters
                                      transmit evry second
                                 
                                  Type 6021 Serial Output format
                                
                                      000000000011111111 / char
                                      012345678901234567 \ position
                                      sABHHMMSSDDMMYYnre  Actual
                                       C4110046231195     Parse
                                      s              enr  Check
                                
                                  s = STX (0x02), e = ETX (0x03)
                                  n = NL  (0x0A), r = CR  (0x0D)
                                
                                  A B - Status and weekday
                                 
                                  A - Status
                                
                                      8 4 2 1
                                      x x x 0  - no announcement
                                      x x x 1  - Summertime - wintertime - summertime announcement
                                      x x 0 x  - Wintertime
                                      x x 1 x  - Summertime
                                      0 0 x x  - Time/Date invalid
                                      0 1 x x  - Internal clock used 
                                      1 0 x x  - Radio clock
                                      1 1 x x  - Radio clock highprecision
                                
                                  B - 8 4 2 1
                                      0 x x x  - MESZ/MEZ
                                      1 x x x  - UTC
                                      x 0 0 1  - Monday
                                      x 0 1 0  - Tuesday
                                      x 0 1 1  - Wednesday
                                      x 1 0 0  - Thursday
                                      x 1 0 1  - Friday
                                      x 1 1 0  - Saturday
                                      x 1 1 1  - Sunday
                                

                                Diem Computime Clock

                                The Computime receiver sends a datagram in the following format every minute

                                   
                                   Timestamp	T:YY:MM:MD:WD:HH:MM:SSCRLF 
                                   Pos          0123456789012345678901 2 3
                                		0000000000111111111122 2 2
                                   Parse        T:  :  :  :  :  :  :  \r\n
                                   
                                   T	Startcharacter "T" specifies start of the timestamp 
                                   YY	Year MM	Month 1-12 
                                   MD	Day of the month 
                                   WD	Day of week 
                                   HH	Hour 
                                   MM   Minute 
                                   SS   Second
                                   CR   Carriage return 
                                   LF   Linefeed
                                
                                07070100002cdd000081a400000064000000640000000132b6099800002891000000200000001b00000000000000000000001900000009reloc/html/parsenew.htmlMaking PARSE Clocks

                                How to build new PARSE clocks

                                Here is an attempt to sketch out what you need to do in order to add another clock to the parse driver:

                                Prerequisites:

                                • Does the system you want the clock connect to have the include files termio.h or termios.h ? (You need that for the parse driver)

                                What to do:

                                Make a conversion module (libparse/clk_*.c)

                                1. What ist the time code format ?
                                  • find year, month, day, hour, minute, second, status (synchronised or not), possibly time zone information (you need to give the offset to UTC) You will have to convert the data from a string into a struct clocktime:
                                          struct clocktime                /* clock time broken up from time code */
                                          {
                                    	long day;
                                    	long month;
                                    	long year;
                                    	long hour;
                                    	long minute;
                                    	long second;
                                    	long usecond;
                                    	long utcoffset;       /* in seconds */
                                    	time_t utcoffset;     /* true utc time instead of date/time */
                                    	long flags;           /* current clock status */
                                          };
                                    

                                    Conversion is usually simple and straight forward. For the flags following values can be OR'ed together:

                                         PARSEB_ANNOUNCE           switch time zone warning (informational only)
                                         PARSEB_POWERUP            no synchronisation - clock confused (must set then)
                                         PARSEB_NOSYNC             timecode currently not confirmed (must set then)
                                                                   usually on reception error when there is still a
                                                                   chance the the generated time is still ok.
                                    
                                         PARSEB_DST                DST in effect (informational only)
                                         PARSEB_UTC                timecode contains UTC time (informational only)
                                         PARSEB_LEAPADD            LEAP addition warning (prior to leap happening - must set when imminent)
                                    			       also used for time code that do not encode the
                                    			       direction (as this is currently the default).
                                         PARSEB_LEAPDEL            LEAP deletion warning (prior to leap happening - must set when imminent)
                                         PARSEB_ALTERNATE          backup transmitter (informational only)
                                         PARSEB_POSITION           geographic position available (informational only)
                                         PARSEB_LEAPSECOND         actual leap second (this time code is the leap
                                                                   second - informational only)
                                    

                                    These are feature flags denoting items that are supported by the clock:

                                         PARSEB_S_LEAP             supports LEAP - might set PARSEB_LEAP
                                         PARSEB_S_ANTENNA          supports ANTENNA - might set PARSEB_ALTERNATE
                                         PARSEB_S_PPS              supports PPS time stamping
                                         PARSEB_S_POSITION         supports position information (GPS)
                                       

                                    If the utctime field is non zero this value will be take as time code value. This allows for conversion routines that already have the utc time value. The utctime field gives the seconds since Jan 1st 1970, 0:00:00. The useconds field gives the respective usec value. The fields for date and time (down to second resolution) will be ignored.

                                    Conversion is done in the cvt_* routine in parse/clk_*.c files. look in them for examples. The basic structure is:

                                         struct clockformat _format = {
                                           lots of fields for you to fill out (see below)
                                         };
                                    
                                         static cvt_()
                                           ...
                                         {
                                           if () {
                                             return CVT_NONE;
                                           } else {
                                             if () {
                                               ;
                                               return CVT_OK;
                                             } else {
                                               return CVT_FAIL|CVT_BADFMT;
                                             }
                                           }
                                    

                                    The struct clockformat is the interface to the rest of the parse driver - it holds all information necessary for finding the clock message and doing the appropriate time stamping.

                                    struct clockformat
                                    {
                                      u_long (*convert)();
                                      /* conversion routine - your routine - cvt_ */
                                      void          (*syncevt)();
                                      /* routine for handling RS232 sync events (time stamps) - usually sync_simple */
                                      u_long (*syncpps)(); 
                                      /* PPS input routine - usually pps_simple */
                                      u_long (*synth)();
                                      /* time code synthesizer - usually not used - (long (*)())0 */
                                      void           *data;
                                      /* local parameters - any parameters/data/configuration info your conversion
                                         routine might need */
                                      char           *name;
                                      /* clock format name - Name of the time code */
                                      unsigned short  length;
                                      /* maximum length of data packet for your clock format */
                                      u_long   flags;
                                     /* information for the parser what to look for */
                                      struct timeval  timeout;
                                     /* buffer restart after timeout (us) - some clocks preceede new data by
                                        a longer period of silence - unsually not used */
                                      unsigned char   startsym;
                                      /* start symbol - character at the beginning of the clock data */
                                      unsigned char   endsym;
                                      /* end symbol - character at the end of the clock data */
                                      unsigned char   syncsym;
                                      /* sync symbol - character that is "on time" - where the time stamp should be taken */
                                    };
                                    

                                    The flags:

                                      F_START         use startsym to find the beginning of the clock data
                                      F_END           use endsym to find the end of the clock data
                                      SYNC_TIMEOUT    packet restart after timeout in timeout field
                                      SYNC_START      packet start is sync event (time stamp at paket start)
                                      SYNC_END        packet end is sync event (time stamp at paket end)
                                      SYNC_CHAR       special character (syncsym) is sync event
                                      SYNC_ONE        PPS synchronize on 'ONE' transition
                                      SYNC_ZERO       PPS synchronize on 'ZERO' transition
                                      SYNC_SYNTHESIZE generate intermediate time stamps (very special case!)
                                      CVT_FIXEDONLY   convert only in fixed configuration - (data format not
                                                      suitable for auto-configuration)
                                    

                                    The above should have given you some hints on how to build a clk_*.c file with the time code conversion. See the examples and pick a clock closest to yours and tweak the code to match your clock.

                                    In order to make your clk_*.c file usable a reference to the clockformat structure must be put into parse_conf.c.

                                2. TTY setup and initialisation/configuration will be done in xntpd/refclock_parse.c.
                                  • Find out the exact tty settings for your clock (baud rate, parity, stop bits, character size, ...) and note them in terms of termio*.h c_cflag macros.
                                  • in xntpd/refclock_parse.c fill out a new the struct clockinfo element (that allocates a new "IP" address - see comments) (see all the other clocks for example)
                                       struct clockinfo
                                         {
                                          u_long  cl_flags;             /* operation flags (io modes) */
                                             PARSE_F_NOPOLLONLY   always do async io - read whenever input comes
                                    	 PARSE_F_POLLONLY     never do async io - only read when expecting data
                                    	 PARSE_F_PPSPPS       use loopfilter PPS code (CIOGETEV)
                                    	 PARSE_F_PPSONSECOND  PPS pulses are on second
                                    	 usually flags stay 0 as they are used only for special setups
                                    
                                        void  (*cl_poll)();           /* active poll routine */
                                             The routine to call when the clock needs data sent to it in order to
                                             get a time code from the clock (e.g. Trimble clock)
                                    
                                        int   (*cl_init)();           /* active poll init routine */
                                             The routine to call for very special initializations.
                                    
                                        void  (*cl_event)();          /* special event handling (e.g. reset clock) */
                                             What to do, when an event happens - used to re-initialize clocks on timeout.
                                    
                                        void  (*cl_end)();            /* active poll end routine */
                                             The routine to call to undo any special initialisation (free memory/timers)
                                    
                                        void   *cl_data;              /* local data area for "poll" mechanism */
                                             local data for polling routines
                                    
                                        u_fp    cl_rootdelay;         /* rootdelay */
                                             NTP rootdelay estimate (usually 0)
                                    
                                    	     u_long  cl_basedelay;         /* current offset - unsigned l_fp
                                                                                  fractional part (fraction) by
                                                                                  which the RS232 time code is
                                                                                  delayed from the actual time. */
                                    
                                        u_long  cl_ppsdelay;          /* current PPS offset - unsigned l_fp fractional
                                             time (fraction) by which the PPS time stamp is delayed (usually 0)
                                       part */
                                    
                                        char   *cl_id;                /* ID code (usually "DCF") */
                                             Refclock id - (max 4 chars)
                                    
                                        char   *cl_description;       /* device name */
                                             Name of this device.
                                    
                                        char   *cl_format;            /* fixed format */
                                             If the data format cann not ne detected automatically this is the name
                                    	 as in clk_*.c clockformat.
                                    
                                        u_char  cl_type;              /* clock type (ntp control) */
                                             Type if clock as in clock status word (ntp control messages) - usually 0
                                    	 
                                        u_long  cl_maxunsync;         /* time to trust oscillator after loosing synch
                                      */
                                             seconds a clock can be trusted after loosing synchronisation.
                                    
                                        u_long  cl_speed;             /* terminal input & output baudrate */
                                        u_long  cl_cflag;             /* terminal io flags */
                                        u_long  cl_iflag;             /* terminal io flags */
                                        u_long  cl_oflag;             /* terminal io flags */
                                        u_long  cl_lflag;             /* terminal io flags */
                                             termio*.h tty modes.
                                    
                                        u_long  cl_samples;           /* samples for median filter */
                                        u_long  cl_keep;              /* samples for median filter to keep */
                                             median filter parameters - smoothing and rejection of bad samples
                                      } clockinfo[] = {
                                      ...,,...
                                      { < your parameters> },
                                      };
                                    
                                    

                                Well, this is very sketchy, i know. But I hope it helps a little bit. The best way is to look which clock comes closest to your and tweak that code.

                                Two sorts of clocks are used with parse. Clocks that automatically send their time code (once a second) do not need entries in the poll routines because they send the data all the time. The second sort are the clocks that need a command sent to them in order to reply with a time code (like the Trimble clock).

                                For questions: kardel@informatik.uni-erlangen.de.

                                Please include an exact description on how your clock works. (initialisation, TTY modes, strings to be sent to it, responses received from the clock).


                                Frank Kardel 07070100002cde000081a400000064000000640000000132b6099800000ad4000000200000001b00000000000000000000001800000009reloc/html/patches.html Patching Procedures

                                Patching Procedures


                                A distribution so widely used as this one eventually develops numerous barnacles as the result of porting to new systems, idiosyncratic new features and just plain bugs. In order to help keep order and make maintenance bearable, we ask that proposed changes to the distribution be submitted in the following form.

                                1. Please submit patches to David L. Mills (mills@udel.edu) in the form of either unified-diffs (diff -u) or context-diffs (diff -c).

                                2. Please include the output from config.guess in the description of your patch. If config.guess does not produce any output for your machine, please fix that, too!

                                3. Please base the patch on the root directory of the distribution. The preferred procedure here is to copy your patch to the root directory and mumble

                                  patch -p <your_patch>

                                4. Please avoid patching the RCS subdirectories; better yet, clean them out before submitting patches.

                                5. If you have whole new files, as well as patches, wrap the files and patches in a shell script. If you need to compress it, use either GNU zip or the stock Unix compress utility.

                                6. Don't forget the documentation that may be affected by the patch. Send us patches for the ./html files as well. See the A Beginner's Guide to HTML page for a tutorial.

                                7. We would be glad to include your name, electric address and descriptive phrase in the Copyright page, if you wish.

                                Prior to xntp3-5.83 (releases up to and including xntp3.5f) a complete patch history back to the dark ages was kept in the ./patches directory, which might have been helpful to see if the same problem occured in another port, etc. Patches were saved in that directory with file name in the form patch.nnn, where nnn was approaching 200. All patches in that directory have been made; so, if yours was there, it was in the distribution.

                                Since we have been getting multple patches for some bugs, plus many changes are implemented locally, no two maintainers here use the same tools, and since we're not using any bug-tracking software or even source code control, there is currently no tracking of specific changes.

                                The best way to see what's changed between two distributions is to run a diff against them.

                                Thanks for your contribution and happy chime.


                                David L. Mills (mills@udel.edu)
                                07070100002cdf000081a400000064000000640000000132b6099800000bb2000000200000001b00000000000000000000001800000009reloc/html/porting.html Porting Hints

                                Porting Hints


                                NOTE: The following procedures have been replaced by GNU automake and autoconfigure. This page is to be updated in the next release.

                                Porting to a new machine or operating system ordinarily requires updating the ./machines directory and the ./compilers directories in order to define the build environment and autoconfigure means. You will probably have to modify the ntp_machines.h file and "l_stdlib.h" files as well. The two most famous trouble spots are the I/O code in ./xntpd/ntp_io.c and the clock adjustment code in ./xntpd/ntp_unixclock.c.

                                These are the rules so that older bsd systems and the POSIX standard system can coexist together.

                                1. If you use select then include "ntp_select.h". select is not standard, since it is very system dependent as to where it is defined. The logic to include the right system dependent include file is in "ntp_select.h".

                                2. Always use POSIX definition of strings. Include "ntp_string.h" instead of <string.h>.

                                3. Always include "ntp_malloc.h" if you use malloc.

                                4. Always include "ntp_io.h" instead of <sys/file.h> or <fnctl.h> to get O_* flags.

                                5. Always include "ntp_if.h" instead of <net/if.h>.

                                6. Always include "ntp_stdlib.h" instead of <stdlib.h>.

                                7. Define any special defines needed for a system in ./include/ntp_machine.h based on system identifier. This file is included by the "ntp_types.h" file and should always be placed first after the <> defines.

                                8. Define any special library prototypes left over from the system library and include files in the "l_stdlib.h" file. This file is included by the "ntp_stdlib.h" file and should ordinarily be placed last in the includes list.

                                9. Don't define a include file by the same name as a system include file.

                                "l_stdlib.h" can contain any extra definitions that are needed so that gcc will shut up. They should be controlled by a system identifier and there should be a separate section for each system. Really this will make it easier to maintain.

                                See include/ntp_machines.h for the various compile time options.

                                When you are satisfied the port works and that other ports are not adversely affected, please send patches for the system files you have changed, as well as any documentation that should be updated, including the advice herein.

                                Good luck.


                                David L. Mills (mills@udel.edu)
                                07070100002ce0000081a400000064000000640000000132b60998000011d2000000200000001b00000000000000000000001400000009reloc/html/pps.html Pulse-per-second (PPS) Signal Interfacing

                                Pulse-per-second (PPS) Signal Interfacing


                                Some radio clocks and related timekeeping gear have a pulse-per- second (PPS) signal that can be used to discipline the local clock oscillator to a high degree of precision, typically to the order less than 50 us in time and 0.1 PPM in frequency. The PPS signal can be connected in either of two ways, either via the data leads of a serial port or via the modem control leads. Either way requires conversion of the PPS signal, usually at TTL levels, to RS232 levels, which can be done using a circuit such as described in the Gadget Box PPS Level Converter and CHU Modem page.

                                The data leads interface requires regenerating the PPS pulse and converting to RS232 signal levels, so that the pulse looks like a legitimate ASCII character. The optional tty_clk line discipline/streams module inserts a timestamp following this character in the input data stream. The driver uses this timestamp to determine the time of arrival of the PPS pulse to within 26 us at 38.4 kbps while eliminating error due to operating system queues and service times. In order to use the kernel PPS signal, the xntp3 distribution must be compiled with TTYCLK defined.

                                The modem control leads interface requires converting to RS232 levels and connecting to the data carrier detect (DCD) lead of a serial port. The optional ppsclock streams module captures a timestamp upon transition of the DCD signal. This module can be built from the ppsclock.tar.Z distribution. The driver reads the latest timestamp with a designated ioctl() system call to determine the time of arrival of the PPS pulse to within a few tens of microseconds. In order to use the kernel PPS signal, the xntp3 distribution must be compiled with PPS defined.

                                Both the tty_clk and ppsclock modules are described in the Line Disciplines and Streams Drivers page. Directions for building the modules themselves are in the ./kernel directory. Directions on how to configure xntpd to operate with these modules is described in Building and Installing the Distribution page.

                                Both of these mechanisms are supported by the ATOM_PPS reference clock driver described in the Reference Clock Drivers page and its dependencies. This driver is ordinarily used in conjunction with another clock driver that supports the radio clock that produces the PPS pulse, as described in the Mitigation Rules and the prefer Keyword page. This driver furnishes the coarse timecode used to disambiguate the seconds numbering of the PPS pulse itself. The NTP daemon mitigates between the radio clock driver and ATOM_PPS driver as described in that page in order to provide the most accurate time, while respecting the various types of equipment failures that could happen.

                                For the utmost time quality, a number of Unix system kernel modifications can be made as described in the A Kernel Model for Precision Timekeeping page. Specifically, the ppsclock module can be used to interface the PPS signal directly to the kernel for use as discipline sources for both time and frequency. These sources can be separately enabled and monitored using the ntp_adjtime() system call described in that page and the ./include/sys/timex.h header file in the xntp3 distribution. In order to use the kernel PPS signal, the xntp3 distribution must be compiled with KERNEL_PLL defined.

                                In some configurations may have multiple radio clocks, each with PPS outputs, as well as a kernel modified to use the PPS signal. In order to provide the highest degree of redundancy and survivability, the kernel PPS discipline, tty_clk module, ppsclock module and kernel modifications may all be in use at the same time, each backing up the other. The sometimes complicated mitigation rules are described in the Mitigation Rules and the prefer Keyword page.


                                David L. Mills (mills@udel.edu)
                                07070100002ce1000081a400000064000000640000000132b60998000047c1000000200000001b00000000000000000000001700000009reloc/html/prefer.html Mitigation Rules and the ``prefer'' Keyword

                                Mitigation Rules and the prefer Keyword


                                Introduction

                                The mechanics of the NTP algorithms which select the best data sample from each available peer and the best subset of the peer population have been finely crafted to resist network jitter, faults in the network or peer operations, and to deliver the best possible accuracy. Most of the time these algorithms do a good job without requiring explicit manual tailoring of the configuration file. However, there are times when the accuracy can be improved by some careful tailoring. The following sections explain how to do this using explicit configuration items and special signals, when available, that are generated by some radio clocks.

                                In order to provide robust backup sources, primary (stratum-1) servers are usually operated in a diversity configuration, in which the server operates with a number of remote peers in addition to one or more radio or modem clocks operating as local peers. In these configurations the suite of algorithms used in NTP to refine the data from each peer separately and to select and weight the data from a number of peers are used with the entire ensemble of remote peers and local peers. As the result of these algorithms, a set of survivors are identified which can presumably provide the most reliable and accurate time. Ordinarily, the individual clock offsets of the survivors are combined on a weighted average basis to produce an offset used to control the system clock.

                                However, because of small but significant systematic time offsets between the survivors, it is in general not possible to achieve the lowest jitter and highest stability in these configurations. This happens because the selection algorithm tends to clockhop between survivors of substantially the same quality, but showing small systematic offsets between them. In addition, there are a number of configurations involving pulse-per-second (PPS) signals, modem backup services and other special cases, so that a set of mitigation rules becomes necessary to select a single peer from among the survivors. These rules are based on a set of special characteristics of the various peers and reference clock drivers specified in the configuration file.

                                The prefer Peer

                                The mitigation rules are designed to provide an intelligent selection between various peers of substantially the same statistical quality. They is designed to provide the best quality time without compromising the normal operation of the NTP algorithms. The mitigation scheme in its present form is not an integral component of the NTP specification RFC- 1305. but is likely to be included in future versions of the specification. The scheme is based on the concept of prefer peer, which is specified by including the prefer keyword with the associated server or peer command in the configuration file. This keyword can be used with any peer or server, but is most commonly used with a radio clock. While the scheme does not forbid it, it does not seem useful to designate more than one peer as preferred, since the additional complexities to mitigate among them do not seem justified from on the air experience.

                                The prefer scheme works on the set of peers that have survived the sanity checks and intersection algorithms of the clock selection procedures. Ordinarily, the members of this set can be considered truechimers and any one of them could in principle provide correct time; however, due to various error contributions, not all can provide the most stable time. The job of the clustering algorithm, which is invoked at this point, is to select the best subset of the survivors providing the least variance in the combined ensemble, compared to the variance in each member of the subset. The detailed operation of the clustering algorithm, which is given in the specification, is not important here, other than to point out it operates in rounds, where a survivor, presumably the worst of the lot, is discarded in each round until one of several termination conditions is met.

                                In the prefer scheme the clustering algorithm is modified so that the prefer peer is never discarded; on the contrary, its potential removal becomes a termination condition. If the original algorithm were about to toss out the prefer peer, the algorithm terminates right there. The prefer peer can still be discarded by the sanity checks and intersection algorithms, of course, but it will always survive the clustering algorithm. The prefer peer is used as long as it survives the sanity checks and intersection algorithm. If it does not survive or for some reason it fails to provide updates, it will eventually become unreachable and the clock selection will remitigate to select the next best source.

                                Along with this behavior, the clock selection procedures are modified so that the combining algorithm is not used when a prefer peer is present. Instead, the offset of the prefer peer is used exclusively as the synchronization source. In the usual case involving a radio clock and a flock of remote stratum-1 peers, and with the radio clock designated a prefer peer, the result is that the high quality radio time disciplines the server clock as long as the radio itself remains operational and with valid time, as determined from the remote peers, sanity checks and intersection algorithm.

                                Peer Classification

                                In order to understand the effects of the various intricate schemes involved, it is necessary to understand some arcane details on how the algorithms decide on a synchronization source, when more than one source is available. This is done on the basis of a set of explicit mitigation rules, which define special classes of remote and local peers as a function of configuration declarations and reference clock driver type:

                                1. The prefer peer is designated using the prefer keyword with the server or peer commands. All other things being equal, this peer will be selected for synchronization over all other survivors of the clock selection procedures.

                                2. When a PPS signal is connected via the PPS Clock Discipline driver (type 22), this is called the PPS peer. This driver provides precision clock corrections only within one second, so is always operated in conjunction with another peer or reference clock driver, which provides the seconds numbering. The PPS peer is active only under conditions explained below.

                                3. When the Undisciplined Local Clock driver (type 1) is configured, this is called the local-clock peer. This is used either as a backup reference source (stratum greater than zero), should all other synchronization sources fail, or as the primary reference source (stratum zero) in cases where the kernel time is disciplined by some other means of synchronization, such as the NIST lockclock scheme, or another synchronization protocol, such as the Digital Time Synchronization Service (DTSS).

                                4. When a modem driver such as the Automated Computer Time Service driver (type 18) is configured, this is called the modem peer. This is used either as a backup reference source, should all other primary sources fail, or as the (only) primary reference source.

                                5. Where support is available, the PPS signal may be processed directly by the kernel, as described in the A Kernel Model for Precision Timekeeping page. This is called the kernel discipline. The PPS signal can discipline the kernel in both frequency and time. The frequency discipline is active as long as the PPS signal itself is operating correctly, as determined by the kernel algorithms. The time discipline is active only under conditions explained below.

                                Reference clock drivers operate in the manner described in the Reference Clock Drivers page and its dependencies. The drivers are ordinarily operated at stratum zero, so that as the result of ordinary NTP operations, the server itself operates at stratum one, as required by the NTP specification RFC-1305. In some cases described below, the driver is intentionally operated at an elevated stratum, so that it will be selected only if no other survivor is present with a lower stratum. In the case of the PPS peer or kernel time discipline, these sources appear active only if the prefer peer has survived the intersection and clustering algorithms, as described below, and its clock offset relative to the current local clock is less than a specified value, currently +-128 ms.

                                The modem clock driver is a special case. Ordinarily, the update interval between modem calls to synchronize the system clock is many times longer than the interval between polls of either the remote or local peers. In order to provide the best stability, the operation of the clock discipline algorithm changes from a phase-lock mode at the shorter update intervals to a frequency-lock mode at the longer update intervals. If both remote or local peers together with a modem peer are operated in the same configuration, what can happen is that first the clock selection algorithm can select one or more remote/local peers and the clock discipline algorithm will optimize for the shorter update intervals. Then, the selection algorithm can select the modem peer, which requires a much different optimization. The intent in the design is to allow the modem peer to control the system clock either when no other source is available or, if the modem peer happens to be marked as prefer, then it always controls the clock, as long as it passes the sanity checks and intersection algorithm. There still is room for suboptimal operation in this scheme, since a noise spike can still cause a clockhop either way. Nevertheless, the optimization function is slow to adapt, so that a clockhop or two does not cause much harm.

                                Mitigation Rules

                                The mitigation rules apply in the intersection and clustering algorithms described in the NTP specification. The intersection algorithm first scans all peers with a persistent association and includes only those that satisfy specified sanity checks. In addition to the checks required by the specification, the mitigation rules require either the local-clock peer or modem peer to be included only if marked as the prefer peer. The intersection algorithm operates on the included population to select only those peers believed to represent the correct time. If one or more peers survive the operation, processing continues in the clustering algorithm. Otherwise, if there is a modem peer, it is declared the only survivor; otherwise, if there is a local-clock peer, it is declared the only survivor. Processing then continues in the clustering algorithm.

                                The clustering algorithm repeatedly discards outlyers in order to reduce the residual jitter in the survivor population. As required by the NTP specification, these operations continue until either a specified minimum number of survivors remain or the minimum select dispersion of the population is greater than the maximum peer dispersion of any member. The mitigation rules require an additional terminating condition which stops these operations at the point where the prefer peer is about to be discarded.

                                The mitigation rules establish the choice of system peer, which determine the stratum, reference identifier and several other system variables which are visible to clients of the local server. In addition, they establish which source or combination of sources control the local clock.

                                1. If there is a prefer peer and it is the local-clock peer or the modem peer; or, if there is a prefer peer and the kernel time discipline is active, choose the prefer peer as the system peer and its offset as the system clock offset. If the prefer peer is the local-clock peer, an offset can be calculated by the driver to produce a frequency offset in order to correct for systematic frequency errors. In case a source other than NTP is controlling the system clock, corrections determined by NTP can be ignored by using the disable pll in the configuration file. If the prefer peer is the modem peer, it must be the primary source for the reasons noted above. If the kernel time discipline is active, the system clock offset is ignored and the corrections handled directly by the kernel.

                                2. If the above is not the case and there is a PPS peer, then choose it as the system peer and its offset as the system clock offset.

                                3. If the above is not the case and there is a prefer peer (not the local-clock or modem peer in this case), then choose it as the system peer and its offset as the system clock offset.

                                4. If the above is not the case and the peer previously chosen as the system peer is in the surviving population, then choose it as the system peer and average its offset along with the other survivors to determine the system clock offset. This behavior is designed to avoid excess jitter due to clockhopping, when switching the system peer would not materially improve the time accuracy.

                                5. If the above is not the case, then choose the first candidate in the list of survivors ranked in order of synchronization distance and average its offset along with the other survivors to determine the system clock offset. This is the default case and the only case considered in the current NTP specification.

                                Using the Pulse-per-Second (PPS) Signal

                                Most radio clocks are connected using a serial port operating at speeds of 9600 bps or higher. The accuracy using typical timecode formats, where the on-time epoch is indicated by a designated ASCII character, like carriage-return <cr>, is limited to a millisecond at best and a few milliseconds in typical cases. However, some radios produce a PPS signal which can be used to improve the accuracy in typical workstation servers to the order of a few tens of microseconds. The details of how this can be accomplished are discussed in the Pulse-per-second (PPS) Signal Interfacing page. The following paragraphs discuss how the PPS signal is affected by the mitigation rules.

                                First, it should be pointed out that the PPS signal is inherently ambiguous, in that it provides a precise seconds epoch, but does not provide a way to number the seconds. In principle and most commonly, another source of synchronization, either the timecode from an associated radio clock, or even one or more remote peers, is available to perform that function. In all cases, a specific, configured peer or server must be designated as associated with the PPS signal. This is done using the prefer keyword as described previously. The PPS signal can be associated in this way any peer, but is most commonly used with the radio clock generating the PPS signal.

                                In order to operate, the PPS driver must be enabled by the enable pps command in the configuration file and the signal must be present and within nominal jitter and wander error tolerances. In addition, its associated prefer peer must have survived the sanity checks and intersection algorithms and have become active. This insures that the radio clock hardware is operating correctly and that, presumably, the PPS signal is operating correctly as well. Second, the absolute time offset from that peer must be less than CLOCK_MAX, the gradual-adjustment range, which is ordinarily set at +-128 ms, or well within the +-0.5-s unambiguous range of the PPS signal itself. Finally, the time offsets generated by the PPS peer are propagated via the clock filter to the clock selection procedures just like any other peer. Should these pass the sanity checks and intersection algorithms, they will show up along with the offsets of the prefer peer itself. Note that, unlike the prefer peer, the PPS peer samples are not protected from discard by the clustering algorithm. These complicated procedures insure that the PPS offsets developed in this way are the most accurate, reliable available for synchronization.

                                The PPS peer remains active as long as it survives the intersection algorithm and the prefer peer is active; however, like any other clock driver, it runs a reachability algorithm on the PPS signal itself. If for some reason the signal fails or displays gross errors, the PPS peer will either become unreachable or stray out of the survivor population. In this case the clock selection remitigates as described above.

                                Using the Kernel Discipline

                                Code to implement the kernel discipline is a special feature that can be incorporated in the kernel of some workstations as described in the
                                A Kernel Model for Precision Timekeeping page. The discipline provides for the control of the local clock oscillator time and/or frequency by means of an external PPS signal interfaced via a modem control lead. As the PPS signal is derived from external equipment, cables, etc., which sometimes fail, a good deal of error checking is done in the kernel to detect signal failure and excessive noise. The way in which the mitigation rules affect the kernel discipline is as follows.

                                In order to operate, the kernel discipline must be enabled by the enable pps command in the configuration file and the signal must be present and within nominal jitter and wander error tolerances. In the NTP daemon, the kernel time discipline is active only when the prefer peer is among the survivors of the clustering algorithm, and its offset is within +-128 ms, as in the PPS peer. Under these conditions the kernel disregards updates produced by the NTP daemon and uses its internal PPS source instead. The kernel maintains a watchdog timer for the PPS signal; if the signal has not been heard or is out of tolerance for more than some interval, currently two minutes, the kernel discipline is declared inoperable and operation continues as if it were not present.


                                David L. Mills (mills@udel.edu)
                                07070100002ce2000081a400000064000000640000000132b6099900000ee9000000200000001b00000000000000000000001700000009reloc/html/rdebug.html Debugging Hints for Reference Clock Drivers

                                Debugging Hints for Reference Clock Drivers


                                The ntpq and xntpdc utility programs can be used to debug reference clocks, either on the server itself or from another machine elsewhere in the network. The server is compiled, installed and started using the command-line switches described in the xntpd page. The first thing to look for are error messages on the system log. If none occur, the daemon has started, opened the devices specified and waiting for peers and radios to come up.

                                The next step is to be sure the RS232 messages, if used, are getting to and from the clock. The most reliable way to do this is with an RS232 tester and to look for data flashes as the driver polls the clock and/or as data arrive from the clock. Our experience is that the overwhelming fraction of problems occurring during installation are due to problems such as miswired connectors or improperly configured device links at this stage.

                                If RS232 messages are getting to and from the clock, the variables of interest can be inspected using the ntpq program and various commands described on the documentation page. First, use the pe and as commands to display billboards showing the peer configuration and association IDs for all peers, including the radio clock peers. The assigned clock address should appear in the pe billboard and the association ID for it at the same relative line position in the as billboard. If things are operating correctly, after a minute or two samples should show up in the pe display line for the clock.

                                Additional information is available with the rv and clockvar commands, which take as argument the association ID shown in the as billboard. The rv command with no argument shows the system variables, while the rv command with association ID argument shows the peer variables for the clock, as well as any other peers of interest. The clockvar command with argument shows the peer variables specific to reference clock peers, including the clock status, device name, last received timecode (if relevant), and various event counters. In addition, a subset of the fudge parameters is included.

                                The xntpdc utility program can be used for detailed inspection of the clock driver status. The most useful are the clockstat and clkbug commands described in the document page. While these commands permit getting quite personal with the particular driver involved, their use is seldom necessary, unless an implementation bug shows up.

                                Most drivers write a message to the clockstats file as each timecode or surrogate is received from the radio clock. By convention, this is the last ASCII timecode (or ASCII gloss of a binary- coded one) received from the radio clock. This file is managed by the filegen facility described in the xntpd page and requires specific commands in the configuration file. This forms a highly useful record to discover anomalies during regular operation of the clock. The scripts included in the ./scripts/stats directory can be run from a cron job to collect and summarize these data on a daily or weekly basis. The summary files have proven invaluable to detect infrequent misbehavior due to clock implementation bugs in some radios.


                                David L. Mills (mills@udel.edu)
                                07070100002ce3000081a400000064000000640000000132b60999000011cf000000200000001b00000000000000000000001900000009reloc/html/refclock.html Reference Clock Drivers

                                Reference Clock Drivers


                                Introduction

                                Support for most of the commonly available radio and modem clocks is included in the default configuration of the NTP daemon for Unix xntpd. Individual clocks can be activated by configuration file commands, specifically the server and fudge commands described in the xntpd program manual page. The following discussion presents Information on how to select and configure the device drivers in a running Unix system.

                                Radio and modem clocks by convention have addresses in the form 127.127.t.u, where t is the clock type and u is a unit number in the range 0-3 used to distinguish multiple instances of clocks of the same type. Most of these clocks require support in the form of a serial port or special bus peripheral. The particular device is normally specified by adding a soft link /dev/deviceu to the particular hardware device involved, where u correspond to the unit number above.

                                Following is a list showing the type and title of each driver currently implemented. The compile-time identifier for each is shown in parentheses. Click on a selected type for specific description and configuration documentation, including the clock address, reference ID, driver ID, serial port device name and speed, and features (line disciplines, etc.). For those drivers without specific documentation, please contact the author listed in the copyright page.

                                Type 1 Local Clock Driver (LOCAL_CLOCK)
                                Type 2 Trak 8820 GPS Receiver (TRAK)
                                Type 3 PSTI/Traconex 1020 WWV/WWVH Receiver (PST)
                                Type 4 Spectracom 8170 and Netclock/2 WWVB Receivers (WWVB)
                                Type 5 TrueTime GPS/GOES/OMEGA Receivers (TRUETIME)
                                Type 6 IRIG Audio Decoder (Sun only) (IRIG)
                                Type 7 Scratchbuilt CHU Receiver (CHU)
                                Type 8 Generic Reference Driver (PARSE)
                                Type 9 Magnavox MX4200 GPS Receiver (MX4200)
                                Type 10 Austron 2200A/2201A GPS Receivers (AS2201)
                                Type 11 Arbiter 1088A/B GPS Receiver (ARBITER)
                                Type 12 KSI/Odetics TPRO/S IRIG Interface (Sun only) (TPRO)
                                Type 13 Leitch CSD 5300 Master Clock Controller (LEITCH)
                                Type 14 EES M201 MSF Receiver (MSFEES)
                                Type 15 * TrueTime TM-TMD GPS Receiver
                                Type 16 Bancomm GPS/IRIG Receiver (HP only) (BANC)
                                Type 17 Datum Precision Time System (DATUM)
                                Type 18 NIST Modem Time Service (ACTS)
                                Type 19 Heath WWV/WWVH Receiver (HEATH)
                                Type 20 Generic NMEA GPS Receiver (NMEA)
                                Type 21 TrueTime GPS-VME Interface (HP only) (GPSVME)
                                Type 22 PPS Clock Discipline (ATOM)
                                Type 23 PTB Modem Time Service (PTBACTS)
                                Type 24 USNO Modem Time Service (USNO)
                                Type 25 * TrueTime generic receivers
                                Type 26 Hewlett Packard 58503A GPS Receiver (HPGPS)

                                * All TrueTime receivers are now supported by one driver, type 5. Types 15 and 25 will be retained only for a limited time and may be reassigned in future.

                                Additional Information

                                Mitigation Rules and the prefer Keyword
                                Debugging Hints for Reference Clock Drivers
                                Line Disciplines and Streams Drivers
                                Pulse-per-second (PPS) Signal Interfacing
                                How To Write a Reference Clock Driver
                                The Network Time Protocol (NTP) Distribution


                                David L. Mills (mills@udel.edu)
                                07070100002ce4000081a400000064000000640000000132b6099900001f5e000000200000001b00000000000000000000001800000009reloc/html/release.html Release Notes

                                Release Notes


                                The following changes are in the version 3-5.85 distribution relative to the previous 3.5f version.

                                1. The automatic build procedure has been replaced with GNU autoconfigure. This should make porting to nonstandard machines and operating systems much easier and should simplify the maintenance for multi-architecture sites. See the ./WHERE-TO- START, ./INSTALL and ./README files for a brief overview of the new building and installing procedures. See the the building and installing pages in the HTML documentation for further information.

                                2. A clock driver (type 11) is included for the Arbiter 1088A/B GPS Receiver.

                                3. The Windows NT build procedure is changed. See the ./util/wininstall directory for further information.

                                4. A clock driver (type 11) is included for the Arbiter 1088A/B GPS Receiver.

                                5. The HTML documentation has been edited and updated to correct outdated information and minor typographical errors. A new page has been added for the Arbiter 1088A/B GPS Receiver.

                                6. The xntpd daemon now calculates the authentication delay automatically, so it no longer needs to be specified for each architecture and operating system. The -e command-line switch has been removed from the xntpd program. The authdelay configuration option has been removed.

                                7. The auth, monitor, pll and stats flags are enabled by default. The bclient and pps flags are disabled by default.

                                The following changes are in the version 3.5f distribution relative to the previous 3.4y version.

                                1. Please note the scripts for configuring radio clock drivers do not work. See the building and installing documentation for specific information.

                                2. The documentation has been completely reworked in HTML format suitable for web browsing.

                                3. The automatic build procedure has been improved to
                                  • support the line disciplines, streams modules and precision time kernel modifications. These are controlled by the presence of certain system-dependent header files in the /usr/include/sys directory.
                                  • include by default all reference clock drivers known to work with each combination of hardware and operating system. (The particular defaults are specified in the ../machines files for each machine.)
                                  • activate precision time kernel modifications by default if detected by the build procedure. (Previous versions required an undocumented addition to the ntp.drift file in order to activate these modifications.)

                                4. Three TrueTime reference clock drivers, which did slightly different things with each model, have been replaced with one driver (type 5) that works with all models. Two new reference clock drivers have been added, one for the Bancomm IRIG interface, the other for the TrueTime GPS-VME interface. Both of these work only with the HP architecture.

                                5. There is a new pps option to the xntpdc program and configuration file enable/disable command, which enables or disables the PPS precision time control signal for both the PPS clock driver and kernel PPS interface, where available. This is primarily intended for situations where external equipment has malfunctioned or the signal has become excessively noisy.

                                6. The precision configuration file command and xntpdc command have been removed; the precision variable quantity is now determined automatically and cannot be changed.

                                7. The authenticate and monitor commands in xntpdc have been removed; the functions formerly provided by these commands are now provided by the enable and disable commands.

                                8. Fixed minor problems peculiar to different machines and system environments. Fixed minor problem in the PPS interfaces and mitigation rules. See the ./patches directory for details.

                                Version 3.5 has been compiled and run on at least the following machines, operating systems and compilers. In all known cases, if the gcc compiler eats it with some success, the cc compiler also enjoys the meal; the converse is not always true. Note that, while all clock drivers have been compiled, only certain ones have been tested with each machine and operating system.

                                Previous versions have been compiled and run on at least the following machines, operating systems and compilers.

                                Machine   OS             Comp Notes
                                ------------------------------------------------------------
                                A/UX      2.0.1, 3.x.x   gcc  LOCAL_CLOCK    (jmj (94/01/26 see hints)
                                AIX       3.2            ?    ?
                                Alpha     OSF/1 1.2a     gcc  no REFCLOCK         (dm 93/11/20)
                                Alpha     OSF/1 1.3      gcc  no REFCLOCK         (pb 93/10/25)
                                Alpha     OSF/1 2.0      gcc  no REFCLOCK         (dm 94/10/10)
                                Alpha     OSF/1 3.0      gcc  no REFCLOCK         (dm 95/07/15)
                                Alpha     OSF/1 3.2      gcc  all clock drivers (dm 96/02/07)
                                Convex    Convex OS 10.1 ?    ?
                                HP3xx     HPUX 9.01      cc   no REFCLOCK         (pb 93/10/25)
                                HP3xx     HPUX 8.0       cc   no REFCLOCK         (pb 93/10/25)
                                HP7xx     HPUX 9.0       cc   no REFCLOCK
                                hp7xx     HPUX 9.01      cc   local + PARSE       (kd 93/10/26)
                                hp7xx     HPUX 9.03      cc   all REFCLOCK drivers (dm 95/07/15)
                                HP7xx     HPUX 9.04      gcc  all clock drivers   (uw 96/02/21)
                                PC        Linux 1.3.59   gcc  (pb1 96/02/10)
                                MIPS      Ultrix 3a      gcc  green               (pb 93/10/26)
                                MIPS      Ultrix 4.3a    gcc  all REFCLOCK drivers (dm 93/11/20)
                                MIPS      Ultrix 4.4     gcc  all clock drivers (dm 96/02/07)
                                MX500     Sinix-m V5.40  cc   PARSE REFCLOCK
                                NCR3445   NCR SVR4       cc   LOCAL_CLOCK         (tm 93/11/29)
                                PC        BSD/386 1.0    gcc  possibly see "build problems"
                                PC        BSDI 2.0.1     gcc  (pb 96/02/18)
                                PC        Dell SVR4 v2.2 gcc  ?                   (tl 93/12/30)
                                PC        FreeBSD        gcc  LOCAL_CLOCK         see "build problems"
                                PC        NetBSD?        gcc  possibly see "build problems"
                                PC        Linux (pl14)   gcc  LOCAL_CLOCK         (dw 93/10/30)
                                PC        Unixware1/SVR4 cc   no tickadj, ?       (ras 93/04/11)
                                PC        WindowsNT 3.5  VisualC++2.0 no REFCLOCK (vb 95/04/11)
                                RS6000    AIX 3.2        gcc  no REFCLOCK
                                S2000     Sequent PTX 1.4 cc  LOCAL_CLOCK         (kd 93/11/10)
                                S2000     Sequent PTX 1.4 gcc LOCAL_CLOCK         (kd 93/11/10)
                                SGI       IRIX 4.0.5F    gcc  no REFCLOCK         (pb 93/11/10)
                                SGI       IRIX 5.3       cc   all clock drivers (dm 96/02/20)
                                Sun3      SunOS 4.1.1    gcc  no REFCLOCK         (pb 93/10/25)
                                Sun4      SunOS 4.1.1    gcc  all clock drivers   (dm 96/02/07)
                                Sun4      SunOS 4.1.3    gcc  all clock drivers   (dm 96/02/07)
                                Sun4      SunOS 5.1      gcc  no REFCLOCK         (pb 93/10/25)
                                Sun4      SunOS 5.2      gcc  no REFCLOCK         (dm 93/11/20)
                                Sun4      SunOS 5.3      gcc  all clock drivers   (dm 96/02/07)
                                Sun4      SunOS 5.4      gcc  all clock drivers   (dm 96/02/07)
                                Sun4      SunOS 5.5      ?    all clock drivers   (ao 96/02/16)
                                VAX-11    4.3 Tahoe      cc   all clock drivers   (dm 96/02/20)
                                
                                vb: Viraj Bais <vbais@mailman1.intel.com>
                                pb1: Paolo Bevilacqua <pab@uni.net>
                                pb: Piete Brooks
                                dw: Torsten Duwe <duwe@informatik.uni-erlangen.de>
                                bf: Bill Foster <bill@kryten.kryten.com>
                                jmj: Jim Jagielski <jim@jagubox.gsfc.nasa.gov>
                                kd: Frank Kardel
                                tl: Tony Lill <ajlill@tlill.hookup.net>
                                dm: David Mills <mills@udel.edu>
                                tm: Tom Moore <Tom.Moore@DaytonOH.NCR.COM>
                                ao: Alexandre Oliva <oliva@dcc.unicamp.br>
                                ras: Ray Schnitzler <schnitz@unipress.com>
                                uw: Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de>
                                

                                David L. Mills (mills@udel.edu)
                                07070100002ce5000081a400000064000000640000000132b6099900000c45000000200000001b00000000000000000000001800000009reloc/html/tickadj.html tickadj - set time-related kernel variables

                                tickadj - set time-related kernel variables


                                Synopsis

                                tickadj [ -Aqs ] [ -a tickadj ] [ -t tick ]

                                Description

                                The tickadj program reads, and optionally modifies, several timekeeping-related variables in the running kernel, via /dev/kmem. The particular variables it is concerned with are tick, which is the number of microseconds added to the system time during a clock interrupt, tickadj, which sets the slew rate and resolution used by the adjtime system call, and dosynctodr, which indicates to the kernels on some machines whether they should internally adjust the system clock to keep it in line with time-of-day clock or not.

                                By default, with no arguments, tickadj reads the variables of interest in the kernel and displays them. At the same time, it determines an "optimal" value for the value of the tickadj variable if the intent is to run the xntpd Network Time Protocol (NTP) daemon, and prints this as well. Since the operation of tickadj when reading the kernel mimics the operation of similar parts of the xntpd program fairly closely, this can be useful when debugging problems with xntpd.

                                Note that tickadj should be run with some caution when being used for the first time on different types of machines. The operations which tickadj tries to perform are not guaranteed to work on all Unix machines and may in rare cases cause the kernel to crash.

                                Command Line Options

                                -a tickadj
                                Set the kernel variable tickadj to the value tickadj specified.

                                -A
                                Set the kernel variable tickadj to an internally computed "optimal" value.

                                -t tick
                                Set the kernel variable tick to the value tick specified.

                                -s
                                Set the kernel variable dosynctodr to zero, which disables the hardware time-of-year clock, a prerequisite for running the xntpd daemon under SunOS4.

                                -q
                                Normally, tickadj is quite verbose about what it is doing. The -q flag tells it to shut up about everything except errors.

                                Files


                                /vmunix
                                /unix
                                /dev/kmem

                                Bugs

                                Fiddling with kernel variables at run time as a part of ordinary operations is a hideous practice which is only necessary to make up for deficiencies in the implementation of adjtime in many kernels and/or brokenness of the system clock in some vendors' kernels. It would be much better if the kernels were fixed and the tickadj program went away.


                                David L. Mills (mills@udel.edu)
                                07070100002ce6000081a400000064000000640000000132b6099900001b13000000200000001b00000000000000000000001600000009reloc/html/xntpd.html xntpd - Network Time Protocol (NTP) daemon

                                xntpd - Network Time Protocol (NTP) daemon


                                Synopsis

                                xntpd [ -abdm ] [ -c conffile ] [ -f driftfile ] [ -k keyfile ] [ -l logfile ] [ -p pidfile ] [ -r broadcastdelay ] [ -s statsdir ] [ -t key ] [ -v variable ] [ -V variable ]

                                Description

                                xntpd is an operating system daemon which sets and maintains the system time-of-day in synchronism with Internet standard time servers. xntpd is a complete implementation of the Network Time Protocol (NTP) version 3, as defined by RFC-1305, but also retains compatibility with version 1 and 2 servers as defined by RFC- 1059 and RFC-1119, respectively. xntpd does all computations in 64-bit fixed point arithmetic and requires no floating point support. While the ultimate precision of this design, about 232 picoseconds, is not achievable with ordinary workstations and networks of today, it may be required with future nanosecond CPU clocks and gigabit LANs.

                                The daemon can operate in any of several modes, including symmetric active/passive, client/server and broadcast/multicast, as described in RFC-1305. A broadcast/multicast client can discover remote servers, compute server-client propagation delay correction factors and configure itself automatically. This makes it possible to deploy a fleet of workstations without specifying configuration details specific to the local environment.

                                Ordinarily, xntpd reads the ntp.conf configuration file at startup time in order to determine the synchronization sources and operating modes. It is also possible to specify a working, although limited, configuration entirely on the command line, obviating the need for a configuration file. This may be particularly appropriate when the local host is to be configured as a broadcast or multicast client, with all peers being determined by listening to broadcasts at run time.

                                Various internal xntpd variables can be displayed and configuration options altered while the daemon is running using the ntpq and xntpdc utility programs.

                                When xntpd starts it looks at the value of umask, and if it's zero xntpd will set the umask to 022.

                                Command Line Options

                                -a
                                Enable authentication mode. The default is disable.

                                -b
                                Synchronize using NTP broadcast messages.

                                -c conffile
                                Specify the name and path of the configuration file.

                                -d
                                Specify debugging mode. This flag may occur multiple times, with each occurrence indicating greater detail of display.

                                -f driftfile
                                Specify the name and path of the drift file.

                                -k keyfile
                                Specify the name and path of the file containing the NTP authentication keys.

                                -l logfile
                                Specify the name and path of the log file. The default is the system log facility.

                                -m
                                Synchronize using NTP multicast messages on the IP multicast group address 224.0.1.1 (requires multicast kernel).

                                -p pidfile
                                Specify the name and path to record the daemon's process ID.

                                -r broadcastdelay
                                Specify the default propagation delay from the broadcast/multicast server and this computer. This is used only if the delay cannot be computed automatically by the protocol.

                                -s statsdir
                                Specify the directory path for files created by the statistics facility.

                                -t key
                                Add a key number to the trusted key list.

                                -v variable
                                Add a system variable.

                                -V variable
                                Add a system variable listed by default.

                                The Configuration File

                                The xntpd configuration file is read at initial startup in order to specify the synchronization sources, modes and other related information. Usually, it is installed in the /etc directory, but could be installed elsewhere (see the -c conffile command line option). The file format is similar to other Unix configuration files - comments begin with a # character and extend to the end of the line; blank lines are ignored. Configuration commands consist of an initial keyword followed by a list of arguments, some of which may be optional, separated by whitespace. Commands may not be continued over multiple lines. Arguments may be host names, host addresses written in numeric, dotted-quad form, integers, floating point numbers (when specifying times in seconds) and text strings. Optional arguments are delimited by [ ] in the following descriptions, while alternatives are separated by |. The notation [ ... ] means an optional, indefinite repetition of the last item before the [ ... ].

                                See the following pages for configuration and control options. While there is a rich set of options available, the only required option is one or more server, peer or broadcast commands described in the Configuration Options page. The Notes on Configuring NTP and Setting up a NTP Subnet page contains an extended discussion of these options.

                                Configuration Options
                                Authentication Options
                                Monitoring Options
                                Access Control Options
                                Reference Clock Options
                                Miscellaneous Options

                                Files

                                /etc/ntp.conf - the default name of the configuration file
                                /etc/ntp.drift - the default name of the drift file
                                /etc/ntp.keys - the default name of the key file

                                Bugs

                                xntpd has gotten rather fat. While not huge, it has gotten larger than might be desireable for an elevated-priority daemon running on a workstation, particularly since many of the fancy features which consume the space were designed more with a busy primary server, rather than a high stratum workstation, in mind.


                                David L. Mills (mills@udel.edu)
                                07070100002ce7000081a400000064000000640000000132b6099900005711000000200000001b00000000000000000000001700000009reloc/html/xntpdc.html xntpdc - special NTP query program

                                xntpdc - special NTP query program


                                Synopsis

                                xntpdc [ -ilnps ] [ -c command ] [ host ] [ ... ]

                                Description

                                xntpdc is used to query the xntpd daemon about its current state and to request changes in that state. The program may be run either in interactive mode or controlled using command line arguments. Extensive state and statistics information is available through the xntpdc interface. In addition, nearly all the configuration options which can be specified at start up using xntpd's configuration file may also be specified at run time using xntpdc.

                                If one or more request options is included on the command line when xntpdc is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, xntpdc will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. xntpdc will prompt for commands if the standard input is a terminal device.

                                xntpdc uses NTP mode 7 packets to communicate with the NTP server, and hence can be used to query any compatable server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. xntpdc makes no attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.

                                The operation of xntpdc are specific to the particular implementation of the xntpd daemon and can be expected to work only with this and maybe some previous versions of the daemon. Requests from a remote xntpdc program which affect the state of the local server must be authenticated, which requires both the remote program and local server share a common key and key identifier.

                                Command Line Options

                                Specifying a command line option other than -i or -n will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, xntpdc will attempt to read interactive format commands from the standard input.

                                -c command
                                The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given.

                                -i
                                Force xntpdc to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.

                                -l
                                Obtain a list of peers which are known to the server(s). This switch is equivalent to -c listpeers.

                                -n
                                Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.

                                -p
                                Print a list of the peers known to the server as well as a summary of their state. This is equivalent to -c peers.

                                -s
                                Print a list of the peers known to the server as well as a summary of their state, but in a slightly different format than the -p switch. This is equivalent to -c dmpeers.

                                Interactive Commands

                                Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a <, followed by a file name, to the command line.

                                A number of interactive format commands are executed entirely within the xntpdc program itself and do not result in NTP mode 7 requests being sent to a server. These are described following.

                                ? [ command_keyword ]
                                helpl [ command_keyword ]
                                A ? by itself will print a list of all the command keywords known to this incarnation of ntpq. A ? followed by a command keyword will print funcation and usage information about the command. This command is probably a better source of information about ntpq than this manual page.

                                delay milliseconds
                                Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.

                                host hostname
                                Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.

                                hostnames [ yes | no ]
                                If yes is specified, host names are printed in information displays. If no is specified, numeric addresses are printed instead. The default is yes, unless modified using the command line -n switch.

                                keyid keyid
                                This command allows the specification of a key number to be used to authenticate configuration requests. This must correspond to a key number the server has been configured to use for this purpose.

                                quit
                                Exit xntpdc.

                                passwd
                                This command prompts you to type in a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for use by the NTP server for this purpose if such requests are to be successful.

                                timeout millseconds
                                Specify a timeout period for responses to server queries. The default is about 8000 milliseconds. Note that since xntpdc retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.

                                Control Message Commands

                                Query commands result in NTP mode 7 packets containing requests for information being sent to the server. These are read-only commands in that they make no modification of the server configuration state.

                                listpeers
                                Obtains and prints a brief list of the peers for which the server is maintaining state. These should include all configured peer associations as well as those peers whose stratum is such that they are considered by the server to be possible future synchonization candidates.

                                peers
                                Obtains a list of peers for which the server is maintaining state, along with a summary of that state. Summary information includes the address of the remote peer, the local interface address (0.0.0.0 if a local address has yet to be determined), the stratum of the remote peer (a stratum of 16 indicates the remote peer is unsynchronized), the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in seconds. In addition, the character in the left margin indicates the mode this peer entry is operating in. A + denotes symmetric active, a - indicates symmetric passive, a = means the remote server is being polled in client mode, a ^ indicates that the server is broadcasting to this address, a ~ denotes that the remote peer is sending broadcasts and a * marks the peer the server is currently synchonizing to.

                                The contents of the host field may be one of four forms. It may be a host name, an IP address, a reference clock implementation name with its parameter or REFCLK(implementation number, parameter). On hostnames no only IP-addresses will be displayed.

                                dmpeers
                                A slightly different peer summary list. Identical to the output of the peers command, except for the character in the leftmost column. Characters only appear beside peers which were included in the final stage of the clock selection algorithm. A . indicates that this peer was cast off in the falseticker detection, while a + indicates that the peer made it through. A * denotes the peer the server is currently synchronizing with.

                                showpeer peer_address [...]
                                Shows a detailed display of the current peer variables for one or more peers. Most of these values are described in the NTP Version 2 specification.

                                pstats peer_address [...]
                                Show per-peer statistic counters associated with the specified peer(s).

                                clockinfo clock_peer_address [...]
                                Obtain and print information concerning a peer clock. The values obtained provide information on the setting of fudge factors and other clock performance information.

                                kerninfo
                                Obtain and print kernel phase-lock loop operating parameters. This information is available only if the kernel has been specially modified for a precision timekeeping function.

                                loopinfo [ oneline | multiline ]
                                Print the values of selected loop filter variables. The loop filter is the part of NTP which deals with adjusting the local system clock. The offset is the last offset given to the loop filter by the packet processing code. The frequency is the frequency error of the local clock in parts-per-million (ppm). The time_const controls the stiffness of the phase-lock loop and thus the speed at which it can adapt to oscillator drift. The watchdog timer value is the number of seconds which have elapsed since the last sample offset was given to the loop filter. The oneline and multiline options specify the format in which this information is to be printed, with multiline as the default.

                                sysinfo
                                Print a variety of system state variables, i.e., state related to the local server. All except the last four lines are described in the NTP Version 3 specification, RFC-1305.
                                The system flags show various system flags, some of which can be set and cleared by the enable and disable configuration commands, respectively. These are the auth, bclient, monitor, pll, pps and stats flags. See the xntpd documentation for the meaning of these flags. There are two additional flags which are read only, the kernel_pll and kernel_pps. These flags indicate the synchronization status when the precision time kernel modifications are in use. The kernel_pll indicates that the local clock is being disciplined by the kernel, while the kernel_pps indicates the kernel discipline is provided by the PPS signal.

                                The stability is the residual frequency error remaining after the system frequency correction is applied and is intended for maintenance and debugging. In most architectures, this value will initially decrease from as high as 500 ppm to a nominal value in the range .01 to 0.1 ppm. If it remains high for some time after starting the daemon, something may be wrong with the local clock, or the value of the kernel variable tick may be incorrect.

                                The broadcastdelay shows the default broadcast delay, as set by the broadcastdelay configuration command.

                                The authdelay shows the default authentication delay, as set by the authdelay configuration command.

                                sysstats
                                Print statistics counters maintained in the protocol module.

                                memstats
                                Print statistics counters related to memory allocation code.

                                iostats
                                Print statistics counters maintained in the input-output module.

                                timerstats
                                Print statistics counters maintained in the timer/event queue support code.

                                reslist
                                Obtain and print the server's restriction list. This list is (usually) printed in sorted order and may help to understand how the restrictions are applied.

                                monlist [ version ]
                                Obtain and print traffic counts collected and maintained by the monitor facility. The version number should not normally need to be specified.

                                clkbug clock_peer_address [...]
                                Obtain debugging information for a reference clock driver. This information is provided only by some clock drivers and is mostly undecodable without a copy of the driver source in hand.

                                Runtime Configuration Requests

                                All requests which cause state changes in the server are authenticated by the server using a configured NTP key (the facility can also be disabled by the server by not configuring a key). The key number and the corresponding key must also be made known to xtnpdc. This can be done using the keyid and passwd commands, the latter of which will prompt at the terminal for a password to use as the encryption key. You will also be prompted automatically for both the key number and password the first time a command which would result in an authenticated request to the server is given. Authentication not only provides verification that the requester has permission to make such changes, but also gives an extra degree of protection again transmission errors.

                                Authenticated requests always include a timestamp in the packet data, which is included in the computation of the authentication code. This timestamp is compared by the server to its receive time stamp. If they differ by more than a small amount the request is rejected. This is done for two reasons. First, it makes simple replay attacks on the server, by someone who might be able to overhear traffic on your LAN, much more difficult. Second, it makes it more difficult to request configuration changes to your server from topologically remote hosts. While the reconfiguration facility will work well with a server on the local host, and may work adequately between time-synchronized hosts on the same LAN, it will work very poorly for more distant hosts. As such, if reasonable passwords are chosen, care is taken in the distribution and protection of keys and appropriate source address restrictions are applied, the run time reconfiguration facility should provide an adequate level of security.

                                The following commands all make authenticated requests.

                                addpeer peer_address [ keyid ] [ version ] [ prefer ]
                                Add a configured peer association at the given address and operating in symmetric active mode. Note that an existing association with the same peer may be deleted when this command is executed, or may simply be converted to conform to the new configuration, as appropriate. If the optional keyid is a nonzero integer, all outgoing packets to the remote server will have an authentication field attached encrypted with this key. If the value is 0 (or not given) no authentication will be done. The version# can be 1, 2 or 3 and defaults to 3. The prefer keyword indicates a preferred peer (and thus will be used primarily for clock synchronisation if possible). The preferred peer also determines the validity of the PPS signal - if the preferred peer is suitable for synchronisation so is the PPS signal.

                                addserver peer_address [ keyid ] [ version ] [ prefer ]
                                Identical to the addpeer command, except that the operating mode is client.

                                broadcast peer_address [ keyid ] [ version ] [ prefer ]
                                Identical to the addpeer command, except that the operating mode is broadcast. In this case a valid key identifier and key are required. The peer_address parameter can be the broadcast address of the local network or a multicast group address assigned to NTP. If a multicast address, a multicast-capable kernel is required.

                                unconfig peer_address [...]
                                This command causes the configured bit to be removed from the specified peer(s). In many cases this will cause the peer association to be deleted. When appropriate, however, the association may persist in an unconfigured mode if the remote peer is willing to continue on in this fashion.

                                fudge peer_address [ time1 ] [ time2 ] [ stratum ] [ refid ]
                                This command provides a way to set certain data for a reference clock. See the source listing for further information.

                                enable [ flag ] [ ... ]
                                disable [ flag ] [ ... ]
                                These commands operate in the same way as the enable and disable configuration file commands of xntpd. Following is a description of the flags. Note that only the auth, bclient, monitor, pll, pps and stats flags can be set by xntpdc; the pll_kernel and pps_kernel flags are read-only.
                                auth
                                Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using a trusted key and key identifier. The default for this flag is enable.

                                bclient
                                Enables the server to listen for a message from a broadcast or multicast server, as in the multicastclient command with default address. The default for this flag is disable.

                                monitor
                                Enables the monitoring facility. See the xntpdc program and the monlist command or further information. The default for this flag is enable.

                                pll
                                Enables the server to adjust its local clock by means of NTP. If disabled, the local clock free-runs at its intrinsic time and frequency offset. This flag is useful in case the local clock is controlled by some other device or protocol and NTP is used only to provide synchronization to other clients. In this case, the local clock driver is used. See the Reference Clock Drivers page for further information. The default for this flag is enable.

                                pps
                                Enables the pulse-per-second (PPS) signal when frequency and time is disciplined by the precision time kernel modifications. See the A Kernel Model for Precision Timekeeping page for further information. The default for this flag is disable.

                                stats
                                Enables the statistics facility. See the Monitoring Options page for further information. The default for this flag is enable.

                                pll_kernel
                                When the precision time kernel modifications are installed, this indicates the kernel controls the clock discipline; otherwise, the daemon controls the clock discipline.

                                pps_kernel
                                When the precision time kernel modifications are installed and a pulse-per-second (PPS) signal is available, this indicates the PPS signal controls the clock discipline; otherwise, the daemon or kernel controls the clock discipline, as indicated by the pll_kernel flag.

                                restrict address mask flag [ flag ]
                                This command operates in the same way as the restrict configuration file commands of xntpd.

                                unrestrict address mask flag [ flag ]
                                Unrestrict the matching entry from the restrict list.

                                delrestrict address mask [ ntpport ]
                                Delete the matching entry from the restrict list.

                                readkeys
                                Causes the current set of authentication keys to be purged and a new set to be obtained by rereading the keys file (which must have been specified in the xntpd configuration file). This allows encryption keys to be changed without restarting the server.

                                trustkey keyid [...]
                                untrustkey keyid [...]
                                These commands operate in the same way as the trustedkey and untrustkey configuration file commands of xntpd.

                                authinfo
                                Returns information concerning the authentication module, including known keys and counts of encryptions and decryptions which have been done.

                                traps
                                Display the traps set in the server. See the source listing for further information.

                                addtrap [ address [ port ] [ interface ]
                                Set a trap for asynchronous messages. See the source listing for further information.

                                clrtrap [ address [ port ] [ interface]
                                Clear a trap for asynchronous messages. See the source listing for further information.

                                reset
                                Clear the statistics counters in various modules of the server. See the source listing for further information.

                                Bugs

                                xntpdc is a crude hack. Much of the information it shows is deadly boring and could only be loved by its implementer. The program was designed so that new (and temporary) features were easy to hack in, at great expense to the program's ease of use. Despite this, the program is occasionally useful.


                                David L. Mills (mills@udel.edu)
                                07070100011889000041ed00000064000000640000000332fcde7700000000000000200000001b00000000000000000000000500000009root07070100013602000041ed00000064000000640000000332fcde7700000000000000200000001b00000000000000000000000900000009root/etc070701000144e9000041ed00000064000000640000000232fcde7700000000000000200000001b00000000000000000000001000000009root/etc/init.d070701000144ea000081a400000064000000640000000132fcde68000004b6000000200000001b00000000000000000000001500000009root/etc/init.d/xntp#!/bin/sh # From -- Denny Gentry denny@eng.sun.com # modified by D.J. Gregor # # I would recommend starting xntp from the following script, placed in # /etc/init.d/xntp and linked to ../rc2.d/S73xntp and ../rc1.d/K73xntp # # Please forward any comments, questions, or suggestions to . # XNTPDIR=/opt/DLMxntp3 XNTPBIN=${XNTPDIR}/bin XNTPCONF=/var/opt/DLMxntp3/etc/ntp.conf case $1 in start) if [ -r ${XNTPCONF} ]; then echo "Starting NTP daemon, takes about 1 minute... " # The following line is unnecessary if you turn off # dosynctodr in /etc/system. ${XNTPBIN}/tickadj -s ${XNTPBIN}/ntpdate -v \ `egrep '^(server|peer)' ${XNTPCONF} | \ sed -e 's/^server[ ][ ]*//' \ -e 's/^peer[ ][ ]*//' \ -e 's/[ ].*//' \ | paste -s -` sleep 5 ${XNTPBIN}/xntpd else echo "Xntp configuration ${XNTPCONF} not found" fi ;; stop) pid=`/usr/bin/ps -e | /usr/bin/grep xntpd | \ /usr/bin/awk '{ print $1 }'` if [ "x${pid}" != "x" ]; then echo "Stopping Network Time Protocol daemon " /usr/bin/kill ${pid} fi ;; *) echo "error - usage: $0 start|stop" >&2 exit 1 ;; esac 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!