diff options
author | wollman <wollman@FreeBSD.org> | 1994-04-21 00:33:33 +0000 |
---|---|---|
committer | wollman <wollman@FreeBSD.org> | 1994-04-21 00:33:33 +0000 |
commit | 1185c9048d38483a3f99f3065590713d8bcda610 (patch) | |
tree | 5b64f04197cf59cf404d915ac4a06650399db240 /usr.sbin/xntpd/patches | |
parent | d9768fd9dbb9ffb082896c373f5e78f968079f68 (diff) | |
download | FreeBSD-src-1185c9048d38483a3f99f3065590713d8bcda610.zip FreeBSD-src-1185c9048d38483a3f99f3065590713d8bcda610.tar.gz |
xntp3.3s from UDel
Diffstat (limited to 'usr.sbin/xntpd/patches')
43 files changed, 18787 insertions, 0 deletions
diff --git a/usr.sbin/xntpd/patches/patch.1 b/usr.sbin/xntpd/patches/patch.1 new file mode 100644 index 0000000..a6089ff --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.1 @@ -0,0 +1,790 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa12064; 26 Jan 94 16:33 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa12284; + 26 Jan 94 16:26 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA16418 (5.65c-6/7.3v-FAU); Wed, 26 Jan 1994 22:26:48 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA29418 (5.65c-6/7.3m-FAU); Wed, 26 Jan 1994 22:26:45 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199401262126.AA29418@faui43.informatik.uni-erlangen.de> +Subject: Re: Solaribum +To: Mills@udel.edu +Date: Wed, 26 Jan 94 22:26:38 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, Piete.Brooks@cl.cam.ac.uk, + Paul_Vixie@corpmis.sjc.hw.sony.com +In-Reply-To: <9401261207.aa10860@huey.udel.edu>; from "Mills@udel.edu" at Jan 26, 94 12:07 pm +X-Mailer: ELM [version 2.3 PL11] + + +> Frank, + +> Your command-line weenie sounds rather useful, especially in cases where +> 1-pps signals, kernel mods, etc., are involved. Better be quick about +> patches, though. Paul Vixie is burning rubber on changes. + +> Dave + +Ok, you overan me with 3.3c - thus the following patches will be +relative to 3.3c around Jan 26th 11:something. + +The patches include additional sys and refclock variables, the +adjtime fix from Lewis, doc fixes and a include botch fix for +lib/numtohost.c. + +For examples how to add extra refclock variables see refclock_parse.c +(as usual 8-). The variable mechanism is documented in doc/xntpd.8. + +Ok, here it goes... + +begin 644 patches-fau.Z +M'YV09-*8,0.BQ1@05)X0>:(CA@N'#F<@5,APAHL:"E1HG+BPX<./,Q)<*4,& +MA)(P;D#(L*$RA@X:-E[> !$C1PX:"EKHY/A$)$F3*%6RE.$2YDL<-&WBU,BT +MJ5,5&3?&8%$#1%,%($",4!!"*T\6=D!8I)'TY@L8,5[(D!CC1L,<.F"P7!-& +M#IDR;$ 4P0,'JU:_5-"DF0/"3!HV94",>>.&3I@T;@C#D?-&#.(VA->X>7,G +M)9TW(.B@21RFCN@W<@B+#D,'Q!PZA_.Z*?/S,P@QB<DP+N/"[T@0=][485,R +M#)S)9<:D89U8((@\PA4+)^X:3MW$<]ZT2?R&(/0Z<D*GV1X:-)LW;]:$1D.Y +MSADT.7=.K:I3I]^M74=\#6NQ:DVS:*GE'UPPS*!##57191=>>O%U'V""$688 +M8M(U]EAD($Q6V669;=99>>N19AH:J*F&!FNNP<:&;+259!MN(.@V6V]9_1;< +M<,4=)T=RR]'1G'?1+89C==>YIAUW0((G'GFVG9?>>NV]IT! Q5TD&YCO(!' +M8W"0X0(.'D'T4 PQOI'EEG1T^:4.%A$5E0IEGLFEEV"*"5$,/I5T4DHKM233 +M@63]AU-]<6HYYY=Y L7G4$6YA6!92STE*51,@7 ##2S<D(-53,77@J68XD!? +M?7YU <(6?KD@1$%TI)I$:'+4\1I):Y21AP(K@& JJKFJ6I =N(+@PJMVU+6< +M964$NVNPOK9@!;/$&AL&LJ6F.@42(!!1Q!1#2)$$%%0D\803KH* Q9QO3GI5 +MI3'0 ,+[59U%:'MV@#OH_6UX-<<</!H1AX@A!%C&CN.\9D< +^8F*P_F8&: +M8CNR!MD9*4K\6AIC2'A8&7.X"@>K(.#@5QAD% ="K0"[44<;N(5GFVB)T1'K +MK"6A# (;@[7::Q(?MQ"6R+F2;/(<><S:!@C%RG$L8M#V;$7(P0H=L&M%^WAT +MTDLGAC/-MP%\EQFEL=%J5BY<"X((0XQK1!)'5"%%$.&."\+:3!0!PA/@BNO$ +M%"*X*H6Y<X)P0L=9+>:&86> )S%CA6T,PF @[,B&Q';@!; 9.R;FL!QML.9" +M5D-HMUUC<[ G&!CH %"YP#CEJZZ&KT) @TWL4#[IO/N5 ,,F-8P UGY0@CY +M8FUT[D9)D%>6'6(^!GP\")NU%D:QATU+(63K05YY:FDPWEVY:*J9*A10,+OJ +M'&70D32T2$M+[<ZG?ATV'5TP2WZP@0TO.DK%E4Q84$)+ VP8$X:\$,UH[5.: +M]7B#D-&@+X%9(\P8@N*Z7#',1: )R&N4)@;3D*9D NR>&PKXN,.AIG,#3,D< +MZI"Z@)F(-&,8 \<D\P:<C2$/GTN"&8(%,P@N$ 3="5%A*',T'HQP.S[H 0^* +MQ88ZE,$'CY-0#<]SAY^((6&C89_\AJ.SD]DJ.'81(M9^>(?8W$9K.?M)&"13 +ME]8$L8=;%!O5C!:L,2*+,"C@4APB%Q;B&8\,*?A<8#CVP8"DD(1V1 QAT">' +MRI5P<R@480&#!0?PP.$-Z",,8]B PP;:*F [@MX;6B,YYF!0B!KZS&+R,LK1 +MN.Q$K8$9P":8D@K>+(U>\N3)/)225)JIACZ\(W#,6, [A*%H0-Q>&N[B/( E +MDF,Q*H-A9D.&.BXG1.Q#G_KJ$JSMI XE@VE#;WIUOUP-,I1%$DWFJL,C1+I/ +MD>M!D>$<@[T>'A&:02Q@7IX)Q!WFJH=S" -YSM >. @RB_ [X!>2]H6M=9%$ +MQ'DA] 2*3X+H<XY6"Z8B#YHL^/6K#')8:%T:FK-@090,$KVG)BVZH@S1)CS/ +M_-_S8,:^,9QG#&L0:4@=:M(:NF@T$]W.2H6X(S. M QND*%B;JJ>F(Y36/<C +MVZIVM+SME>L%UA&-H=)$U?&5#W9.D5T,8)"#&<!KK&2Z2E9@LQT:W<TS0)W> +M8R8GAL,($&!!)-\4'GG"Q<$U661[%5O+( .N%*8.9#B#YL)@L(?-@41W$"*5 +MC+JCI"8&-W2X@X^0*D2]+@D[CFG#Q_A'U.24 0XI-.Q@*R;:?@J1D<LQ8!K. +M,$(V'!1RUI$#17T4'LA%K"2;!!AKK(9:U;S!L-K,'AMUNQW>#K.E,)KM9G;D +M)0@!5EBO,L/DS@ #OR!U@82!3"5;,R'>3NRV_UL=29:3DO*"=)BBJ1!L5":< +M10H4#CASPQDXZBF:Q$ &.#BKNPI"JK6.AS=^><)? T8]NMJ5#G@EB&<A TF_ +M8C.PGRUL5\R 6,46AK$'B^8TH0G06D46LU7D; \]N]K7W-=Y/TU,P4Z;VJZT +M.+0?>R-0/3L'Z180O1FJRV[?"SE9U4&? (.!"T%@9"2K=L=0V&N/:4M"R.$& +M9V6H'/(\<V 8WVVO=YD<,A\[G9+ :#%R*)B/JMF5>@*U<ZF##';ZI1S#' 1] +M!A.A:WM8*SG,)B]D4-KV>M.58678L+,AB2;=P,DSNB9]IU-Q7/-,0A[[."^0 +M"_,Q&^;8(QDV8MEQ@UL'62[MAH&[WAVA,,5KFL:)#:3G;2#D!+:=@ 3%O>$I +M8WSG"9DZU-<U]\WO?CWY.MB)=:PY."M1.!4[#.O1+X-=##.?Z57##O*STDX, +M/]V<&#U&K@PD6ZJ9FOK.Q/B1M/.\T"*S#-));C@->$$I1QN7&O+"FSJ0Z^%- +M2;A:[%7!#6G 0V'Z2H=YXYDQ)3%,O*/X9"29(;FVJ0(5A@ "%%2X-4A 0A.: +M$$A=C@$\E:5#HT&<!D?.N.3O-?49_A=*AY($T67 0\%!$ 00'C(O1F4->#2W +MW:'V\.3; R5W4"O)%0',Y5L.LFX;X\#!$%J7(#YR7E:;[2B" *DVQ>1/L(>2 +M,U!(#+K%:?H(PP,0^.!S00!!'*0N$(Q96,?)ZLI=LNVB+E?]XE9WV(HX,S$A +M4OT-=YGWY%Z3(7@K-8@4)K@(#9MOH+YA>Q>-E1L KM_/>KF'C/UX&X9CRL]* +M\97F9NK5*]>8BOEH#FYU051!\&\!7CVI@)]8M>G5K@#'H"TR(+!]G)VF.$#[ +MP%6G-MGNUY5K>_NWXL:I1J%Y[N<Y]-&0WV>Y4>])]!GVI /?>QD/QU?.^54' +MAC5T4;..TR\,EO$2W??4NZQKU?6P.P^'=,0G7G&\9WSC@;0V4#^>9J2*7+AY +M9G*FA7+AH7(LAT9< QGA]RKCQU1?X&)T("M/5W.&5'2% 6X1&$H&N&= !73O +M521O0'0$9'2WE("])&1,QS%.IW\P%('\9G> UQR$@70EM(#8%H,3J'9L9V=O +M1Q!PE!PQ6'?D<7<$EW=3Q'>5IX"%QH#21'XY=7%/=VV#UQIP8'A(TGV1Q#B- +MQQW1EQ>21WD4LUJDA7DQM#*<MV:J=6"?)T1..'K^9WK0I(38]6UFX(0/Z!BG +M]W17,!HI,6$FY'TI9'7(@3ZE%T WMWQ"QV!SM4!/)WY-Z(#'<3';85@.]4(+ +MQF)JB&,P9H,-.&Y?$(ES8&*4F#,2-5E'95EGE%FTD1)2, 5KD7MW(6BUD8DO +M-H90ME>#Y6*BE7JKUWJM@76QIU_5-EE64D(VA5AE\ )<\@7S1!FVA09A\A%5 +M 1G'>!?*F";,R!@R4T,N (T680.R0XU-9(W+V(S<"(UV<A&)LB="X2<T ";+ +M)BC])8[(>(UPD(V-X8S=N(Y!T2=$<10Z$(]*46SJ(E8V8%9MD5:=DA4C\#5R +ME@!#, 5?, 59, 544 1-D !M<1\..1L0*9%+4 19D 1$H)$BPY =608?^052 +M4 1&, 4A>04:F0.&U9#2]) 1^0564 2MJ#<)( /=E14UF9(KV01!@ 5IHRTK +MN9,].2Y^X1<O !59814@ 4OM7R$445,=CP@Y6+'TU\Q<)#P<@-D$CPH>9,> +MF9,4:9$8J9$WP)%HJ9(Y&9(C69(Q<)):090YV9(O&9,S.91Q"0(Y:05!( 5, +MD 06^9-!"0* .6)%>91)601+69B':9%/F151Z1=4:97O%5/ L3!<66_\0Y"3 +M(CM B2E$D7MJE9=Q"9%0,)%%X 14D ), .%=9:..02O23<7*052\ 124)LS +M )>YN9M,$ 374ILXD1]Z^9I$@)A00)LS@!',V9JZ^05&B90*(9G7^9Q34#Y" +MB9E2F15P,@2BYYE:60>AZ975-)4J\ +]=9HL0!0289:L69RP*9O2>9OWB9.[ +MF01,T)N_&9PS,)RXZ9]?8 3'F9R_TYAR)IBO29B&B9BS.9U/F2LVB9_9&9FN +MJ9.42:'! I7C297F.6Y8^9E;&8OLJ9GO29J28IHR( /S*0.XLY#]F99#D*!5 +M0 1'4 2$R00RH)&+F:$XF:,*&@1', 4:&0/$6:1?H"U6D 1#()G_]935F9LY +MNJ';"9$Y"J526@27"0*9Z9[9@I8AY#T^"%0;Q$(9N##HLV6\55N-9AO8)S/& +M@85^U1N$$J-FM19E66 W*I=&NJ,]^J-!.E9-BJ,)>IQ)NJ2)*JA/ZJ-?JI&% +MA:$I*9@Y*J&5.9LQ8*",>:5.JJ5*.029^J&6&9YB.J)P0@1F&HAPER*Q8C [ +MQV1O6D)QBF0@4J>Z]3&)!X@BU!O$:!#&.([)N(P34@:*)6KH^!$1,:SU:*P; +MDZS=R"8N\):50H_DB(W'*JW+*B8A,1)ZTH^, I Q"BGSF%3$:H]?L*U(M8_@ +MJBCM^(_O&)"Y)X]@M2Y2017,-IZ9V154":V(P:U@(18NP!+_,0-GD0-G02;_ +M6 ,N(0-DH2!AUB!]X9XL*F*0<:88LCD@()M0X&J)D:SMED*+5 ?'@1IC0YY@ +MJ:_VV:_D"3W:&JWMB@8#:Q$S(2@+*R!)$1<TT!!S41<3NQ<5J[)DVI$:NX8> +M"[(@(+*Z1;*N8;*7) <I:Q53(A $(:S86JS8"&>",2/=^A&;DK7JRK5R-JT. +M ;'AB*[/NK6,U;6\\;4.D0/\N"CN"(\W.Y"$(K;+2+9>.[?Q6A1V:Z[WVBGL +MLA;P\CO[&J99@01!L)-?4 5.0*%$\ 78,I4% 0)-<$PP0F9# B.YY48$X;%? +M 5/, 5)@ 43^01N,Z4@\ -AF@5!4F8@H :R0H6M]H,CMFA"I"TO>4NS44*K +MT[9R-@<OP .8!$7'ZE:O(B,GT!H]AHHP@TXMATF@.S #<8JQE ?](D':486( +M\4HH(C '9#5'TP:SA08I>R*58SK9P22PI!A!H1L90ADOH[U]1UJMU)7QU!JT +M%#U M& !509',[X"K+Q+"VD"\TV1$3.@D5G+1 84TKY7V$.&@SB*$XBY)5!K +MQ%O_P[_=NS&_1QYBL$8_P3C$@U\@]0)\:V[:45<C1 <]QAB$<46TVG>B 3E9 +M"[)/-P6T42&5@P>F\Q@"1UHKE!(5/%L7+$+KEAB0)1VBA1@"YWJ*57!AVJ*6 +M"Y:&VZE(89^:"0*,Z[B0*[F4:[F7F[EYL+DDTKF)\;FN);JD:[JH.P6J*P6L +MZ[I"F2N\FP21&S=[,S? "0)K>9%- (F8 )5^9M3.@5R+ 7!DA46*04369&" +M3,93^2E,Y$2N1<!74VZ-#,A4 ,E0@,C;LLAD;,D%A,E!I"$R- ?9 5.<G"M^ +M ;MU(!U#0KN$-UZ2%9>ZVT.\NU?YU1PIL<+$:[QS@+P;8\#,Z[S4&#.N1!K3 +M2WA!9(HA%QK:RWP?_+W[.S6:7+[GF[[34P;L>R393$ME,K^CU,#V6WGX&[TF +M(D\HX;^, U!A(, 85<!^\2I3/#4*_$ O4T8E$\'B_*I'G#A-JV<9W#FSDAH! +MX\&B!<(&)L(D#%Q&W+W?J\+"^[O$X\*L$<,80L.R8L,1XJS,E+R&Q<,L[ 8_ +M',0!YV5%7"$67- R_&A,S!E.C,)1W!I3C'I5#)]7/+BQPRXU(*,Q4 ,SD3N? +M,M3V$I; Z@C@%14<A].[1Q1^05", 5$8!4\':@)\,5%0-56_061.Z7!,@(" +MP94$\<B1S)9-,-:7BM:!C)%G$\98\ )!<+I]@Z%1O4,,F=>I"@*M: ,P$-A8 +M'::9Z=.4(A4VD-1DF;CT<@,(B0-_NGM:W9)48+I'0 59 62:0=OL$R/F@"B +MNY9#$ 1,P 1?T*.<:IN?'=H5.=JE_05!0 1*H)$T\)886M9?X\F0_-9K;:F! +MZ=:2#-<B(-<O, 7J6;JSXP)X<-=:D==0?3P"0=B'/;ABA0-"C0-(8=1)(:- +M&=GZ<J"_Z\:E>[JIN[I@"MZ)P=6P3054 )M4 5'( 7@&:A>W+A=#3?M'=9@ +M>MMF8-:ZG=:"S-:__<D +MS$;;J1BP4MT 1]L]?0[4_-_>#2?;'&[0;(70,/ +M 43A4>$7[@*Y]S!34$/&0A@RD.$@+N)*0^(>[J)/(58Y$&! *1':3113012; +M8I]$^KOJC=_N#=_R_:CU[;@\KM] OJ.O>04 2@2C+063JRV'R919,-:X+4W_ +MS=L"/F)5'MR#/-P)7MPH#CDEOMQC[=P._M2H6M@^#:,U+@-%W2E[.@,W,)\P +MH7O?3=_B#<?E3<?G3=\[SMX]'M_SW=02SM_^#=QJ?>4/:NB3S.6G^P*A@](Q +M5[H-'N%/C=<2?N:J"@))X"U8D-R=3EJ;?KH@@.%XP.)A52EK40-RKF0S7@.H +M:0.YA^.7VN?M/05%\-Z #N3J7=632^3HW;'O/;KC'<=S+-:$GMN*CI&(_KO) +MON7$'>I8P-R";N:4'MV8;NKX"B<0&^<RX#N,O1,KD6QLOL5,/>OV[=6]_J6? +M3=F6C=F:G0"<[=GH#=K!+MJDS002:9%$(.7]C>P$;N6^C>7-'M==7@5BHS1B +M7N;1;>G4+J(7&P15@ 783K@;P>;<?0-M'CM[F@-Q/@,P,"J2G>/I?>Z\_@7L +M79% S@1/< 1@_=X@H/(LK_*NS:2_KMZ6[02D7023*R[\7NC_KN7+GA@#S^AS +M#?'1/N:77NUZS9CB.?$_7?$XT*<X4*,:OQ,S<'LL8)M*)NN!N>M?[>M\?NY. +M\+CDPI#JF=MW3MYR;-X][^^[#?0!G^@_K]8$W^A.$'-T,.G3OO!*/^%DB@10 +M$/%./]UB@199+Q??_BD%*J._L_5,C1?65_/GWI*QO01-H.P*#^%DW>]4WNQ! +MG^5T3_0O /@1+^UDWO?7;MBR<_53<?4LH=V_H^K369_EWO7G?IA"L 16L-:_ +MGO;$SO:2[[@E3^3'WOES'^!QS^S';^!=SNM)8/I)+_)!WM4E?_)3\-P-K_J5 +M8IL=;YN)+Q8V@"EP'NN 2I4%Q!@4TW[:[!C' [1!Q1V_2P;'! )=8<7TO8PD +MHP:K]05?D/^#5>K!C_I]/757_,[:\NMM]&WH$3<FT&O$',.S=JB/Z:6JP;?Z +M9D" ^1UD ?;=@ N( V8"U\-RZHWR$0'+A_GL7+![8VJOV.TYZ>?UTIVQTPI3 +MS@"^O4.7_(3> :Q[<TT%\#J]Y]P>X-)S>&1*6Z2-*6 $F)3VVPB_(]E,IPSH +MYJQ>#I!1[L+QA;Q+Y?ORG%B;=ZR-6]R[?$<%]MV\:X%@C0#"0,XG PL< I1^ +M"K#+"<'2502A'[7;>S^PZ1U!.#&=+F#X^W[N E/0@$Y%YW3=Y"L"E>_R#3(@ +M)Y&& .."9'G,">@\"<@"2=X ?(&;S^?-0.27 &^@Z$L"%M &\,!!%P&!X,MJ +M FD #G2,.0C^[ 6<4TA5[U/L055' ]9"'V1(SB$ED0$4L):PT[>8 BD R#F! +M)T "!V$ 1'=A$!+&0-!'"=&@)21NH% 4ND$(" <G'"F$<V8%SE$]J$ H6B$K +M1%SV:;#!0H(@"VEA18)-4: *Q"8JD M_X? 3@Y'0[9G!SY<&&QT/6SMOB CD +M 8 C<&; )JQTG;#ID2EP(?%(H;N(<WM0-35!50CK;,<-D()U#L+TB]RFGJ8, +M-7$-)$)J,9D'%!'IP Z -M6,(48&Z?(3SD/EJ0,-!?U=Q,S7]HS?)%1V-9 8 +M,C]W6 ;@8>GAA\MPZ35#5$4!*\4>!(BN4+O5-E:( Y;:% Q,NW BL0U%.+D, +M86&*5$. "3!"<^>X1& O](/"[Q'NMS$H"==A2FR'<RW$N8$\< _YWDR4@&/J +M91&F?ICF;.)*L!U7#P]V0-N1 T!>G9-^0?'FZ;PO8!0181%(BDO1]C5%0#@" +M!6%>!(&.T 5.Q71H$JUB)3R)SJ[+C<68B/T@H(AB3/Z0!K#"1[&:I)_,6P*C +M2Y0I,D)8D:R R4L"E^\)& $B$ 2BW*\S75J@JU$VMT$4OX >HVI5P @8 9Y4 +MDYQ;5ZA) L'M <*,1)NBDF[;C8_CB<$;PM";FH"XV"LM*C\,0_56'(^C@])Q +MYZXYEJ[&*!-/7W_9'<G&8;&$#_B@+F-F? *)[/J=QL[X&4/C:"R-A# )I$:6 +M=.M8XUQ\C4(@-LY&1J8<R:!*7&N@2ODA1AQ8W(J&%9 "-* K5L>D5Q,W DS0 +M@S9@&E[';D<59L"-JWU8+@NZ-GPWD;I@D;-UWS$AN+MM4>2(P)%+<DNNR16! +M)\>3HEP!O(_L\!BJP2=@E/28I$-Z^+ 9PC+^IAN# &], +[QD0''\8!?AB-" +MX$G&$;FUJ!/)'(&D<TR)15(*!,GKYP.I8Y@BC&8@ ; [MK$AJU:5P%IJ*UO= +MHTZ$4\P6L_H2(DUK;<E'-&ZFE440&=<J2XK)+\ EUX"7%!,XP&_Y(\ 5D)"" +M/,I;:E)=M4EW]1/8T9PD5W9R()'"&Z#J>F+BR@H)0.4Y@2-P6!)+EBD@,F D +M@H $ !*_27C@/R$' LD*24DIF=&)" ]3B-TTAHO8%3JEI=Q*%V0+Q( N("G[ +M@*3,"6 QTTD!:7**E$H;2@(OX G *C:U<SX'ZZE5MD%#V(%E0AI2 F3@+6!# +MJ:"8572Q?@ZMK"RV4O0$&@(D4V*,ILN5JP/P# <$0R@()0LPE/8I48X+1LEA +M'"43B91^P51^2L4 <OR/IIP#G+)2KLM027HLHF%1EW4!5;XI4CDIUY3!4 PB +M1Z=8A35@!TC*:]@!.!).&"(+Y)GLGZOT>R]K5E(6K!-Z3!2NU)7^LDWYRBH +M+$&#L"26SL-6@91D>5G21XIQ \VR SU+BIE\U,.TW![54HA<S&Q)!K8EL+): +MQ4AOI0DO ;<*5IBT1SS3(V"$-%F-Q&303$<V0$Z.JWDUG<P5GBR:0)-/ABNZ +M):_ 1-.T5V4Q7S'!V-$5?..AH%G\(<,=K+-P \X"2T +<<$M%(C9)0;4 ,6Z +M6%_S<D$!^C5*JMD:"A_5Q3UEM97E$_5%U\QT<?-3S,USIA"A"<?"FVY%&T+& +MK*GM:MSK&X@M@2JX1>\B<T"*&X!WG8T,) !5-D/PT39B PD "J %) QO\T8 +ML ,=A""H --Q+%- "I"4>,]R8LYED@!V1-2B U] 5-*!T#DZCR7[DAELRJ6\ +M%Q7@.E]EKO":V,@<V9:#,"0G8*Z@2E, >,HJ#?0P[%1DF!R!R#$(DV7)68ZE +MY20AFJR1P8EM ]U6V>7!>P,'$#V5P98K2J?!8 ,"<P\$BTY)9B1BMKF(N8)^ +M5L3"T'/PYZ0\E2K 1\@<__DPCR=4>)YPP@ALE_;11#B&^(1/-1 B!8&Q)P(3 +M S V@AZ$G0L7<%O,5%LJ 8M%(QII3(NVC3!05*&A0*Q+;GM"A-*!YP%QJT +M"#P!*^!"<4!WF9&3K2>@@-%&0?EB+HR@5T"'\M OT$&3P$7ZH9--)NW0"<H> +M8QL?&*)%](B&J%P1._U,X5B7<")@E R!*3I)I_3D7P$S:7 *T]$0.6))\(AG +M@'4VAN(9+*IH2D :F=-R80[:H%.>3Q=UGV$T7Q+/U]E&*Z<5A:/+Q')I$RXZ +M.O$H_!2C&L%T % RNA%I2T=$?VJ4#K!1*NI'WVB\*PE3:9 J%#':11?I5G*( +MCU2_1-))&BMAUCTZEE3%!3#/K.9&9Z?F7$:HE&/P3A1P2=FH4 I6!T%LY1;T +M\28_ DO0I76!EWJCAS"<B&:ZVJ5O*QHYA*3YKOSDTK2:!@MO[01@FAK>EM*L +M6VPBFMZ$ @DGID+&XU=0P5_!B1<P!^1 EO!8+Z EH<"$( 6RP NP PB+F@K3 +MFO40ZI52R%FNL"T$) /Q\4X&T&(00HM%&1:JA$R[$3W]+Y "G[(%M[ 6XD*" +M^*=Y(:!:+#(5.N! 'E :[Z$UH( QD *2PM2#%S;A7?R'J? ?A)I-0$@#B4P9 +M@:6C'I8 1)T;2H,D*(W4T0*" !3C'^^E]<!, 3+/6D,1D .30[\@E1;@!)R( +MGVD99V!E>4! Y;*H$CDUIR\ G:K3\<9.W2D\?0'R]&T=5+9P3P-$M]M9O",@ +MD0F)!5 =A,42ITIGGH9-/HBSO.J X%EBU9\NB(AJ5HG6RZJH%[6;51R.ZE&3 +MS7\0J3:!I-H$DUI60.HV5:DL%02XU+D*4^'-M*2I-C7FX-3PH%.[$D^%-#\U +MJ"8KHFI4W0!2Y:8T0=4MF\HX#/F?"FU%70T)\#\@9UH+$X94K5_@/@B$!! " +M4$ WS"^2% 3P 3Z L:@)"N!_1\ )5($<]05<YT U/1A#,:Q+9,H>,L8RV0)= +MH >(@((*-@D60FVK:2&?,E1^^E 9J]":&Q!/!$C*KRA;U>396$:%$_6@@;Y! +M+T2K=Y.M]K&UHE;*M5I_G7Q]K?5U#-)6VQJ79B%N[:B[M;>2A-]ZVH0K<36N +M_@JY'H13R5S-:8\A ]!5NE+7K9I0W2I8[5G+AJS2U8]A!,+K>+6.L-"\B@#T +M:C>[4=]XAC9 ]AW$[S<#4FS6<VRO\&4A@9R!&O( ^)FH+VO" @L$ZM>RS� +M,Q:!#U;8[%H5+FQ<E:MA1GR" "1725"P6 ,R@%[+AX$>K%FY;#D:-8U]PQ9 +MM2 1:,)V=:A90<->+$%A.J%L]4@M%@N7_DQDBH_,0"]U"-,H3[+9"F8F+T+: +M@IISEC&XV9Y9 ZYIU603=VN;/LUC&DS+0)N5FO#J3S+-0!LIJ!N[R!2'<@*B +MU:=Z3M];.BT"ZQ0X6=5X*F<+[:&MKF-ARVK7?9HVD6Q9'5I4"ZWFV<-A4,-F +MH.BJ3=;+DEH8,!,T[-O$L20J!.75C+I7.^K!,JPX ;&BA);Z4E>J8YVI:*"F +MWM30Q'H SDYU#)@5J':=H5I4+>=GI1>0MF6%TY=%::.JI9VJIJNJOE-.BV<] +M+9T%M1=!U+[5L.H*;:U$55FJUMSJV59+L 8$D]59-0&NMMN7^FZI%D75M1@5 +M??7:LH!2#^O+6JG#5K$6VYCZ6)-M9,4#D[794LO+ZE.EK5!U YS5VH*4I$H* +MA]I\0H7C"4J"@/O:U=*&$S "]#6VVM?1Y5I+KMI(N?!UO][6UJE;>6LW!*X& +MEO\AV$R*AY+KJ20#8\ ,--<'&V&GJ[QEM>CVU=[;4=M0::VIW;#@M0J(5R=Y +M[=KKQXVQ(I?DTL67"UM9*\N=KR87Y7;=;2AS^RL*^*\U5\#.0IP[7'5N+DRP +M$,CGKDN@*W0=['.-KD:WFGY:>FIO:0 ^7;<85B*X6[X0=:<N2;QV:E9L'1"L +M4F@W"+C!#&_69RK>HL%XJZGC%2CJE5K=GCN;KA8O,KV\D+=G,M,^*:ZP*0U0 +MNH-BFN9)S]MX9<;C5:]^EDZ>7L'%.&D"I%U-376<EM-*"P4N;:9MI^,6JZY> +MROMY72_FI;=!5LE@5RXK:QLJ0AV\J';;$M36&S%"[T%5OK"6^>I3YYM[H*] +M_;<6->!J5+Y:$S[J7S6L@O4)&M:"&VP/;F)=K!/+V,I4C.%PEVTLDKC/MJ?J +M!8N[6:OM4=VX2C7&YEXQM7N];>\%MT94TP;?R4N\BF_U5:\'E4PLWZ^:;\.J +MQWNZMQ;>YECJ^WJ1[YA0MT;V GM?7%N> *Y>W:B^]L7YU9"*?@TK866_%POA +MN@%BRUCE;\-5MI*5V596[@%M*ZYFI;:=];-V7)0::15GS*VM,W>-IMV;6V#; +M;G%]NSQ78BS8Y5IH,=[0O;L2E@,?7W0[5D3M0B6USY??\@7#FP^UPMFC<J?5 +MUH4D*: (F0!8(L+9T/X=8?XZ8OPKS0VP3#BX.N&=FQ7B[A3.E\C4"MM="(MW +M'7 'YL(2./M28 +1LT2P&(8#9)B\FCW_EH:+P!INPU;R:AV$/O-G7D#FJA7) +MBPX\,67J @2OY<0+GC@,@.)C)HKQ"[4"1Y6"$Z/B3WR3$(,+:,5L@!1_*])+ +M-67OIKB3.T$6LX%4O(IM,2Z.O0")=M!>1YNOONF#R \$&*I*54Q+517P517& +MQ+@6\P9<S'>]L*R%<P="\#[B!_$IM@)#2JLR1CC,%V8F3V07C+@@P"NS>,S) +ML<H>!.A@D5 0/&D'J 8QL#*VHY,K29%8][K>ZLQ\+W&IW@8T^)0_,3HJ3;U +MNQ:V C?B[AJTZJHY]@K(-'*HXP>U&CR8&J-56\<S!(<,08\=*$/R"VFC">3C +MNB$%^'$,R<3%"&>( 7):-0Z,*B7%75@FTV1)Q!O&@$>P5AM!)X\OF^R3T]%8 +M0<:[(RY@7T&[$X1R36XK8P IPP"EO(SOE6FR@/,)QE;&TY< ^L!3^A0)0*'8 +M(?BC35P _*P#:0 $\&.RG#Z^0!JXB&!9+#L@MEQPSC)!6,L#89": ;@L 1. +M<T !_N_ H 3X/_L@.DP 6^@,'?4L@,#.JK\1)1AN6B<AS. F#>%^!)4L!T +MH V4T+S*F1@B [9,%/L?'0 "2D ;$ %\%#(W$A+"CV$ O^S*5X<-1+Y)63N9 +MB%JF":]R&^8V;1$?X]L4 &R![5X>D,E<F5?>9?9-FCG_/:"G7 900 F8 RF +M--/EV_R<GS,7< ,B@ 7<RP1@N=J &4 MB7ETYC\> -^0 MP"8TYB(%FTY$# +M4@#KG .SX0S\ !'0 D2 #A !V7D[6ZZ5\9T_0QA 739+9N. &T&V#,;+97# +M^0U09LN,F35S"2@)#[HT0V@R<)VS<\6AN87Y%A=,/*.=2V4"0 $8&C2K#PW] +M!1C&&# =(%H))V81;0=(-(>^T&MT.Z]H_=>BU4>)QC.I6>GU-=Y<!7PS<&9U +M>[-4_F4 G:%M-)ZA?ZTY[<[H$6VC3322!@&-F9 9,A30.?# %]@,V>B)I8_$ +M $4:LV/>SG. "E@!#3D%!O.2-LR$;$E#Y]><*&$;$2 "@UDN>R*Z?)C5-!_U +MT EZ01OG*U"8(M>BU,QST\?^FL\<FD=':P@(9, -=.83QCS* &H>K[F1RO'H +M(["=__)=Z" 4 XK0 "A,FR+S'"#.EGE2=VC:S)VGD@@(U,/RUP3F[8 ".BHU +MHFA;VG10E64B=:CS'*C0H[I36R[UX9_-M&+.T<W00_]EG5"EK_0;R-(HK'GT +M@-;<4?-T<69Y?)H-Z[$CD*MIDPBH%$X -+0!U) 83@"JMCSY;V DZD4-JWW$ +M"7C4Z=(K(\H=D8'< I8S6P@1WOE-P?C,![6Y<KJNB__Y57=G DSBZ[3BAD$ +M,.8O#9F=-8-&SF=C"'#F0]W NDS^JUV&FC2;9G2MFFUS:W[-?2 V/Q#YB:>+ +M!C.:RWDY?9CE$IV6\7+\P9UO&4Q[[+$<LNMRB;[+_>1DKRM.69M9,VY^DI&: +M($SJOQ;8NDO'_M0*^ED?Y\Q\-I3S4&;5SSDZQ^SDPH^K\ZW&SM4Z 7AG\/R? +M 3-H)L_F&3V[9RVJ!@ST>X[/\[D^W^?\[*$IY=3NU0$Z#0SHEKVN#/2=ILT& +MVS@WZ+,1H>OVA,;5,#JW%ND-G1RB=HK6VRR:1)MH%$USS[2+[MMYFU/3)L/= +MI''TAWUP.[H(]&:>+=CDL+ F"$0Z<!OIY/"DE4R 9=P%TTF' &8- C@VJ0[3 +M8_H)5#9?_:_3M/];T]NY3:_0.+VR0?;)!M@B&G:7[;]<K+$TH][29@=*?^FR +M[:E!]9[NT],Z:I?JK'"J=T2JEA7@&C1#[#>$J!4U0TO6CAI8Y^QL(;E[=.SV +MRYC[4KN'X+VIOW?Q#MJANGM3:_-MN9JWH(;>_+I5&Z-R#<Z^S8.MU4W[:9-M +M4DV;=K4=Z-6(^5<_[J=&O(=U"^C=Q_IW*VMF;;[C-K1&WG^:?9MJ;*VMN;7@ +M^-:$6EQ;[YK6J,_UV^[47ME#Y^NNG"[9-7APU_!:7L-D8:5'[%$<N,GI""B9 +MTCC@PF]RF^@NE:*%ZQ$8_B6!DE0^$+]8FGX*'=Y[5.D/KP%!?)N2PFZ'\>93 +M#;!NWX^)<[LG3OLD6^U$5FGD4F+1,0 '..6.. -97+GJ43?0Q4LX%D]H8CP\ +MJ N[M3\IU\N/6MGE/R$BYTN_7 :?W];(#MIJMC$*NMXS_W#KJR!YO&C]*/J +MAA/HXT)IB<.Z/G606)V-2@!W0#!0B(WZ,<H.&W\>A>Q"LS+K($-0P!J' QTU +MDW_R)WT"N( <. %2VBIP<5)^G4^ <87,7'P%K !.2<9O\R4K Z\YDCL.2BZP +M%4._P.2&;)2/;L'! ESY=E8!9%R6W^9/+LLYI2Z?Y+4<BMSR5#X8^ 5C:<XJ +M((_ @?/L.LLA;2;C.H%3(O./P8]+.0PX 7 9W,&Z5X<- 14DE^2)@9=;\E]> +M$C(YB-[DU]R3<_%0'LQ7^3 OY:<\E0OS<M[*7SEMCN6S/%W6<GY\RW,Y/-^K +ME=R7.[54/CH'.C%WY6DWCJ^9G5NJ3??RUD%RO"1X 7Y<T9-YKN#'S'P%=-1E +M+3A$@"M_S5DAA/?E9Q[/HSD#Q629O)IS<FRNS;FY0:=-X+P%B/.%+CBXP#F_ +MB&H6F6;CY"6,27'N4>H+^9@U]3,I.Z"Z*M;&+J"IQW"D[!)NC]/<"5:]&/,& +M8<S5&T(B5N*UU^/9CL?9;"8E=6@!X:$%>,Q"BXZ7QXAS >8A#8@!-BN,78# +M< $NX 7H9)G,)?QZN@0"R8%$G U"D00B@V-H*2< F:)R[/$"L/$&V=8)YV&4 +MAL\020[">2 9$V/2&1;1HH4A[QL@S8;X^!X$\S4&Z)=-!@V 7;#K==DN!@J[ +MP)#)?#TA^W5A$=BS:C?B[<(7:K)>RVM\0V^ZC"'%J 40 >/8+50W:+0;) % +M]+*.V@*20&S/8:D=\OIC1/G6XSIH( % H*X7=]0#VP/[8-?KMOV6['5/V]<% +M!A=(EQ^=M;OVMG)<UO71: $$(;N3]WN)V%,':*#/.T&6!:^CLZ)7AW['ZTCC +MFIP S/[92P)I)^X/&*]/]L;0P("*,!;M7>' GW;Q'N$/0FP_[[4]3>QVW,[> +M=?M?[^V=MIK^]NL^?!MP:5>OQ_T@"*OH/MT+@G5'\463PW=@?UPJNWM!^.[A +M';P#=Q"?WDF\WFWO_#VQ_W="(>!9Q\TH\!H^P0N,!0]X&KR./[YO8,*_# N? +MD$5[5I#OH^2UD^;HSMQ_4[BX?!UUC1 -<4(X_J>,MQO5_7.0>2EEYI\[@'TT +M):$%=.L7P 5<@->I#"2D1 .<.#!87@ 90.50!+R[@#307]2ZPXJQ"<#'RW5T +M7->_''E7[[G=S^"%W?[A9SMA%_%AX+ K^<6^$QJ[BX'LDAUX5?:$3$YE!F9/ +MGP'#-&@'*?SD0;M^P? &_L7C==+\X#/)>,?K+B"Z+X'"9 @Y=7]7[ #^4S3Y +M^6?E>SW'^/5O(-BC@&%/QY! 1QV64Y[!%WAG#WK)N[2G]L5>RU?XQ'#A#<MH +MU_#?GMA;>]2NZU<[QICOO*&\TW;:7N3U>J;_,YP>QQ-:%:\Z6+QP)[ZZ'CX@ +M2N0NK)1[F7?NEP\$T'B7A MMO+\G5E=>NZ=+20_D(_ZE[_0S^=,;E-MN[TN\ +MIK<M[AV^=^=W'^;I>PF_[_E=UQ^7VYCA53Z[A_ =.-H+>W5O[$=]L@<!RY[ +MAQMT/_.K_;57\-I^YZO\=._SQ;T0*?="J>7#?"Q/](O]R_?U'7[(>WKT#NHQ +MO<?']R<^N.][80K<&7#EA?J'.,87HX7_DJC[C=?ZR,CBJ])[2?$5?GB/\AB? +MWE=](X\^O@"2+Y6<HR"D_*5OVL,4F!\LNU[AHX"#?^:+0)IG97F S8O]%@#G +MK;O@)_QV7K?B^8*PY_O\GQ]A>4'0IP%"?V ,/:)W^XM^A1\$I6Y3<@K=/8B! +MC8>+B9E ^MF Z0^ZJ!\&V/"'@,,W0NM__68@]JO^CW #RGI8^NJ?XO9_@=/? +MLXUX,RV]#:NK,UK0.A6RFXW:?&H7!?"EI @>EP _KSC=L!(#6)MK=BNQ7G&= +MJ;P;4O\A@!F5G!&(_=Y\ '?;:?Q[-^W73T:E?_C#_N)_HL-F$H?(L7;[NH1' +M/X)?UJ=Z6?$?\9?ZU7\$R_VG4#5?^]]8-8Z18'H!$_ TF'^Q'\VT+0E4V!:Y +M$_+$0F;7]'<977]TF)PQ"VE_2UCWUW)]?]>?^.<=08 ]6_HG?>E>TMBW18V% +M6]88PB+\"8"R'P&8?(%@%5@-4&KU?U3)_T>5!(#SWP!X?>& !((.Z'3Q@)G. +MB/0 #@'G7\\F 3(-:1;.)*P(?]L!9(!4[7X. >M7:+T \5\5Z%EM7+/?YE4I +M4(%E@!4(!A9E7U+O=_SU8@>"\@?\H6-<H.OW!7B!5V!4M@;^+6U@0Q HH77, +M6#?U+45:T%\WI %6?QQ@]M=R;7_1G_<798!_F9P)6/UA)T6 'B,$\"1'@ HX +M4+& !!D")FY=562@&2@'[!<V(.WGC>E_@ (&UF]E49?@4I%3T(%GX! X@7UA +M#4O$L@#:551)$U &?H&?8,OTM)PL4@L%*!_\@3@.!EB'27\NR?AG_5%TAB!J +MA0@F@[8."1C^F5W&("0H"5*"EN"D58"Q?P:9^]<)XH*@8 1&!#I4#8&2@00F +M?0"@',@*?H*JE#<X@:U;.F 7A@1>++:@)T@QM"$K!"\XM4PW5IE-U"[8#C4! +M'K0/MD+DCV1#E<Q8KT&-=6/1@G!"%W@+UH%@@9)E9?U8C$.012: 8&!5.ZAD +M/%U*UM+E9 $A2<69-64AA#W6E05DB8+>& )8"F*$9 J9]61UA%(68R!0)75; +M8/RG6]P!=!<66*W @3)A&$ 3!EVS'TTR!L:$<N!,6!.B@:N?[W?_]1?"GU#( +M$]J!O!@>Z+"\!5496"%6_(&D%3>4 1:#&R R* (J@R'@,*@(XD(E(#3H';T- +M5X#Y5PUR6]>@"]C^!5])H4XX%-)3>R#^IQ;4*P]+S^+5C8,^8$(8%+J%2R%< +M*&K1A0&)7:@ >E=UE;\5,>F$V0(3:*]5$K)9Q:1\U(.WDR]XU "#3(TPZ $2 +M@T: ,5@(;H6VSC+(&6):BV!8. Q&@V2A6>CP6(,MX 'V B9@!YD,"!3F%$JA +MFQ4*&H 161'8$'1?LV /F KFA#NA;$A/T89$5D5X&YJ"A:&LA!A"@*S?</! +MT(-0"\HB4)%"04UVA+AH-]%A@[14"81P D%X,-A8WU<Y"!ORA;[ACA4Q^5A8 +MED6P*5"$.>!PB!'R6!IAF<42^A7B4Y5%'HZ$2,%?F!7<'H&A61=F0507BV& +M!_P$GL6)<#P(&R^A%#CZO88/2.I@OG@)1"'OAQ/*@7. @KA,A(&U'YP@_$6( +M:,"":!.J@4WAG_04RG# 6/"'(&*(&B)3.#4YA0_+4M9HY8/YBO/7U@6"5V%F +MF!7:<\R@X=<57H9?(2-HR#B"Y-]$8@@91T3 6>A4I86JX5K("8Z($B*#^!N. +M@@S5_O>S$(;1%SGX T*(26(Z:/\QB6+5@? D5F31%X63).J"D*%S:+%4@%B7 +M9>A;#8+DWV;H%1Z"-Z)OE2.*AI=A-,@M:!PDB9"("1I@!1D,V!J^?W%@3D$B +M3HBA8!>V#@J'0PUQ&"7FA:I@@I@A HJNH"+&#C8$%-FIU1U"3U\B<V@//H>U +M5UAB>VAED).F.)8 9-BA%T-C(0P'H6$X)?J)56+]YQ#.AQ$A23@H$HI%EIC% +M'LJ%KM!*&&7!AU06F?(0EH<NP'GX"MZ'3:*6N!_.56.64N >WHIHELH"$U93 +M?:+YH32P#+98@WBV/(@YA<PP'B +LQ]09B$BB-8BM-B3.75EG4#"E(F(S&+\ +MURUBBR9BHC6N?(AGW8HH%3Y:;%W(928.6&CB,4@C?H:>X9J(6CF#C:!8^ A^ +M,J#1%& %V !VXD"&)VJ",2"?:"X^B^BB0T9PO0!CQ0MP@9$5+T'/(AD9BI,B +MG$ %,(P4@L#($EB*D:'>](^5B5;A,%@OJHDX(IN(AWV&_.*.Z"_VB !C$^ Q +M%HSKGUJ8#;*%W"+'V)/14XS6WT4HUEJY8::S,5Z+'>/ ""8VA[V@R-AQR05G +M!<@%EC"-MT??=+%HAP9AQI@HGHO18D/(8^V*(^%,@![:AFW!L)ADS8H'H*WH +M$;J$N>)X*!*VBBS!PQ@Q7F!0&EQP>KT$L2)_2*88#A7("%+3G(WMQ0)E4X ; +M*D.7N"RB#^_?A@@'%E0^69#E$]I^6R#B2(IQB">BAU@7OH%*'>(8+J)>S!]5 +M^/S-B[/0R:@5ZHN=89LX8+V)IR%:F!KFB:RA-M@X%EI6HG45%QZ I" 2AS&2 +M*8@BXGA0O8Y>%2RX_VT*[^ ^5&B%!YC=M@3K%16UDF.X!DB&MI<%^!9QCIBA +M9O@YIHQ<X<H(.H*&8&'I."2>C@CCGE@YLHZ!(G"(;]F&,AQ>F K:CFN5][B( +M@8/A8]!XL4 !O^,3J#D\#,0CM&0\8HI]H$K W;B(JLK>1'8A8687VB4]7H9L +MUX$%A=EQI](@!EW=9GD7+Q4HXH[Y7[ H.T)?D1B(!0.)6(M7>F5BQ2?W8XQE +MA.V/':!OY3]R?\-@ .EV(1=_W!UG0)H*_%@"N3.6C]_@QQ.0B(./6 1)((58 +M.9X(4$&66.L5\]>I^%7MPM9$#<D'.Z2 <1W6.0/AJ,@=,H#DXZJX-J8$BN-] +MZ"@ZD>CC12@KOBSMH=G8$J),:2-5PC6VBG>)$]D>FH2R(TKXLJB$'"&RN'A$ +M@5?2@<@LKEJRX>-X.!Y=;62054PQCFLD'+DAAHM]%U*X.NI==%:ZZ$SY"1]B +M'MEQ:8XO(O/H.=Z+TV.^"#TV@Z&A]7@G8H-ZHNI81_*1\U:@:$^UA]N7#! 7 +MX(90XL52.]J1EB26&*-LDK,C2,@^5E.7DIZ%Q, TP8RV1"%P+/$CR^2$M'E4 +M"YD8#):,E^$A.:75B(JDFS@"-I)-#VJ8":Z&FZ!K.$G6?7TDA34HIH?[5B=) +M.XZ/H*0R^40RD^*8,VE*MH\#31+#. 2/KR3\N#*A(K,D_<@BP@F0S;<4+_87 +MY>34HT%FAT9DJ9CIL)%6HA()$3*1Q)0722L66=2DV(@79(2TXD9H.)B1:"-( +MN$72DPA529A)DI)B)%5"1OZ3?&.!F$:^D9:7I6<3D@7;8T0Y.:0X/6%5MT=F +M$A*EM.@"T #AXD.F1QZ3'$-'&2XN?X.D,Q9,FH[#I)%H3!*.GU='Z1?^B@<E +M[U!*ZH;QED5YUX6"#*3VQ5!IDC9E[_BRZ$@VTE[!3;Z/X4$L"4XR%;0DG$ + +M'3=3 *ESN?@O' 8)<GJL&9=+!Y$'O!>X@3$12G0%GP)RLP0 *"R943G_7 S0 +M1;* ;0V1CJ3!"$FFCC@C26G7892S80NI _8)XF-.R5%>E$Y'7;E,@H];HJ3( +M !*5,J/[.#Q^D]'2N-%45AP<3E2IW$R5H\1A854^>S_!IZ!5<I5E@%>9&("5 +M7X9B15;R)&8EP(!6Y@6N0\<E[L@+-LH&217E-K@5"4GK%9#.%2&&0,:4?"7J +MP5.*DD"E+ @ERI -3]-#+YR6ZZ3^N%I2.:UE5T! KDLGY&S9>,F45^)?B3X& +MEAL6;^D8R4&9HH,$+UR,N)<*4)@D*56 K4,$V#_'TLB5L= !M%3FY,V9;GU8 +M"5E LHINP &90IY)9-@5I4>5#E;!%& Z!%"2$JKB6\H'UF6\((!IEU( =^E= +M@I>EAUL&<)"7M91?@%XJ6"8D>^E>G@WF87QYQZD ]*4*8%]:!?;2%6.YH#GU +MX^VA*9P5AI)VXV'RD!W0.BDJ%H2DHM5(6^Z46J/:.$\6@/:DSR@<]@GK(179 +M3QZ+#646"2<,E 1+??@K-E^YI3[)!A2+-P&.>44ZE)H81 GVJ7:D&$M042Z9 +MVIWF55C\A'+EK^=1CEZ1X[KXL,2%(R5,V>Z%BUQF2AEIJ7]$(NI83/*)!UZ@ +MV"["CC_E#A@T2HG;(M]G6ZJ#BA@L"%0"C=:DJ0@G$)9&I2N)5-(AQ6/+M%@^ +ME1;.%$ #*#>YT%KY7Z:"-6.1>#,>B55FAW=079+WI'#HB.69J*!>^>Q)FFL5 +MI>DSIH>7)I=H-?*9AB4LB5@:CX-F8WEHX@&Y4,=E+Y0KJXEJ*7(5EPPF;$ET +MH9!G0YI)9V*2;>81&$,.<-/E!%E#WI#;RP5)+[R: 2$1*8=M0_X-K7E<YDO) +M90JI:W::=B6; $/NEL!F'"1L0GPV).5E0>:0IJ5HA19$6B0<)9,50#[7A;E9 +MNMU+Z>5KB5PZF+BF"" 1DF&E&@!585Z8^&6ZA*J4:AM$4F%1@6AF0!O0 O@ +M9L"51E&8#FW /6$Z& %- ,YS^4P!6@ ?]5N*F^\5HI2O43+H9A=#R7AT[29L +M ,A]&TOD@REOUE/TIGRIQMV;]V6&.2GMF^FEG\'%Y0$ I\!)<!J<VP'"J7#. +M#0VGC;0M1)P74<?5[=@>*X&,TRG^G/#"2@ J*ILGYG;H3EXLTZ8\R2L6E*\B +MJ"E%\H=D8^YH9.** B5[:5U-A#]F3>DUBEDIH;%H1<*':&22J=29!H?!4L>* +MC6(Q'!R(=BID5QU#YHH%65,F'4DXOIUJIS'&=O9P95U:%"*ZG2I"WKF-/3%] +M9[N8.:*6+Z) UFB:F0GCV1EX1G5Z)WZQ:R(LMP?$>+,8"+_#<-C_760IV4JV +MC_5C?D$OTP.L+)/320:-+9[9HR1Y=SZ><>?:*7E2F\ZE"^D@E9*<)SZFC[5D +MH&=6('J*?H!GVDEW,8BD&$6Y!>*=OV<8.#39G<D(\1ET 9_I"$AY!TJ.; )7 +M-2[VGL-8\>E'(G\)8/09%1H;CY9**6FQE <C,=EX#I^!I_4I3?*:] JD>%-F +MFB^+^;E629\WYD%9* J55 ER2!,$-FI!8(,99 C*(78P#Z4.E ' $5 $(O*/ +M ,,X: @$A4!1<6![HPX,( 24!B4!;$%"_#+>7"WY"[*5*^7UV%(^FB]E\EE^ +M+I^M8Y#5=WV:MF$KM'["F3$""!HHCJ"U(3AH@M*?JXIB>+/@GT )#+!_,H8/ +M!-&05+ 'C,%@8&$4H-M:+T$9)*!' RUU3>P.#RAB\6@H$'D!!2I.OHL;@6-C +M5EP*CEQ;1Z:H>2L#.]8::"6&P_802P ?,0A\T;4($>I)P/$"2!P4QVEA)J@. +M1&2.Y8R@/] $$[%,W!6N!2PR6[@>6V4PI7$F1U/)7^:$#)QY:'A0=M0$@0T4 +M9KG\H3Y ( H"K #\V%CAFO5&< (6((DJ%\\%H $:N!XJ0E[ P E3Y!JJ0]9 +M+G#"YD%XJ"\E$V<A,$0,)$A\1CDD!HIHU?$I!!HAR./0*G1+!4JF,&!D0R\+ +M%NJ^H A<*&/@A=X@S$3[P6UL)68H&GIU7!(M1!M*4+VA0A5A((<:$A&&2C P +M@'&M02!*2Y(G\$F"Y8<R%8 HN"&(0@J&Z%2"B"JBC.C]^8@F3.;")'K#9"5F +MA/R"B9H1FRA9D0$)EY\HF2**M@:DZ!EABGX;N(HJ"ALX$JUH&/J*4@:\2JLP +M.'J@:>=5.1228E6!XYF0/GL+J7FH43*+>*="NA0RI'UG'DDH.*3#F$4J&V:D +MVV=!TGV.F2N@6VDS1I)QY>KYD+X&;V'8U%,R79ID^HAIHJ >:0@*)M&4;:9, +M*FHR@#V&EI88GG\S* R0?]J@DD'_&1H\>^8,$;J 'J$.* 2ZA,86ODL94('^ +MD),A!OI]:J#AITO))U:D$&E?V%Q.DR5HI+AA>9*I8$WJ5X*E+JA8FH'IF:X! +MCT0AV)^.Z%!Z@QJE5V52REPLI0(#$NJ42J!-J)PQE?*>$:+24%R\ $> $\'* +MN "/19/I&K1VH1 ,0Y@:IJA'8GHGR Z!:6-*O!2F,P1B*GHA99JD5_=W5J:# +M*69ZF#X6G.EPB#5UF,#E:D*;/"\!QP'GS75JB<,,T0.PIGC 0??)0 [ )M6 +MQ& 2'17\\D"( "2 /52#0&8)P*$9 Q!/2PMD*EWMIG- @ 0"Y*:W*883 _2F +MR:EL:D.J)YB$="H"/*<T6P* X2"G64%LRLHLI]CI'(#AR #;*73Z6\XG1R=\ +M1YNZIK>I>#H'S*892VW:!MRFT"F>5I[R 7/E8*"X)0 3Q&\:G&ZG"@AQ:IPB +MI_(I>;H9-*?I:7<JG5*G">IUNJ!JI]QI=.H"@*?5Z7@JH6:G'DZ#"EHA<2Q +MBD5NTB81ZFQ !X@!<P 9,.ET:M I9*8?> A"!(>A0C@&4@MA\"E$+\Z,MN'4 +ME C[RW:F'\@O_@LJVF@02XV!0(!%E('A 7*CGFPE%(5;09OH!T; @S+$T32O +M@I.@'J (P@%,85DQ#J0%B= OP'?Z04<F2H@!@ ? @&Z" "?"3P$Y= Z-!%YP +M'D!OQ%(8X*0F /K!JZ" ^B]EQ(I@PVAK_H>>T4.0'KI!>!!S]$C*P?_17P V +M(6I[2IR6J.D#BJJBXJ<TVXM*T_00,FK%4*->+CAJ(@*H\J@=F8]:S@2IX 8) +M0J3"!O]"B$ P=);8@WK2I(*I<X.4*DI$%E4J>G"ENA%*PD[%I3X/7NIU\:1F +M,YL!F4H&F*F-(9H:;JRCP4N;NG? J7>!G,JJVJE' YX:&^RIZD61&L\ %9NJ +MH,H7V! "!"?!>^)-ZLI 8Q-VD=QJ.:)*@H+4BIM0*82KR=.X^JW&2<_GNJA) +MRHY_)[IZCWBKUR<;Z#M09:?I.+EDF14OSO=36-D$6->E$G:Q#:-+E$&;H"WS +MSL#*\N1C1 #=()G\)!A!PJHV$*PPC\-ZL((C*9'"ZMY(* ?K6X*JB#P0R<O5 +M!"@$.@EHZ9/0/%I-V(6=D*QTR<'*_#5Q=XE E IY6;8'N.3.[0%G0]QU,60, +MV1EMHK%:)' #A2*E[!5]@':&*.<]4R<:STK"'KR46P,JP.*PA0M*9+2.MD +MMK2R #[KQ!KSK#Q1Z]2:/R&MVD32P+3^K+>.A"*U&JV3$M+*M#:M:P/+ [DL +M ;O0%> $2*U^P<.4R*5U84G6 VL^?Z>/&S5A1JG'PZ.#.+1J^24E T AH/<$ +MO_1LJG'APQ<0@C@M*>2TX)/=!3J &: #K $Z0"X&!^@ <H ., ?H '3 ?9:; +M,9C'4@(PQ7P&M4)D,$M%K:O3A*E(85&M:WBY1TE*=ESIBD*D#BC#+.5)E4XH +M QA1$LRNC=Y=HK=*C8?7U5%)_:V0 1D@N,X6A*O&>8AB48@K1:&XJI=85./Z +MN"HQ"*3DJ@-0KI8KYJJY<JZ>*^BJ ]@!.H 5(+J&*;5K8V"ZI@^H*U(Q!ZRN +M^IA5\+KJ4?.K&A>[EA[ :\>97-FNK 'N:BOHKEC4[Q2KM :]*VKPN[)1S]"E +MD/5 -B/J")<N_64@A1R@75 ,GQO1\3P,<W7!&<!7>70?6BU5&$P&QY(9X$7% +M(G) M=:^R0JG1AD@L1$&6T!!( :4!+M",3+0K"N.0Q> MT6OVT&.1IO$' ($ +M"B #Z+ CW/7Z/%QLD*C]!FD(L:<$54&CXC3IP^/:4 PVA *<8PJ)"I!>N3DI +M/;"86P0[P2II%FQ)@,%^@AOL=E9>+A,=U7>F-#0&(BQ+&L%J9BBL8K'"G@H% +MP;0 P\*QPLH,>ZSH"G1L8H!U( PB2$J@:0 ,-BS4EI3>$Q]<!VM>?K!G+!V0 +MQM(!)*QFQ@70 8]L"XO?#1$MD1.15%P.-2P=JQ[8#'=L#-L"-*$*FM(2R*)K +M'MH8"T@@LB'L"+O&G@V/;"1;$'P,54C"D<E*LN$!V+&B!:B'&EXP_WBRBP0> +M KT%!&I&C:4K5&B%K"E;QH*P:*PJFV8XLI L'2#)QA(S U9I,WBR8<$!@8AX +MLD]#'.&\(!/\Q"BKPR8 /"QY^<-R2D%L%WN;G:.^$55QQ)JSMH$2VT8<,)\! +M:O'$MBC^$("!%@F=,RL-8)N@1<KC<;<NH0S'RB"'!3BL#F<1@,A-2GYK>(G$ +M<DI^*P#UN&:P;EQ#BT59 5NJ&\#0'J]5P!>@*#%*B4?_,R+8?;;",L$I.:P] +MRMRJ K K%NU3$AF9%:<7_MA?M+2V@^P8+E$5ZPHYU[%4 :4-IT2*LDDE)1L0 +M=/!C.RU ZSC0<7?,I)29Y$]4"61PZN4% L-FX,=*$_,#(J+^$*M *.-@JV*1 +M*V?S9,B2L=5!(BO"_C*:657K!BP4%6T/P 6( -89?F8Z4+3< V/ 1^5/FI3' +MEC2<77*& (L8N&L4Z HP%?@U3\!;RPAM;RV)'., =C5Z3&^"\[AAZUI/6SD8 +MF+=*7M"(9IL?*DP@.3F-A *"$.?4 (E-%0N;T7051V/6G8(=X,8:T)W.3P J +M"2,XV $G /B1/Y6V#\0)8 6DMJ1M6-:6;5)U 8"&6F2P=BU28=O2J&= "J#7 +MF@Y2P!4@^8U.!P%+Y]IB=#\ ]V8$@ "DF9?FQM$FH*TJ-MI"9MKL0=BI:;%L +MP!G0S#%_F=#ATHFJIKK:5(("R$MU00KP4<@!* .*1M[* >;M2V& ?+-6;*<6 +MW8JVL1M\-\*-<,9L89!UH \6!RB7SATU[@))M0<]2%9<>)L5C+>>4GE[WJ:W +M%<=ZV]Z.3#T'?#O"0;<1 WW+\AUTIBW9*J85)N#'[H:Y47BI*]FA$ORG60$' +M^]$Y<$.;\F9NCEB@P33'L82M^5+SD>=%I8\#;<&MJ:B%;*DFTUVWC6'L5N+Z +MN)G4;"O7UK;M:V2@*G4!N:V[5N3. 4>N;[O7!K>ZE?DV.HU.(*[[&KS]L*E< +M"+!!C &B!0JPY&X!,@"2>S9HLZ@9^)?<\B[,K?"6X\9TL=M\2[/=M^E2?EN' +MG ?\[7?&1W5<IY>J$R]4H50I35#;"#6U33^;V()Q:!P Q<5Y<6><<Q%>E@$U +M!*)+Z"JZI0>(Z\9]<6%<>*G1S7%0VNB:,.F;"53R:JE6+X9!O5$>I*[,'TS@ +M5]4VYR2B!.*>L\[<0X<"A ",;KRV;D)F1:Y#L06 N+(<KGGH;F><[:N+F,A0 +M3( ^!\IEN8C)=Q($3"G"+D='FR!T--M?]NL^ <'N)P?^/6:DVBA'T!UUMVFL +M>YO% /^MG\OQW O]5+BTZA*UDU*O"^O6$ 0;;5;KY@RW+NJ:Z]YFNZZ'9NX^ +MN]'N/D?1A0#%K@J%[$J[&9VOL=']IY>N2$?2I71J63GGTKUM\)VS:^M N\EN +MNMNI6;M%';9+G&J[C^VV.B=TJ]J(/N)1%HKRJN>D\9:K1M!&T/$J3]]JG]6N +M I+\E.%)*(R\&2\W4J\ZA?P4I9DY^I"&!?(TK[:\R]-!]3#26F83E-;5=742 +M@1K0-JVE<(*XFH^XO)<+57%)S!2@@?*D7K R*6S,1(@4!SKH06"GB$(L2E9# +MUIA7/ !+VCUT(SX W]0'_4UP4[IZ]"Y/22_'L/2>$DZO4!%0*!92[T2W1OR? +ML()QT%1JO3E,U\O(?KUH0-A+"MD 4T%FJ]T OB&J5>J'N5( :L T7C@ALY3O +MM"O]2VT2!"*_VBJVE-*#CM:+BM/A:T@)3&M<P#3%"! "S"RU^2)2]2NG0$K9 +M<9^4&?7D51Y"0F- 2'E1 RS =$CI497OX7M) :@XKZ#'+R0'HN\793JA3G6 +MZC1*Y6BV;^9TQ9$,=XC.\;[>4;YOP0#\"K^4+_'[QR&^OX5.$4'TOK&O\YLZ +M3;ZMTYU;>T4]9P4^.YXD #AK4-22A$/; A6 M5I0=&M,]RI]"K!29O(I0$]? +MU*S"L5A/GYJ%H3W!$]R3L=08?$\&1-4@P,!*5 GY%!"83V,(^@2%$, MRJ<P +M^N9+\A-8!A+53Q[,7<"7Z4\H"_]T:L!+L!* BD4)4/;2I_ PP;^^Y<&U0-UR +M'</\VP"GK$Q4!75!,2GEF%["1$51DLD)!2N!K"K4FS:MU5#=10S<FLA0-!0( +M!4/!OSZP8_*;?&A#E B4:&HU0102/ -[4(;?#4R4!+=.< _E1$%14/ 2#"O% +MOYG.%" ;S(*!+)PTW$,OM*U41?H%K,$!0',W 7_H9EQ*Y I?VJY44*PP2#" +M-&$M@<"UVCV1.#7 .T%/Q +D @1=POH.HU'JV"2[V@Y6.MO@K5VFT;#=EJT +MHJ-AH_U#_AK"7P!=0I(DPD_ (HPR+!..,-;J&W61DC#.NI<P?#$))KP(%Q6A +M2&;9"4/"N$,VFK92PDR)Z3(NF,()@ @@UI*U;2UV=K:BHS)<* REK;] \"(L +M EBQ=FNL1.%\P2>*5H+,M@8TC#8+HQT6>H >@/FQ$@M""9LM[0ARG1SPR<X0 +M4RE\0B^0%45G(%P(JR6(L)24"=?"FLPJ_ D7-5G-)#R7B"27L#FL"8>T*NHN +M_ EG-^VP*"R1\"4P21%P!=#"(@ J;&*HP]U4*WPOZ<,>RH1BD0#$M.U.D3-T +MPKY1+YP/_\*T23!<"P_#^5HQ'"QHOK[O^\3YXCW+V1P@,)%T#[ :EP*X9B%* +M/;IG(L/HR1J3R'8-(D94FZ)!P]+P16' @A0()[>6#6_#K$PWS/SY#O>"@H0H +MY22BT4MRZZ"M*PD1X"T8 >IONI23=)Z'R00UI6AG8-E@8K+.PNG28J(1TPO[ +M;*?"5IJ6W X,(+/VN6V!GLO ADNB\&MBZ\@F#+'_01"+!:K)1'R=\":8&7 " +M$.,:E($<\!87*(J3.VR<("=(P%T\>*Q7]C =-(_.3VEQ0KRI ,3GK4YA,.4] +M9VM?TS3YPN]"13Q#"</$\*NTQ"$(["F?&Y_\#JL.I"<*#RH\BH]"VL@H\G M +M7"XI%N?26]R%^<*DRJ*"I-B7J;$(8("XQFF%7-RE2"I3<6U\%PQ+,H1K'!<C +MQIB*8DRA ,1V"$/A4$#$W92,,Q%7Q@F 18R?9<8J;>T%8/0I@' 4)Y:P.59I +M6 0](<.D!>?$RCP,1@O)4@8[$(E!GIH7*# >QOT+5(!Q>L"V=ALD9G;!'@Q! +M#9=ED)4S[S0[M;!<PQB=2&A-* ,>C3+ R6<3(&M&BTPMK)YH!IP!=@8C\3T; +M,?6:+VT0(;'5\& V._[3X@JK?"*4P2K3RES(!(Z '!X!)Z.K=ZPQ[BJ/;YM" +M?8 OT%P$3!H'U.#41%9P!WH0Q#S/$R]S%^,0E+%*-ZG1SQ>'!"TE+$ 2#RP +MI0?60 9(2A$P0GN\ E!L+4?#*<%/WUEH(%IHNG. KM%"!,E*PRD; <L'0 G0 +MR0<%#SZG#55TY@"$\$&G^)H&:%EC0#H-N7+ %I"3U U! !00K?EI1T 7<(OA +M/2A:1KO1I@"(@7'P!7B58,@WZ^8>=QFN1"(B$\A20(=K)L-//[+,L":+Q$F# +MFVPH(\C B9T, IL.!_* K,C8Q?I9)I4&Z &,K@B;*8_(4@!U1Q,(RA4NIQ2@ +M)@;DL%JC*"^[9S(,XR@WQ)*R&60IX\GWD0GK*8/*W0$M= "9RM,IS38H#WR% +M<B4,#Q,!UFWBRRBCR<?2HZQ3U,J6,!%P*\L<>;)&.RZ=Q!(GEYS8%)WV6KBD +M+'\BS+*:3"N_R8"0G S!U<EW,K5<<>C)UW*??(\ RA,#JAS:JLK%\J&\*2?* +MVYF/;!IL$,YRI)R3V,N+S+1,!PBP'+*9,$.@!KIR'_8IA\JP;\'L(:,&P+*\ +M+-T2R@]$JRS(O,K?<J,L!_3+=4&MS-L(S 2S)I,PMZ6\\B(;4F@R$;.PG"I3 +MS*PR2'(L)\OZ<@32+(_++G-= C*OR];RHH0M]YR9(HV"D'@\93)KVS*S1WV) +M/PPSQ\ILP'?&,;?)HW#1? 7<S": 0B$09Y82LX7[/Q7+L;#>@#''S/PRS5RR +M-B6'7+H\,(, 3;((,3)O$'<M"E VN[55,SE;MV(Q'V:G8@%!>JLR)<P/QR1' +M\[(L<BC-7O/=[ ]#S5*S-)$*WP%M\[U4-P\FI@H5@#%SL";G;1#\NLE4@&F3 +MG3PI<$,0H-'R<6Q:5D#I%KI85(7)RJ2<]R5ND#E_&X\ND5%ZI&P>FN:<Z+X7 +M)?' Q"]URH0!/Y8ZC<XP@NP<_"ZB)#/#G#J9RFBS;NLU:RH4BL!L*M, H_-? +M1AA $;B!XF:YN+GHJ)!*X%4>8M0]$3*T "C Y;($Q ;#DRO<O_U_V_.6^V_2 +ME[]SXBP\C\Y;+FM .FEF9BU^5LCV88LH/]8[NVNZ&VVV5MQF'/"%NSUS+"B +M>N ^L\D[ /V3/P^<&X@) 2_3B>#+*<\3R6,,QE3LL$J:?,:,'""P.NS HVY +MS0$K0!J@UYH=LK-4VN:NS*FS!%UQ$ ;#G"05NU&8REPY5\R-SH*4S/!RGL\G +MPP.-]T30@E3[_#B@T'2K_5RJX<_ZL_&*.S7$_;-ZD,G55@XTP=ES$#(#= ]M +M0'?*/VX'+4C%SBVT#P "T]!9P5^FY4)GL1NOH3+@<N:>$CV5]+H4)F$@RK$R +MI%P/8,R5;:S,=FM#4S(+-!C]*0313S02W8=.T!7T!9U$G!'_Z:"L14?1$_23 +M)D*7;23T27?10=&PBK\)<]*7;#2NG ; T)F4#(TZR\]3B4S7*1O/*T#N,4<G +MSVZT'<U(=\I]]&UVKJ%SF#03;<YQTF>T[ LN,[*LP7^6.K$O667P:SIXMMO9 +MA#LL3TH9<:EKS[8+?+&("1/HN;N#52HT0RCYB>(,W\7,:3)YV1C[RVKQ.'0S +MG[<#)R$B2:G,\_+\=#A'*(FS:DN;R4^K;>.<.D'.DO-10CE3 9:S(=?'5=.D +M<QAG;X+.5H'H3-JJSJ5S;W$Z/[?H=!C7.JL ]"T.U3W?9K/S.>UHV,X$0?NT +M,/?*N_/E\CZC ,-TQWR= ,\6B?!\N1#/]K3Q'+Q1TN!T5L \I[.A:J.!1B40 +M[\_T7#U_"M?SBI ]V]/VM/<\2)L. 373#$TKQ%3 ^-Q1J]#F,WTI J3/Z!HX +M31B4H_\T[ 9.MP;NL_]D3^/0MUE(W3\#T0#T$"U SU $]!IP1#?4ZR91'473 +MSS)# ^U"RQQ^[?9LN4#2%C29,$EKT*MM C H&]6/0QX=0B-1#R\%[4>? ">T +M/9U"FU/?L^E02#/5[#09\U+S8RD;4>V5R=.E&B0M26?07/5'=U5?TN!T)FWP +M<M)YM2=MU/'5(Q0C'3/+/XX!"G!*NP:I=($FO#VW;S5M]DH3P]5QA[D[D%2[ +MPSG97GE+84F+I=F.U6DS(NJ$W 418N5+F[C2*W/^=#B7*B2U-$V;4-."];IT +M30\!D3-VHDV31MSTY7S(I=6;LW,Q3EL%GS.&&3ICT>!T;FTZMP9M-2,M7(<' +M[W0\'5C/T_AT6ET[.\[Y=.[,3P>_O'-2K=LFQP(U:KVI&-2J4%JM4"//5#4C +M[5"GRLUS1/T\4PS1,T5A45O/V+,:=Q]OSR<U6?U1MTS/<FQ,4)?48G-3S6^B +MU.2E2LU2Z]?L,TQM7<// '9H0#_;U. T3NV2.2!)PT[]/PO1&S 1#50;T2J= +M6%U4B]=]*%(-5.FV9_4R;6'CT1]T'"U5T]6Q[5WM5+_1'[0>75<G 'KU'_UA +MPRHK-"&]5'O86/5:/4-;V(WU3?TPY,_P+C?J Q!,CW$/G>4^V %T$5U 5]A$ +M-6M]8O=A3'2'G58_U9C;%+UB6]%.Q),]E;S87#08_46#T.6<&+UBE]$)'5R- +M1M//-FH3W49CU5"U'$UB5]4F]D<'8I-.*G9LVV*#U8#UDAU(Q]AF]8S-.A78 +M,70Y6ES;V12F)OU76]DY-C@M5V/0=+2%W687M=OSG.W2I=6!]K4+6-O3@W4I +M;5BKTHBU98EIL]*K;6--X3;3%N?;3!)U7 Y+G#/4[*TSJU)C:J=855R=0^U> +M<>ETBBQ*(U)V@*,K3F]Q<$#*6<;!M25DZTSQEFZ_L%YP&4NMG)*&?$W_%SC +M09LN<9CZZJEM>_@.XB]8DF+Y58F-58K%5AP[0AR 6B#:V;93\YI><>U:ICM% +M34I_F7*<,Q2\'W1'G$>9Q(W9_*0ZA]LF0*S+*2W;XR]5P@3(JK">P!#J$AZ6 +M$HCQ7MRNJL.T&C.<&KZ2#H&BV,$_,58VU+PCY*:Y2TOUU!&V(3- .[S@6\51 +M6]D!$/?*0<A4)2O4M';]6;LHW</M1+_0%'<"D";8<C,VF_;.[7(!U,?PS_W5 +MJ=PJ5W9TV\"<*D?.H71I0LD-H,(!VRUQ:G+SW D=<;KCTB9_6<N-;G_2.G>O +M*W-_&W' 1)?3X7.=G+3[;7=JS.YM6G'S<BP=S5T2!%@@]T7WI1V;-X!08P- +M<>&2PXUQ0]@:M\0-5%/<4K3('4!SW#JPSBS0K7(L739W=D/0)??)S="EW+$; +M%WURO]SGG$#W=W?9J%PFMW1KW7/WS8UA#KNO-M4-='>G/W?/3:H-W5>W)Z=W +M2]J(H.6M>)\ 7G;2[>H>WBV1TVW(Z'3YG-1M=>_<DG>G=G73W?P8XLUUL]Y> +M][KI:HH*\$*"-!:;<;'V.UUKX]Z5[CKMS^I1MUP95RJMM\ !2@##; $[E$0B +MJA0!/L!ULGQW5,EM\BU;:R?:@E[;49%F.]1KLGQ;WWV<D%9ZG &C1(,=IES= +M-*V:9R8$4BQ=E-9XR[_R 63C5UDWBNJD=%S+VAXQK6UKHW'A9<HV\&%1P?=K +M1GRK ,8$Z?":A9?@]S81'I!T.<GRW7QKWY#)=@)]5QP)> ->?4^G:6[V/7U' +M)M:WION7E=_CL7)0$J3?%#>S#85V4PF28N-T@;=R !RP!A0<[])MAK[(,!N5 +MR'% O$NMVC>[@7,,'NUI0!?D 5.W1ZQ0J QM0.Y4+S'1*+&')@: RI0!<8M% +MI0 !. QC.D3@U'<1D('#=P6X&$7NTB:]+BT%[WJ^Z0/HVP8LS8=9\ W^#7/J +M]VU:;F?<7K2P;04,;_R;1QS!H@8[%&9&]L"M3X#<*J'DN.#V"=>=3KB0G/'- +MY)[=V0:NR>W&I^%WOE3QT@M1CT@E*K3:\%T*OH(CIKXL$_V"1P8QN&Q6--#@ +MHC7YC8-O=B3"#MZ#!TP_^,H@A+M+K.YV5H7G2^5HZXL[S;4@<4-<R#;A3#2" +M"T"E *,/F$FH "G.'O+IAWA(,4;H(33OK"XZ9"+?[.Y>"D.F67A88%+QH7# +M!E8#&$[(B.$=%1E><I_A:'<:/D"OFV6;NCFD)>.B].?;C+?B;'(8?LJ<%F,X +MZ6;BNMDHMMOM4ZOA;+CJC8X7#@'3&[XQ3RF^R1P>MSH!=[C*W:G-4<W91K6$ +MP^)X.&UBPOD9^C@)1[SUX:1#K;Q]QP K " >@PCB!7DQ7O$>Y%0V%IV-4S*P +MV9EZCJN;;FY?P[D0!QO<B7 <<!;UC_8,PMVF?#@LO@4XY'<!1$Z(&^#;+L_< +M89(E(E78'333)OCS LWM/@X"&S\&A4<F_;,%76'[W'^92IX&= %3-ZRL-P/) +MA_2;J[$E!HTWK!W&_=\9@Z:+D^_8&<-M]C6$Q#I%_[S&<=F9KF+@5?^G&?.^ +M7#3T3FO45_[-WK=/^:Q+F\W?I=-Y:Q6<M^]O^XW9P@L=4/R]C^_8.GE0WI-3 +MPLMW4'Y$$^68FU&.E)_>7/-9WI3'MCDYJZM#<^5BU ^- H#CD'+'?)2[ &^W +MD2V4K]C:>&'NAV\!%O1/OIWHM8=Y5?V.B]+C!6']GU'FS_)E?BG'M@8N ZW; +MLN:1LFO^0J_2:WE;'I7/WU0Y!UQ5P^7J]NRKQA%,5GD"@#]GY?S85LY#JW)@ +MN6LFEA_1%[GA&BL#R7];"J"6J]PX-#=.F]<%/718()D33&CXQFUD$TS0.:G6 +MF5<<X'DUOG'S+F2YNEEI%];I^:4LF[MK\?EMOEC;MZ0M/_Z+F\0 .3FKFS?B +MJS-R[?O*Y2H 71Y9-]N.C5!S*=S>JID*SH)'XB[X9T")OT_G+0U^WF;B-[A( +MS(FG!\?$U(U,^P! ^"A..I3B1C@2[HO[XW4!\12,\](+.3%>B!_@XO8Q[NIJ +MX<HX_.2-"S ]4NA4XCC#10H%XV;XV8XYG9V9^9 M5NN>KOA:08<3H]#,F_K +M/9Z/6]T#>4HK=-^F*CE+7@:XY(CX6G27 *S>LB/^H"N_$3H,3J&_%!;Z2X&A +M8V[E]XC H?/@M^F''J+K3D0XFP:+WV:R^!)>B^\=8P N_J(7LKQX$HZBRP$J +MNA\NC._I-)M$'J/39LCX%FZC=^'->$C-HSL1/GKG-HT+Z>&YVKV&&^E4=SR> +MI,_C<GB37H?CXX6)?HV39P[[N57 A/OA\&T>3I"CY%3Z9VZEN^0=%Z&DH!,U +MWP\ANH(5BMZR<8Z5V[1;N4YM<W=N_3-"EY3'S.<M6BY)?7(@M9G^YN;GI/J? +M;JKWY^G:<1<P:1>R AK@H*, K#2;&ZN/W6,)IYAJ/T%)35F1;!+)I,2FB3&H +MG*\V<![[UM_ ]Z0;H-LJC[GXO7\#W^-X&8<H;;0,5+R4X()*X$85<CR8#NXR +MH"R3(^AM$5Z>%JFF]C:^K4X(!^^!&#%]^$I$P,J08[0:* *E2C 0'@[1GM$> +M8(N<;CN<J-?H7\"-_H4WQ(\Z.?ZC"V^8.C5.I%_J)BZ2GA?'X?6XIVZ'A^HJ +M=Y2^K$-F;?>0OHYCP4:4X5=RN^Q*NARNV2A)Q:[> -_:[/CYY59QJ #!]]$- +M<P=8(0!KT-FHR<$WCS[MWJ9 .Z=>CPL!L0W#20YUIT@[9#9T;^,DA"'C!\#) +MK\DN%"[L#5F $S $G.QE.'&:M</LD S73@3\*.+0T9X^Z.'X.3D(B>IG&F-( +MLQO(-/MG0#$C.#+?C"SZ=/1O?.AJ:B6C 2)WMM&.[]+D<IR\-1?+:+L>@RS' +M;NZRITO2.;A,A,IM22^[F'NY/"=/:QASI->O \IT.NA>0(CN'#1M5MU6T9KZ +MR[ZDDSW?R5WT.A6Q6>J'P47(:N;U8%.VA>VT&9PKE$R<J E:P(@C2@G[D["P +MNP?N![7ZL.N>$CL00;''$D#%OJW,T!8:NW# L3/ODO#'WHTSZC@ZR?Z,U^OE +M.,JN9(.S,L=(?*@3W92Z>FZI3^Z5-S?N$8OLDWG[;KZ; -"XI(Z-\V\J^SI^ +MC9_CW[(\3K?;XY_ZDWZ0(^W$&^7-OJ_BAOC-5K9E;!KY]S:ZC]9].VV6LU?J +M@LD3W+-?[7)[[1ZTU^-#NW&DR!CM8/O>OJJ+[95:E T21^93&M->KSOM@3?4 +M+K4WRU7[^1ZO@?"DVMQ^N]OM7KO>WJXMZTK[J_O"YTOVG&UFMJ/M8(USQ[:[ +M[7#[SR[":^UU>VR#MQM^*?P0G\&W\!7'$<_>_N]4=^=\F]WI-P7LFS;?W2_T +M"O!/B^&1-"+]O.I18W, 15.[!J_S'3V5S/%H_ #5=[NZ 93@'4:/T>8YADD' +ME- 8IAE-JHW0=, @_U6+T2IW^4Q>)O*F@QA>QY]N0FYEOC&#SP,VZ>3D1O)H +M>(ZKG\?/H_5_7K:Y++I:X)X\_"[H@P!C7QSN@$SB+D L[HR[21Z6/>Z1>PQ" +MOQ_.$@G:GKKC\I=SG*RYI^ZJNW'@N3>X^WH*$+I;\+$[U5VZQ\FG^Z($S ?L +M=4%*\+D7\\<\\7;!)P"S._'FPW?J>X-F\[8C3.AH[PXV_.[\* G2N&_/JGI* +M.\%G\%8L\X<#$+YWB0W@?4KE^+?O/>BZTP/Z55*@OQ2J,O]=K_O?^WKQG9#' +MQ@OY0?O&X30O>K'=_))).(7DZX34Y9_":=*G\ X$;IU#ST.ZQ/7][5S$Y?J\ +M@3ZOJW']][WT?\/BG!(!GM#[<=DO0[\&./1,A6:<*4X]M@>9C'B.OV$1=P8G +M&-Q:20&.IAX5*$H^*C#(Y;I<"S%KM$R^TA$ :80T[Y*3VA>W21YO#3&8?>B[ +M%\E@#<.^P5/DBX>8ZN\"(>.$Y&CT-J?[\N#;'(MG,HQR<K4"%0.^M\->.B0. +MI@.U$OH<4(F7?C2X";#5Z["&>A$^*?7I)[JE%*B3#D]XEB*!2^'!\KTDOM_O +MY/O('H[K\)!Z^AZW:_#Q^\I^RT_Q![S,#JJ7RC6["B^E%^_P794^< ;B,3D5 +M_J)W]GL*#" FTSCC.J)4TU,E.'W($EDV,SU]XO[37R5!O>HPU#LA1?U1#SDD +M]1V[,\U49'4%T_-!$@?GG.])[,:9<7.N)Z(\/?4O13)M3DGU*%KI9-6C",13 +M5B_7,Q5<O6E?;\,)]_:3$-9/'_$84$'6BVRY_;KFH*OU$8@DWM:_]:Y?7#_7 +MNW&&.D'_U^NU*X JKE-L5+L]D.U0--5S^C0_BY/QM_@P[L;A]?OY7N^$+RV$ +M>KI4USMTNQR-/KXSXS@Z=FT-\^_H>Q2?LC?V GR1GD"CT9B;@D_8,_A?.&UO +MW^<,)7ND+HV#\7;VFZVS1]SL.(E?XHO2!OSM+MDK\/R;<=ZLZ_6G.ND0D//C +M=53.0-^721_^:Q"0,_#\FP.ODKOW43A\_ZIW]L2;H3Z(:_/:2*]AD4_>HGP@ +M3\ETY+[11SZNX:/&P2]'_PCODS<[CY ?WT=^Q0N9*?D#^PB>%-0$(-4%-N/< +M'J_F#EG%-N:/+4_. _CD?GT4+I@/Y:1:4?Z9'^7#>JSLA(!HAYD38CH$]JLM +MG!^6UU8>?F_/[E[FCOV=OV+K^0EY:%[G8^"K$F=N;K[G_UFB_QB#YB S;'[B +M9O*:OJUKFS/5N+E_7L&K9N\Z53X&/+?J>O#$K@_GN_>^J:N'!QM5<2MB?&R> +M2(.MRAT$9'BP/@8,YCV\G\]4&.O6>0P1Z#,5I7Y^OF,33#TVCZ_H'TPG@W=N +MR #1)W[:S8YWYT,U(WUUI^=O-WL>V[KGL;)JGC_G\6/S/UV?D_KW>:@M3^OG +M?[J +U-/2CA^TN!0[/A=4H]/8_=E'C&U_EA<Z]EZ!.25+7%K ;<#L0C%\K,D +M?'5'L.BVCR*;T$6741& E( +%+>ZZ=RK]"S]N*&/,_7'O0D U2_W@092K'JG +MVRE]<=_07_71O<>OJTWWXP9\&S./!G@ "A 04_R1>'[F<XNW[++._#[!]9'X +M8+;>WZ:&_DZ>ELWYQ7%@_C@ ^[&YY5*6TP%_OMJFU2/[Z3YFG_FD*O6B)$S! +M!ZM;<D1_>KV:,(&@6_"WPP=_FI'P6P$+OS'H\.LFY!"F+O$O]"+_2G_5/_2Q +M6W*]>]O0 &I]_^S/\53]O_3J8_63?*>&\>.\R#U(H=Q/$!W_Z0WR5_4P/W1_ +M$IO\_1O*CU.H_+$RR^_R/_?EO<S/O]'\.7,E>/.G]SF_XK\&D%(\/U\>D\OY +M=/X%OITX^K>INGGT)_W'_KB1[%?5V7FS7^_/_=WYD,WM5_AK.+:/9$OY'O2X +MS\%[^U6UN@GNZ\WB_KE?[F?RPO_6QFDOUZ,Z'27OZ_BA?LZPEE-'4#]66/U) +M_?\YP%\0\<@T[Y[RCM0XNP/Q:IX;_%W_ <Z/*?SMC6;#DSB/4?G9'_+/DFM_ +M2P^;N_T(=ALN]S_&=/H[+=S#YIJ)ZKWWG[U]OS;L T3U@3^?6_^F[E>N2_M) +MODI^IS?NC.;/KV5U6_G%'!Y_A;_('^)O>8,"J/E9_D0..#_EE\Z/NL< ]+GU +M_/QR0#\B'U!NZ(?GP_T9_6)FJ+^EG^KO/F>::_TMV)Q]0;9HG^ROVF>-F[!% +M^[)]'S]STU]F]H?BX_W%^'Y_H[3@'[DOR:7[&[FA^XY_L+EX7UU@WM?\\_'M +MX:!_48FH7SOLWV<=\WCT*3P>,[WX!+2-/57;@/0 X=XG(PS=@$T+):;J6AG, +MO9(*F &-&[FKT,9@*J,X4LXHZ(]@@7QOKK7YZV0DU_PGK+5V&AK'#?@0F:BM +M^L9MA8-2W//D=+#+\:%-^_)GLAP.WL2MDU$XV&[A4-YM)QS% %EW 9 B1IL +M4>B :)H> ZC,=/ U0**HU8![B!1XVNYM$#B5X .&4B@&FD#@&AJM]/ UP -V +M,GASC90^(/I#$O@*?-?= 0&!B@%XEW# ]377$@4R >!.311H/^$/,'LJ_^! +M FE?_+T\W4:EC4=AVJ>9S%Q]ZS92RINM#D@*O+!-^18#_R9G'?%D#8"BF<6) +M MD7SD "X*RMO+7&\6M1,MA]L[C-WS"PD88+].003%( 6X Q@)VLZ@#O6@>Z +M ^T \$!YH-@L*T#2V>]U#O!TI).%F3EP:?<.C ?:R380R3EI@CW0%Q@/),VI +M4L)0@D#Q%D/PU[<JV0?2Z69Q*+%!X#TP'^@01 BJX=:!43J"(#[0("@VFP3B +M4"XI&[&V#":0$UA* P=N D4,GL"Q&C10.,<I(,XQ AMG*@#5W#JP%!@+/ 7F +MSG:"4316H$(P6) '#*>A<6Z!@\#YVVXMW_0(S*I9W%1S:1<MET#P)HBT:PH. +M:8*![\"8X(^K&I@5<+@%T1Q[7#4E&_LL.5=*<^/,S_@Q3C9WFU/0R\55LUR( +M!<D8?K<_GD"GS-;' \&1MM9W?1A'("--D<=84PM"V99VL3.<&T7'\G9T\[)% +M!0,HQI75%EZ0DM6<Z; 5V#IL%T$[W3^PC)<*++") ;"!,"?57)[-"%CN$PBF +MU;Z"0[2$X%[&GE85Q.PAM=B!I\&,TVEP*[AR(F- !ON!DD%;7)ZN,F@6)&-< +M!G4MMI66H)D-5T8;] M.)4"#$3;18&W0<E$:_.AXVL(L>D$23C6PL786U**0 +M >9[!!.78/VF$[@.O W^FS2#H0'IH%^+#8@2;)]4\N9[V,%4("=0FJ 5Q GJ +M!&^"J:\WX.H+%;@P PK"ZUJ!1$$[H$JPMA5OT]\=]L*#"[/QH!E@.SANZPXR +M!G-\KX%Q7WF0_K9N&YB, JV!!$*:(#QM';@#Q ?>!(N"<I1EWVV&..<_ PY: +M^\9S.$#]G&/0/<@8+-5M _&!0,'&FE=&S=+Q0FG9A*H")4*9A:@A<51/D1VD +M" ,6[0J/DLFK0[0NXJ=@CE9>%R^ !;(B1HB4L1&&I$H3CY8L8 :JZ!6S@!&N +M"!M%906(D0S@+" 1*! <"'1 39/)0!T 8' *\B2YI008I+@[%M/"KU"RL ?! +M>CP6GB2KU<9 ZM5SV5F!+%)@OZ#2TU6*2'B/,!&&DF)/,8&[D/J(=G0E--1H +M#"@$6T*G19A((L*Q !/2CL2$\ 0B1IG0XW0FM'CM3/0DE:QGS[=*(M#QRK89 +MI@H.+,).A8LP1XB-<!0J"C=>NY@L$\I+#_0&:A0F"E\#QA\:X::PBY2O,O/1 +M.&H<;+XHSNT!5=@/RM5EV_H?. 72"<?/&N8]H162<59PI@,]AA'@"3"T:>+1 +MUH( 0CR^'0L/KM8$I/O9_S*"?9DK3MJOJ<<&&,P(#:9Z$S\#(,GO\*<"7/Q9 +MY3 &FSVF@E3O-O,L1$Q!!OH?)0,Y &(*7!AH*/-QGRH>R+:/2RT-<D*?0!7. +MS;QEV$*"4X?A4<(&(!.P]38)]#XWR6J,7AC8P]F- 0!H\\)S29B.T9 OQ,P% +M#"$E7+U"7^8 0$A>*A9V #5XMCYQ8$>K#4$\V=;L"#X1*[CF5:@-4:+O0P-@ +M#,E+?!02X<6+J><X2D=L"KA5)$/N$;5",C(I/!2F#%4\'B6YQ<FK88%Y.@KA +M"%V&*KU/!/>H1\@F. H-DEQ:VY#HCRX)^X,O$AU]@'Y)U:,AH4G*T822NJJ@ +M#'.&Y"."A3YK%!03 ##T#-=/J:"7H0*)GC(UI"E5#:TFO*,YX<N":9%<42HE +MEI0/+Y.4@S=)AD M01XU?TA&0D/I7YKH>>1+BAZ!D!9)U".##ID)>R1^VA,] +M#9>%4<.Q LJ.%2!J1KBF792&ABJA-9PA20U'!Q^C^("AD.L(9F";'@0,!L: +MCV($LH@"Q-JP# 0S>4*="[LI-(K#A9!PVY3V42%=D#Y6SH$00#<D+D*J,%T$ +MB;)<29C<R@\M#Y-S*:ZXE@B%MB8LS,L/<,@]XAK"GV!'7\.K(00)LH7I4 $L +M:XZ'R,/DH?)P><@\;!XZ#Y^'SD,LAE^E:1(,$K%05[P\8Q#ZQ^J05\@MB$C4 +MB6"'_2.:R^S0[")"LAT:ER1D2:784M%E<6B3NAC!"0,2A\-3BW1)VQ25,!Y" +M#^^'^,/\H?X0>0A:@5CT*1AN,PY]EIRCHK>' A/1&=H."Y9QE38)94+&L']D +M!:!D'P/?WY0OHJ'+R@/TS\Q-OI$VA/HA0W B>"!,9YHG#\2:E@21DA&)^&-= +M$#&(>B$3Q08Q$L%!-&U]$.E1$Y &(I@(#\'$X!\(&UX MA.4A>QAB5.P\WAX +MQC8>IA"Q6, **,(KC$V4)+9:)0%/3@J@!C>DH(+P"G^%M E3%E9/%\(KW!4J +M2> &%['/1U!$K^#D*(V0,1830 [SCVODB"@",/\,PWPCE,.?E.)$^B%&M)R1 +M)&IAYI\PP!D13F CB29PDRP,]*S:"^W@LB5$U(G8!*@"X:[R!R %DZ+*@9_H +M!(M8&T2HX'5 W_8PF*Y,$;93W@0!43A!<9(5 (E$R<11\!/*P"C!A%C$TB0R +MLBJ(E$360^6O< _&6&\*2J(X+P,8KND]#"=^128 L\H(D3, <E!;\3& "&* +M$O%U2X5/A"B$DXB.PI2\(3P+K<3T8!\PEAAV.$34$K,:C3/RA$W!+7,D*V*1 +M)*0#S(3QU@H!5U%&9 *A9D*)IQ)EHB&18\"8ZF,A3'PCOS&,0;=!O>9 O.-H +M$]<5!(=4(IS /\1I $0,-J!#>:N@!F5+=X#F"VJH"2T709%?(=K*<F'^@0)H +M 8P OH,: $OB":"ZZ2)F ?:)4XE^XC\QH$C50$[H/$8DI1'M3#5PBQAE,"@B +M%'5/3*#1Q1CQHOB3\B<"%*<3D0IN@;<@;X 5HV0$1:R(1HFF&'0(-.8[4)!4 +MMK RK@[O'S[QB5@YXR@J%#^*-0#P"!: 5_B;*"A"% ^*SJN;8D!1I\@KY-IY +MEWZ*$D4R!D71JH%4#"IF%%\3ES"GHA' HSA4' +L%$.*W8)O 1^#HWA2!$ZD +M%+4ST*&@AN3$&5/9(FI0!0X2&J2I1#ZQIBA5K ($ :X> T6?XG$"J$C),/^X +M%>&*1L6'XEPQJ3A3+%@Q%?>*4D78QD:QK?A6C %@%4>*6T7G55?QBJA2K+T0 +M-=X%1(TL8&7K!F O>.*4]I2*-$5NFDU1,=2SB2MV09J*=47.8F"CH7A4!"Q. +M%'F%7$30(AFCC3A8#"TV@4:+V@*1HE91;\!5K")Z%>$&8$7'(G:#*E!6^'X@ +M<50=@(V*$QGC"F#5R"CJ$YU7Q$4Q8D_QLPA8I&0D%S.*>46+XDUPJ2A=="T* +M%J.*SL7B(LHEMIA5)"DZ 3B*ST64"TH1MPA: 6S8"P!?\\1/ > +4P#K$(=A +M%K=I00".8FDHH[A<K"Z2,4PN;X/)172QJ7A:]"O:%_F)&44W(A& HXA?C&T< +M%F>+)44RQGQ1O'A;;"S6C]8Y(2H:Q??C(&%6.$@0$$V*F<7XHO-JP>A9_"]. +M)0H_0@!O08]HOVA:?"^F%IN+J\4 8VN1C %B%#&6?[8%W<7$(B6#PSA>=##J +MJ\(?,HKP!UEQ)Y!BR3$^<=**68$C0)0A+&$#@"]R%(6,4P B8X=1M6BY0#(J +M&4F,$<7I(FJQHLADG$HX&1,;*\8FXY 1R\A=1"S2%IU75\8B8XTQM_A@1%0E +M-B2+/$:R1.'+*F6YB!D) >H&'B,CH_/*S0AG'!@M&5&,;49O01/@S;@ML#-" +M&8&*_<438Y21DD%G[#,6&;&++$8](Y\QSMAE1#!^%^>,BL8ZHYBQP4AFU%?9 +M.& <,8XH#E'@7: CT_IE!9 I R=3(DF@@CBR0<NPNM!17*B@@(L,.6 04""& +M$OY8,X@90CPA)4 F.#@\#\J)H$8?@*CQCU5JA-GD&MDLA9-LX1=@UXA*O%!, +M)7Z-NT12XUDF+7-J](VD&E,"JT9L6#;IU5A!C#6"T58#M,9' ]Z(?7)L++0, +MG$J(RL:7#3\0'?-M]+0$&WT RT1PHYC!IF:Y^-!Y$O]8YB9^S*_1W%C-$#:^ +M&XN-[<;DWO_O-5#Z*9Q0,N2-WD8? +"QWHANA)\43@I7'SKD@'( R_)OG"-P +MR'@$3K+^(8( -8$@<"F".S!;IR5""9!Q*J&."362#/ .EHNUC&G XU@R**6% +M' ]UE(R.HQ/MP*#.:@V<',F YB:5HR^1= "A$SG2 09.])(WA$^._-?$,XX< +MMCB$*D=[7[QQ\&?W*Q!&]PI7;"[]TEJP#-4:F*-E)\(8E8U6DW6,J'%:HF*M +M)IQ7;S;(P,")%/5V2XI@1K@:A9\?%M6*W=37\%]TEQ8A4C_%1>Y/Z^@#X#KN +M[)@ 7T?[QH]B.J4%+-BM!,9-7(SS7(IFZ_C-Z#K"'2D7]HVPXVN*XT1N%#@F +M&\4,MQFVX[YPL( NV1A*0#!\,!J^8^7 [QAWW$G,':6.]:.5 )HOZ.1]>K.I +M8RI0"#2LHU'0N?!*?'F,2YX61P,Z3H*%./BN Z"HG"@9K;Y_B2@&P]0&0#I. +M)>!R^Q/3P&)@(&![U /JUM8E#I'>X^AQN'9C4S<-%LP/2X)7R>J1XSAR;#OV +M'4.#@HF_(]CQN1,#>*)('^6.I(WJH]<1\+B3.%(< ;2/U\?N(Z-"!F!]K#RZ +M)!@5,P#AH\R1J0!:L_7-&_4NY\9E8OM1,)5"&%VE')N/B\<#@[VP\$AL7#=: +M*<Q-IHVDB!3 3(-_G!<R'JM[,<<"I+FD@+!_+,[HS'Z-^L8-@LZA]OB54>=, +M)]A3^ )!XE_F\^B\HG;!'E-]/<&2 +YNA9!Z%+<M'WV/[P778\KI]4C&B#W& +M$HX& 10*I+H)]Y@!TSW"'X2/2D'@HW0!!_FNR[\)'X^/7R@9I ^(C*&.>9=L +M 6 N*9/VB3O_GAS=#Y.'J&/V\?IX^4#_&A^##N6'[F/IC$F !42"^E]W$)R +M-;R/Y,<HI'W#^YA^%#VN'\<-[<><6L!QX-@O$#;.'QM3(@3[(Q%2 ?GYV@[L +M'W.-_<=C@O(Q =F$S#]N!W(/ ,=JRK?Q\*B'5#M:+E2.^T(F0@-R3P:!]/O] +M_^P4$0@A9/\PQ<+MJ+:-J"1A,<<J02 2??! L\FP67@RF#E[76N0C&':F )4 +M 80 9IJ!P&$FUPCX8;,0'=H*=J[^F6\$>.)P2"XT[OB0 $-'">/Q-G.#)#O. +M(9N0;L<(&Q_ )Q=^O'4\=QJ/H\BDX\HI7R-Z](Y1,A0F+05B%<<B--,X@&Y4 +M'M0Q0H050 L #\"-%#BP,;Q<K+TB03'AF'"-DB'.!B(+Z 8!$1BG\J!PB"AT +M]T +_ .@!6$ !T ]RS_L*>1YHI4$B7"1-H&)3#EJ(@N/K4A/"RCR.\,I 4!. +M)$Z1J4C%FL8OX!B0U+N\(GD#L<B^!BUR:0-IN$52,A)YW,)+('TPZ#CW,QVX +M"X!;?2V8#B6#7^#5\G*-S7:'=@A0A(FA!_"<L= DS< SF(&$I.F 8*3#(F., +M<-I?@37((PJ@$N-7!*@Q)#V1 DD:8F(P;:46Q$CR8X0&\SW$3//1WF<Z$)/Q +MM?@ [+G:($DRE07).QN0#$4A@X7T65K+0H,<2.3E 0AK_1I6)%#2(0GXL7,U +MU7)LZB9GI SQHB"-?!A0(^U@?0=L9 ]!&]F-]$:^L\"1/#UQ)!O F% T$#W^ +M*S)+7@;V6-^A'8E2>$=6#-H?=H%Y9#VR-Z#(>>=E9?J(CQR%&?>NG+,"X*0Y +M'H\KNYKQ@!I2$+ER;"L &VTRWYE28UKF4Z $8*+4! XB_)*1I KMWU2$C,0I +M4@8+@QFVPH'&W#3'VR"84]@# )I]F6NRJ*.H>=OH)$, (K2C%=EQCM>:!-.U +M3S)YQ<GRGF]R*F'%PCCUN(23I9(^S#),A'62+,V, 4H 8C$R '92!J"B @?2 +M%L@H2#_X@Y@"!("H8C*$)ZL$)0#R)"LM.FE@$[!MV)1<0"Q#9#HN!,"31&T4 +M?B(3/LEJRF&F%?,^,:[L*6AR61D)8[A$,BG-$QQ4)MUF4B(RAE'2.9B4Y$@^ +MQ@9]]JRG9%02,YE)F4Z:)#4S3+VLY%F+E$6;; VX)]-FB3R$UPER+2B6]$R: +M&T&3!H5E([JMW0:=; UZU"Z49P,> .0B$:+S\ %L*#\X%R<R1L:I1;E?DZ_! +M*+N2$ :PY%/O)VFBA#^B*&>3I9HY'D;R./F>-$E^</QVTLF29'72.7.=S$YN +M)P$)&TKOI!L /+E[) B\ -237$KQ9'H2L!&?5#K^!5]=]<E;QWUR.Y&?K)$1 +M,OB3(@?CRA+G("):<6P$S7*4EHL=)5&2>1=#'$4FA'0M58DH@P9,XX8YT [< +M##88_"@7P=(AH)!G8!RD:"X.%HC@PFM*9,2GA%/:%I IIZLQ@ O@$TE#U*UL +M(LL G<@B9=T' I$8, $(_@Y<E1@A@%^1#Y"JG$CX%;EZ[,F_S!XM&4EX!$7- +M\5 YH+1DY('+@U5\80YXN40+[Y--9:$E4RFLU+N0*DT'@[S 'GN2S<6>S#@M +M*\%XJLGE'GDI.2DKT,R<#9Z49(S\5J_21_"KA ,$*S&5["M-):>2.3"@T4T: +M)^=SN4E9F?(+26FYV'&UG"8(TTIS97F/!;"=X@%0;%J#LDI@I<BA6(D^(%;F +M6=03L\KX#ET@0I0&2 .D*]\E:CSDI+Q25K"U207VRJB5T!E_FL)27:F<O%Q, +M!40^=SQ]Y:5R6!FNY%<:6E(GE 5DI<;28^FOE+< +"V6V$I'WL'2-2D"\ '< +M*TLU>,B/8Q&B'&6I)%EV+-DL8<"+ X+RBO6?W&>Q.3*05AP\Y51"3TG^*DK. +M\9"2<RVE9!.2*4D3B%#^)J"2+HFF6I22*GF29.J]2_YKM<$EI?LLDQ>B9#>V +M!D][ "! I6=A U&H/!I,(1*5=:_(P"PQ)?"H5#SHC225^B9L5-RR9@FN3.2) +M*X.2S %/)4!R+#FJ[%2:*@6 XJU6I5Z!5=ER454:RA9!>\A2C;:R]>*KI%MR +M+.V6'LODEX\ 6>EALY^]*\UG54D1P(WR=<:GS%=Z*_>5=4ND7^12%<>IZ<X, +M+)4#!DN(9<*R20FQ;%B& UN7#K")Y;L$6.;QV]6,+$.7=TN]"\@2)R8E^UQN +M+*LI)4M*TLGRJ('PXE/&+,D > >:Y>WR<2FZQ%G*+ $1.\L$0/_0L<'MD-61 +MFX26YZ;G)%&2/:FRA%C2*RL.',H>95+!?.:][%U^*PLM4 B<9? K9&F^!%VB +M+PD.H\M=8.721<E?6UDJO^B5*8"7)3,R+3FB>$8N+5@#K@0X!')E9U6.!$4% +M:6B3O,B%Y4L-7=FZE$-&"&E]"S3GW,]OYPCV:V]D)TA_PLG_).%KW.%>;$[J +M*+6714OVY((2:;F17$IV)$,&6;VGY822>VFAS%PR]2X.6,LL&OW2Y82Y')LY +M+JLIZ4M/R^[2&G;#1!_D,(67:Q21I,H2DJ>Y5)_M+)N1_4L9XAD @,DZZU3J +MK#Q.!4Q*Y1!R5W.TU$ANS)26 R>F90T*) FU- (L)\=J*S079LZ05#F?VEQ2 +M*-<*'LJM99.R:RF?S H8^B28?[DI105S^H;!)$K.*1,D69D2T]6Q<SE!&RQ, +M*D./S\JI93+K).FT><Z\L9PS7H(K90F@!)"_')GU858&K8NS0?]L.T6:V4YM +M 21_(\018IL25/F(7.NQU1YPUQI*YME \F=G8_]I ]IM4LR!ORD#;""$\SP +M9-PS&,M\HSGE#?&E=$0EZV:9I8?TI".J)JE6@V0*V X,(LE=S53B0ZG;\K#Q +M*961[;P1Y51RD*F9Z9]](6P8!X855A? )3D':F6R:DB0E2\S9//QKD4/)&.H +M,=-F#4QM9A-R"M'-G$K8'-\EZL?FXV"AY>C-W%L*%998)(%N%YOCVP5@@%C$ +M6.*6QC,_9MPRB::K[&I1+1TT<P"GS2'S0>,"4&0R,O<W=C829"13O'(V2'.I +MM?R2F4SQ5JZQ!<?2.:0M-%4 HLR')F3&<,54ROFA,F.94XE5IC6S.?/*3&7* +M,F4(I8=:9F#CEHG2; WH,@M1!<E>YM'@E[D="&;>\5R.Q$PEES$S&6F\FV)6 +M**64)TEGIGH"#/%96&%E*6\&U4S8)#931-FAS$@^!Y.6#DJ'@NE@G\77^F+^ +M-/^95LF<X3)!*WFK46L5'MF0G,QE(AG+>-+4/$I:,0F02\L3IE/R-S$0%*2T +M,*N66DWM0 R"JWG4Q$,FKR8&H<;GX!NRC_4++&LR**&:)LP'9=,RP%#5Y! N +M,Q59,$J4I ,B;1A2N&JES]B'H2#W(5I*+@ _-!29,6$9ZB:5(S<3(MC._*>% +M,S.;V\P-1CESW BQ3&<V(=>9A 27HSG3G?GL:2/$,T$K'@_'I,>#3,9B^2]$ +M0SH5[D5S4SGQ$-FRV4QJ$PX,Y4:R)(J2K$G),&W,;A S+9M5Y!J2$,F#\UKJ +M)'F2:TIMP29SL!#<[%LR!WXZK[8W6Q/ -3(%Z%%$ 0 T X&1C=(/_C"R4:R= +M9U9I> ;2L\F!22E@6W./K(>=1 6BX.$\>$N6-[)6-I)5B/(9HM)BZ1U$AS& +MF"PL8)7(88V)*E%%*B/EF%066Z/^YD>)+( ><@O8)O8I0B8EBS9A_Z7'JIQP +M)4H",87XD*Y(P3DU-"@%#V=/":7L4'3$2(+<0*5H2V0([0EED8&H(" '2$<@ +M!70R0+C/ (D 5.B/J13 .%<&,D[JA4TH3C*!&0I,9?X+;:#^PHVS#9#CI''. +M))8NXPI]2@9ED&19NT#]EZ '.,XWP(P34JCS&IOPO! ?:!/1WDM R2#T<IN< +M@J"<1$XI)_7B<M&% BFT!DQ48 3U !"N99"K&'/JP;)>4@X1"XFEV)1#HB%Q +8FY81&X3S0IV3=,A,,"*D#\@ 8@"PUU," + +end + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.10 b/usr.sbin/xntpd/patches/patch.10 new file mode 100644 index 0000000..1771b5f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.10 @@ -0,0 +1,1925 @@ +diff -c COPYRIGHT:1.1.1.16 COPYRIGHT:1.21 +*** COPYRIGHT:1.1.1.16 Wed Feb 2 18:09:17 1994 +--- COPYRIGHT Wed Feb 2 18:09:18 1994 +*************** +*** 1,6 **** + /****************************************************************************** + * * +! * Copyright (c) David L. Mills 1992, 1993, 1994 * + * * + * Permission to use, copy, modify, and distribute this software and its * + * documentation for any purpose and without fee is hereby granted, provided * +--- 1,6 ---- + /****************************************************************************** + * * +! * Copyright (c) David L. Mills 1992, 1993, 1994 * + * * + * Permission to use, copy, modify, and distribute this software and its * + * documentation for any purpose and without fee is hereby granted, provided * +*************** +*** 55,58 **** + * Torsten Duwe <duwe@immd4.informatik.uni-erlangen.de> (Linux Port) + * Paul A Vixie <vixie@vix.com> (TrueTime GPS driver) + * Jim Jagielski <jim@jagubox.gsfc.nasa.gov> (A/UX port) +! */ +--- 55,58 ---- + * Torsten Duwe <duwe@immd4.informatik.uni-erlangen.de> (Linux Port) + * Paul A Vixie <vixie@vix.com> (TrueTime GPS driver) + * Jim Jagielski <jim@jagubox.gsfc.nasa.gov> (A/UX port) +! */ +diff -c doc/xntpd.8:1.1.1.12 doc/xntpd.8:3.24 +*** doc/xntpd.8:1.1.1.12 Wed Feb 2 18:10:44 1994 +--- doc/xntpd.8 Wed Feb 2 18:10:45 1994 +*************** +*** 446,451 **** +--- 446,467 ---- + .Ip notrust 10 + Treat these hosts normally in other respects, but never use them as + synchronization sources. ++ .Ip limited 10 ++ 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 \*(L"client_limit\*(R" hosts ++ that have shown up at the server and that have been active during the ++ last \*(L"client_limit_period\*(R" seconds are accepted. Requests from ++ other clients from the same net are rejected. Only time request ++ packets are taken into account. \*(L"Private\*(R", \*(L"control\*(R", ++ and \*(L"broadcast\*(R" packets are not subject to client limitation ++ and therefore are not contributing to client count. History of clients ++ is kept using the monitoring capability of ++ .IR xntpd . ++ Thus, monitoring is active as long as there is a restriction entry ++ with the \*(L"limited\*(R" flag. The default value for ++ \*(L"client_limit\*(R" is 3. The default value for ++ \*(L"client_limit_period\*(R" is 3600 seconds. + .Ip ntpport 10 + This is actually a match algorithm modifier, rather than a restriction + flag. Its presence causes the restriction entry to be matched only if +*************** +*** 469,474 **** +--- 485,505 ---- + considered an alternative to the standard NTP authentication facility. Source + address based restrictions are easily circumvented by a determined cracker. + .PP ++ .B clientlimit ++ .I limit ++ .PP ++ Sets \*(L"client_limit\*(R" to \*(L"limit\*(R", allows configuration ++ of client limitation policy. This variable defines the number of ++ clients from the same network that are allowed to use the server. ++ .PP ++ .B clientperiod ++ .I period ++ .PP ++ Sets \*(L"client_limit_period\*(R", allows configuration of client ++ limitation policy. This variable specifies the number ++ of seconds after which a client is considered inactive and thus no ++ longer is counted for client limit restriction. ++ .PP + .B trap + .I host_address + [ +diff -c doc/xntpdc.8:1.1.1.2 doc/xntpdc.8:3.4 +*** doc/xntpdc.8:1.1.1.2 Wed Feb 2 18:10:46 1994 +--- doc/xntpdc.8 Wed Feb 2 18:10:47 1994 +*************** +*** 539,544 **** +--- 539,555 ---- + Ignore all NTP mode 7 packets which attempt to modify the state of the + server (i.e. run time reconfiguration). Queries which return information + are permitted. ++ .Ip notrap 10 ++ 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. ++ .Ip lowpriotrap 10 ++ 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. + .Ip noserve 10 + Ignore NTP packets whose mode is other than 7. In effect, time service is + denied, though queries may still be permitted. +*************** +*** 549,554 **** +--- 560,582 ---- + .Ip notrust 10 + Treat these hosts normally in other respects, but never use them as + synchronization sources. ++ .Ip limited 10 ++ 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 \*(L"client_limit\*(R" hosts ++ that have shown up at the server and that have been active during the ++ last \*(L"client_limit_period\*(R" seconds are accepted. Requests from ++ other clients from the same net are rejected. Only time request ++ packets are taken into account. \*(L"Private\*(R", \*(L"control\*(R", ++ and \*(L"broadcast\*(R" packets are not subject to client limitation ++ and therefore are not contributing to client count. History of clients ++ is kept using the monitoring capability of ++ .IR xntpd. ++ Thus, monitoring is active as long as there is a restriction entry ++ with the \*(L"limited\*(R" flag. The default value for ++ \*(L"client_limit\*(R" is 3. The default value for ++ \*(L"client_limit_period\*(R" is 3600 seconds. Currently both ++ variables are not runtime configurable. + .Ip ntpport 10 + This is actually a match algorithm modifier, rather than a restriction + flag. Its presence causes the restriction entry to be matched only if +diff -c hints/linux:1.1.1.1 hints/linux:1.2 +*** hints/linux:1.1.1.1 Wed Feb 2 18:10:58 1994 +--- hints/linux Wed Feb 2 18:10:59 1994 +*************** +*** 1,29 **** + +! Requirements: kernel 0.99.14 or newer, libc 4.5 or newer + ------------ + +! With this configuration, xntp should build an run right out of the +! box (see generic hints for how-to), with one big limitation: tickadj doesn't +! work yet. This is especially painful since PCs are usually equipped with +! untuned, badly-drifting quartzes, values up to 200 ppm being no exception. +! Because the loop filter algorithms are limited to compensating no more than +! 100 ppm, currently only one workaround is possible: +! Compile your own kernel and adjust linux/include/linux/timex.h, +! line 67 (in pl14): +! +! #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ +! +! Since this is surely not true for your hardware, adjust the hundreds +! to match your quartz. Adding 100 compensates for a drift of -83.8 ppm +! (1/CLOCK_TICK_RATE). The number gets rounded to the nearest 100 so don't +! bother to tune any finer. +! +! Fixing tickadj is already in my work queue, so the previous comment should be +! obsolete RSN. If you really need to run xntp on any earlier versions of the +! kernel or libc, or have any other question not covered in the READMEs / hint +! files (sorry, necessary comment in the Linux community ;-) feel free to ask +! me (duwe@informatik.uni-erlangen.de) +! +! xntp3.3b of 1993/12/06 : remember to change #define ntp_adjtime adjtimex to +! __adjtimex in the Linux section (line 316). This is hopefully done if you +! (don't :-) see this paragraph in the xntp3.x distribution. +--- 1,9 ---- + +! Requirements: kernel 0.99.14y or newer, libc 4.5.8 or newer + ------------ + +! With this configuration, xntp should build an run right out of the box +! (see generic hints for how-to). If you really need to run xntp on any earlier +! versions of the kernel or libc, or have any other question not covered in the +! READMEs / hint files (sorry, necessary comment in the Linux community ;-) feel +! free to ask me (duwe@informatik.uni-erlangen.de) +diff -c include/ntp.h:1.1.1.17 include/ntp.h:3.23 +*** include/ntp.h:1.1.1.17 Wed Feb 2 18:11:18 1994 +--- include/ntp.h Wed Feb 2 18:11:18 1994 +*************** +*** 612,617 **** +--- 612,620 ---- + struct mon_data *hash_prev; /* previous structure in hash list */ + struct mon_data *mru_next; /* next structure in MRU list */ + struct mon_data *mru_prev; /* previous structure in MRU list */ ++ struct mon_data *fifo_next; /* next structure in FIFO list */ ++ struct mon_data *fifo_prev; /* previous structure in FIFO list */ ++ U_LONG lastdrop; /* last time dropped due to RES_LIMIT*/ + U_LONG lasttime; /* last time data updated */ + U_LONG firsttime; /* time structure initialized */ + U_LONG count; /* count we have seen */ +*************** +*** 621,627 **** + u_char version; /* version of incoming packet */ + }; + +! + /* + * Structure used for restrictlist entries + */ +--- 624,635 ---- + u_char version; /* version of incoming packet */ + }; + +! /* +! * Values used with mon_enabled to indicate reason for enabling monitoring +! */ +! #define MON_OFF 0x00 /* no monitoring */ +! #define MON_ON 0x01 /* monitoring explicitly enabled */ +! #define MON_RES 0x02 /* implicit monitoring for RES_LIMITED */ + /* + * Structure used for restrictlist entries + */ +*************** +*** 645,654 **** + #define RES_NOPEER 0x20 /* don't allocate memory resources */ + #define RES_NOTRAP 0x40 /* don't allow him to set traps */ + #define RES_LPTRAP 0x80 /* traps set by him are low priority */ + + #define RES_ALLFLAGS \ + (RES_IGNORE|RES_DONTSERVE|RES_DONTTRUST|RES_NOQUERY\ +! |RES_NOMODIFY|RES_NOPEER|RES_NOTRAP|RES_LPTRAP) + + /* + * Match flags +--- 653,663 ---- + #define RES_NOPEER 0x20 /* don't allocate memory resources */ + #define RES_NOTRAP 0x40 /* don't allow him to set traps */ + #define RES_LPTRAP 0x80 /* traps set by him are low priority */ ++ #define RES_LIMITED 0x100 /* limit per net number of clients */ + + #define RES_ALLFLAGS \ + (RES_IGNORE|RES_DONTSERVE|RES_DONTTRUST|RES_NOQUERY\ +! |RES_NOMODIFY|RES_NOPEER|RES_NOTRAP|RES_LPTRAP|RES_LIMITED) + + /* + * Match flags +diff -c include/ntp_request.h:1.1.1.7 include/ntp_request.h:3.7 +*** include/ntp_request.h:1.1.1.7 Wed Feb 2 18:11:27 1994 +--- include/ntp_request.h Wed Feb 2 18:11:28 1994 +*************** +*** 429,438 **** +--- 429,456 ---- + U_LONG processed; /* packets processed */ + U_LONG badauth; /* packets dropped because of authorization */ + U_LONG wanderhold; ++ U_LONG limitrejected; /* rejected because of client limitation */ + }; + + + /* ++ * System stats - old version ++ */ ++ struct old_info_sys_stats { ++ U_LONG timeup; /* time we have been up and running */ ++ U_LONG timereset; /* time since these were last cleared */ ++ U_LONG badstratum; /* packets claiming an invalid stratum */ ++ U_LONG oldversionpkt; /* old version packets received */ ++ U_LONG newversionpkt; /* new version packets received */ ++ U_LONG unknownversion; /* don't know version packets */ ++ U_LONG badlength; /* packets with bad length */ ++ U_LONG processed; /* packets processed */ ++ U_LONG badauth; /* packets dropped because of authorization */ ++ U_LONG wanderhold; ++ }; ++ ++ ++ /* + * Peer memory statistics. Collected in the peer module. + */ + struct info_mem_stats { +*************** +*** 546,551 **** +--- 564,570 ---- + struct info_monitor { + U_LONG lasttime; /* last packet from this host */ + U_LONG firsttime; /* first time we received a packet */ ++ U_LONG lastdrop; /* last time we rejected a packet due to client limitation policy */ + U_LONG count; /* count of packets received */ + U_LONG addr; /* host address */ + u_short port; /* port number of last reception */ +*************** +*** 553,558 **** +--- 572,589 ---- + u_char version; /* version number of last packet */ + }; + ++ /* ++ * Structure used for returning monitor data (old format ++ */ ++ struct old_info_monitor { ++ U_LONG lasttime; /* last packet from this host */ ++ U_LONG firsttime; /* first time we received a packet */ ++ U_LONG count; /* count of packets received */ ++ U_LONG addr; /* host address */ ++ u_short port; /* port number of last reception */ ++ u_char mode; /* mode of last packet */ ++ u_char version; /* version number of last packet */ ++ }; + + /* + * Structure used for passing indication of flags to clear +diff -c include/ntp_stdlib.h:1.1.1.7 include/ntp_stdlib.h:1.2 +*** include/ntp_stdlib.h:1.1.1.7 Wed Feb 2 18:11:31 1994 +--- include/ntp_stdlib.h Wed Feb 2 18:11:31 1994 +*************** +*** 79,84 **** +--- 79,85 ---- + extern char * mfptoa P((U_LONG, U_LONG, int)); + extern char * mfptoms P((U_LONG, U_LONG, int)); + extern char * modetoa P((int)); ++ extern U_LONG netof P((U_LONG)); + extern char * numtoa P((U_LONG)); + extern char * numtohost P((U_LONG)); + extern int octtoint P((const char *, U_LONG *)); +diff -c include/ntpd.h:1.1.1.7 include/ntpd.h:1.6 +*** include/ntpd.h:1.1.1.7 Wed Feb 2 18:11:38 1994 +--- include/ntpd.h Wed Feb 2 18:11:38 1994 +*************** +*** 93,100 **** + + /* ntp_monitor.c */ + extern void init_mon P((void)); +! extern void mon_start P((void)); +! extern void mon_stop P((void)); + extern void monitor P((struct recvbuf *)); + + /* ntp_peer.c */ +--- 93,100 ---- + + /* ntp_monitor.c */ + extern void init_mon P((void)); +! extern void mon_start P((int)); +! extern void mon_stop P((int)); + extern void monitor P((struct recvbuf *)); + + /* ntp_peer.c */ +diff -c lib/Makefile.tmpl:1.1.1.14 lib/Makefile.tmpl:3.25 +*** lib/Makefile.tmpl:1.1.1.14 Wed Feb 2 18:12:06 1994 +--- lib/Makefile.tmpl Wed Feb 2 18:12:07 1994 +*************** +*** 31,37 **** + uglydate.c uinttoa.c utvtoa.c machines.c clocktypes.c \ + md5.c a_md5encrypt.c a_md5decrypt.c \ + a_md512crypt.c decodenetnum.c systime.c msyslog.c syssignal.c \ +! findconfig.c + + OBJS= atoint.o atolfp.o atouint.o auth12crypt.o authdecrypt.o authdes.o \ + authencrypt.o authkeys.o authparity.o authreadkeys.o authusekey.o \ +--- 31,37 ---- + uglydate.c uinttoa.c utvtoa.c machines.c clocktypes.c \ + md5.c a_md5encrypt.c a_md5decrypt.c \ + a_md512crypt.c decodenetnum.c systime.c msyslog.c syssignal.c \ +! findconfig.c netof.c + + OBJS= atoint.o atolfp.o atouint.o auth12crypt.o authdecrypt.o authdes.o \ + authencrypt.o authkeys.o authparity.o authreadkeys.o authusekey.o \ +*************** +*** 44,50 **** + uglydate.o uinttoa.o utvtoa.o machines.o clocktypes.o \ + md5.o a_md5encrypt.o a_md5decrypt.o \ + a_md512crypt.o decodenetnum.o systime.o msyslog.o syssignal.o \ +! findconfig.o + + $(LIBNAME).a: $(OBJS) + ar rv $@ $? +--- 44,50 ---- + uglydate.o uinttoa.o utvtoa.o machines.o clocktypes.o \ + md5.o a_md5encrypt.o a_md5decrypt.o \ + a_md512crypt.o decodenetnum.o systime.o msyslog.o syssignal.o \ +! findconfig.o netof.o + + $(LIBNAME).a: $(OBJS) + ar rv $@ $? +diff -c /dev/null lib/netof.c:3.1 +*** /dev/null Wed Feb 2 18:13:07 1994 +--- lib/netof.c Wed Feb 2 18:13:07 1994 +*************** +*** 0 **** +--- 1,25 ---- ++ /* ++ * netof - return the net address part of an ip address ++ * (zero out host part) ++ */ ++ #include <stdio.h> ++ ++ #include "ntp_fp.h" ++ #include "ntp_stdlib.h" ++ ++ U_LONG ++ netof(num) ++ U_LONG num; ++ { ++ register U_LONG netnum; ++ ++ netnum = num; ++ ++ if(IN_CLASSC(netnum)) ++ netnum &= IN_CLASSC_NET; ++ else if (IN_CLASSB(netnum)) ++ netnum &= IN_CLASSB_NET; ++ else /* treat als other like class A */ ++ netnum &= IN_CLASSA_NET; ++ return netnum; ++ } +diff -c /dev/null parse/README.new_clocks:3.2 +*** /dev/null Wed Feb 2 18:14:30 1994 +--- parse/README.new_clocks Wed Feb 2 18:14:30 1994 +*************** +*** 0 **** +--- 1,203 ---- ++ Here is an attempt to scetch out what you need to do in order to ++ add another clock to the parse driver: ++ ++ Prerequsites: ++ - Does the system you want the clock connect to have ++ termio.h or termios.h ? (You need that for the parse driver) ++ ++ What to do: ++ ++ Make a conversion module (parse/clk_*.c) ++ ++ - 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 */ ++ 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 the 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_LEAP LEAP 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) ++ ++ Conversion is done in the cvt_* routine in parse/clk_*.c files. look in ++ them for examples. The basic structure is: ++ ++ struct clockformat <yourclock>_format = { ++ lots of field for you to fill out (see below) ++ }; ++ ++ static cvt_<yourclock>() ++ ... ++ { ++ if (<I do not recognize my time code>) { ++ return CVT_NONE; ++ } else { ++ if (<conversion into clockformat is ok>) { ++ <set all necessary flags>; ++ 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 ++ { ++ unsigned LONG (*convert)(); ++ /* conversion routine - your routine - cvt_<yourclock> */ ++ void (*syncevt)(); ++ /* routine for handling RS232 sync events (time stamps) - usually sync_simple */ ++ unsigned LONG (*syncpps)(); ++ /* PPS input routine - usually pps_simple */ ++ unsigned 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 */ ++ unsigned 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 referenc to the clockformat ++ structure must be put into parse_conf.c. ++ ++ ++ ++ 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 ++ (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_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 rottdelay estimate (usually 0) ++ U_LONG cl_basedelay; /* current offset - unsigned l_fp fractional par ++ time (fraction) by which the RS232 time code is delayed from the actual time. ++ t */ ++ 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_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. ++ } clockinfo[] = { ++ ...,<other clocks>,... ++ { < 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 closet to your and tweak that ++ code. ++ Two sorts of clocks are used with parse. Clocks that automatically sent ++ thier time code (once a second) do not nee entries in the poll routines because ++ they sent the data all the time. The second sort are the clocks that need a ++ command sent to then 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 +diff -c /dev/null parse/README.parse_clocks:3.1 +*** /dev/null Wed Feb 2 18:14:33 1994 +--- parse/README.parse_clocks Wed Feb 2 18:14:33 1994 +*************** +*** 0 **** +--- 1,263 ---- ++ The parse driver currently supports several clock 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: 127.127.8. 0- 3 (PZF535TCXO) ++ 127.127.8. 4- 7 (PZF535OCXO) ++ 127.127.8. 8-11 (DCFUA31) ++ 127.127.8.28-31 (GPS166) ++ 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 ++ ++ --- ++ RAWDCF: 127.127.8.20-23 (Conrad receiver module - delay 210ms) ++ 127.127.8.24-27 (FAU receiver - delay 258ms) ++ 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, Maerz 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: 127.127.8.16-19 ++ 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: 127.127.8.32-35 ++ 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: 127.127.8.12-15 ++ 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 ++ +diff -c parse/parsesolaris.c:1.1.1.5 parse/parsesolaris.c:3.11 +*** parse/parsesolaris.c:1.1.1.5 Wed Feb 2 18:14:49 1994 +--- parse/parsesolaris.c Wed Feb 2 18:14:49 1994 +*************** +*** 65,71 **** + { + "parse", /* module name */ + &parseinfo, /* module information */ +! 0, /* not clean yet */ + /* lock ptr */ + }; + +--- 65,71 ---- + { + "parse", /* module name */ + &parseinfo, /* module information */ +! D_NEW, /* not clean yet */ + /* lock ptr */ + }; + +diff -c scripts/support/bin/monl:1.1.1.1 scripts/support/bin/monl:1.2 +*** scripts/support/bin/monl:1.1.1.1 Wed Feb 2 18:16:01 1994 +--- scripts/support/bin/monl Wed Feb 2 18:16:01 1994 +*************** +*** 143,149 **** + { + chop; + split; +! ($host, $count, $mode, $version, $lasttime, $firsttime) = (@_[$[, $[+2 .. $[+6]); + + $Seen{$host, $mode} = 1; + +--- 143,150 ---- + { + chop; + split; +! ($host, $count, $mode, $version, $lasttime, $firsttime) = +! (@_[$[, $[+2 .. $[+4, $#_-1,$#_]); + + $Seen{$host, $mode} = 1; + +diff -c util/tickadj.c:1.1.1.16 util/tickadj.c:3.17 +*** util/tickadj.c:1.1.1.16 Wed Feb 2 18:16:23 1994 +--- util/tickadj.c Wed Feb 2 18:16:23 1994 +*************** +*** 1,4 **** +! /* tickadj.c,v 3.1 1993/07/06 01:11:05 jbj Exp + * tickadj - read, and possibly modify, the kernel `tick' and + * `tickadj' variables, as well as `dosynctodr'. Note that + * this operates on the running kernel only. I'd like to be +--- 1,4 ---- +! /* + * tickadj - read, and possibly modify, the kernel `tick' and + * `tickadj' variables, as well as `dosynctodr'. Note that + * this operates on the running kernel only. I'd like to be +*************** +*** 6,11 **** +--- 6,46 ---- + * mastered this yet. + */ + #include <stdio.h> ++ ++ #ifdef SYS_LINUX ++ #include <sys/timex.h> ++ ++ struct timex txc; ++ ++ int ++ main(int argc, char ** argv) ++ { ++ if (argc > 2) ++ { ++ fprintf(stderr, "Usage: %s [tick_value]\n", argv[0]); ++ exit(-1); ++ } ++ else if (argc == 2) ++ { ++ if ( (txc.tick = atoi(argv[1])) < 1 ) ++ { ++ fprintf(stderr, "Silly value for tick: %s\n", argv[1]); ++ exit(-1); ++ } ++ txc.mode = ADJ_TICK; ++ } ++ else ++ txc.mode = 0; ++ ++ if (__adjtimex(&txc) < 0) ++ perror("adjtimex"); ++ else ++ printf("tick = %d\n", txc.tick); ++ ++ return(0); ++ } ++ #else /* not Linux... kmem tweaking: */ ++ + #include <sys/types.h> + #include <sys/file.h> + #include <sys/stat.h> +*************** +*** 513,515 **** +--- 548,551 ---- + exit(1); + } + } ++ #endif /* not Linux */ +diff -c xntpd/ntp_config.c:1.1.1.19 xntpd/ntp_config.c:3.24 +*** xntpd/ntp_config.c:1.1.1.19 Wed Feb 2 18:16:36 1994 +--- xntpd/ntp_config.c Wed Feb 2 18:16:37 1994 +*************** +*** 58,63 **** +--- 58,64 ---- + * statsdir /var/NTP/ + * filegen peerstats [ file peerstats ] [ type day ] [ link ] + * resolver /path/progname ++ * netlimit integer + * + * And then some. See the manual page. + */ +*************** +*** 94,99 **** +--- 95,102 ---- + #define CONFIG_PIDFILE 25 + #define CONFIG_LOGFILE 26 + #define CONFIG_SETVAR 27 ++ #define CONFIG_CLIENTLIMIT 28 ++ #define CONFIG_CLIENTPERIOD 29 + + #define CONF_MOD_VERSION 1 + #define CONF_MOD_KEY 2 +*************** +*** 114,119 **** +--- 117,123 ---- + #define CONF_RES_NOTRAP 8 + #define CONF_RES_LPTRAP 9 + #define CONF_RES_NTPPORT 10 ++ #define CONF_RES_LIMITED 11 + + #define CONF_TRAP_PORT 1 + #define CONF_TRAP_INTERFACE 2 +*************** +*** 179,184 **** +--- 183,190 ---- + { "pidfile", CONFIG_PIDFILE }, + { "logfile", CONFIG_LOGFILE }, + { "setvar", CONFIG_SETVAR }, ++ { "clientlimit", CONFIG_CLIENTLIMIT }, ++ { "clientperiod", CONFIG_CLIENTPERIOD }, + { "", CONFIG_UNKNOWN } + }; + +*************** +*** 217,222 **** +--- 223,229 ---- + { "notrap", CONF_RES_NOTRAP }, + { "lowpriotrap", CONF_RES_LPTRAP }, + { "ntpport", CONF_RES_NTPPORT }, ++ { "limited", CONF_RES_LIMITED }, + { "", CONFIG_UNKNOWN } + }; + +*************** +*** 817,825 **** + errflg = 0; + if (ntokens >= 2) { + if (STREQ(tokens[1], "yes")) +! mon_start(); + else if (STREQ(tokens[1], "no")) +! mon_stop(); + else + errflg++; + } else { +--- 824,832 ---- + errflg = 0; + if (ntokens >= 2) { + if (STREQ(tokens[1], "yes")) +! mon_start(MON_ON); + else if (STREQ(tokens[1], "no")) +! mon_stop(MON_ON); + else + errflg++; + } else { +*************** +*** 965,970 **** +--- 972,981 ---- + peerkey |= RESM_NTPONLY; + break; + ++ case CONF_RES_LIMITED: ++ peerversion |= RES_LIMITED; ++ break; ++ + case CONFIG_UNKNOWN: + errflg++; + break; +*************** +*** 1413,1418 **** +--- 1424,1483 ---- + set_sys_var(tokens[1], strlen(tokens[1])+1, RW | + ((((ntokens > 2) && !strcmp(tokens[2], "default"))) ? DEF : 0)); + } ++ break; ++ ++ case CONFIG_CLIENTLIMIT: ++ if (ntokens < 2) ++ { ++ syslog(LOG_ERR, ++ "no value for clientlimit command - line ignored"); ++ } ++ else ++ { ++ U_LONG i; ++ if (!atouint(tokens[1], &i) || !i) ++ { ++ syslog(LOG_ERR, ++ "illegal value for clientlimit command - line ignored"); ++ } ++ else ++ { ++ extern U_LONG client_limit; ++ char bp[80]; ++ ++ sprintf(bp, "client_limit=%d", i); ++ set_sys_var(bp, strlen(bp)+1, RO); ++ ++ client_limit = i; ++ } ++ } ++ break; ++ ++ case CONFIG_CLIENTPERIOD: ++ if (ntokens < 2) ++ { ++ syslog(LOG_ERR, ++ "no value for clientperiod command - line ignored"); ++ } ++ else ++ { ++ U_LONG i; ++ if (!atouint(tokens[1], &i) || i < 64) ++ { ++ syslog(LOG_ERR, ++ "illegal value for clientperiod command - line ignored"); ++ } ++ else ++ { ++ extern U_LONG client_limit_period; ++ char bp[80]; ++ ++ sprintf(bp, "client_limit_period=%d", i); ++ set_sys_var(bp, strlen(bp)+1, RO); ++ ++ client_limit_period = i; ++ } ++ } + break; + } + } +diff -c xntpd/ntp_monitor.c:1.1.1.10 xntpd/ntp_monitor.c:3.9 +*** xntpd/ntp_monitor.c:1.1.1.10 Wed Feb 2 18:16:48 1994 +--- xntpd/ntp_monitor.c Wed Feb 2 18:16:48 1994 +*************** +*** 58,64 **** + static struct mon_data *mon_hash; /* Pointer to array of hash buckets */ + static int *mon_hash_count; /* Point to hash count stats keeper */ + struct mon_data mon_mru_list; +! + /* + * List of free structures structures, and counters of free and total + * structures. The free structures are linked with the hash_next field. +--- 58,64 ---- + static struct mon_data *mon_hash; /* Pointer to array of hash buckets */ + static int *mon_hash_count; /* Point to hash count stats keeper */ + struct mon_data mon_mru_list; +! struct mon_data mon_fifo_list; + /* + * List of free structures structures, and counters of free and total + * structures. The free structures are linked with the hash_next field. +*************** +*** 93,99 **** + * Don't do much of anything here. We don't allocate memory + * until someone explicitly starts us. + */ +! mon_enabled = 0; + mon_have_memory = 0; + + mon_free_mem = 0; +--- 93,99 ---- + * Don't do much of anything here. We don't allocate memory + * until someone explicitly starts us. + */ +! mon_enabled = MON_OFF; + mon_have_memory = 0; + + mon_free_mem = 0; +*************** +*** 103,108 **** +--- 103,109 ---- + mon_hash = 0; + mon_hash_count = 0; + memset((char *)&mon_mru_list, 0, sizeof mon_mru_list); ++ memset((char *)&mon_fifo_list, 0, sizeof mon_fifo_list); + } + + +*************** +*** 110,122 **** + * mon_start - start up the monitoring software + */ + void +! mon_start() + { + register struct mon_data *md; + register int i; + +! if (mon_enabled) + return; + + if (!mon_have_memory) { + mon_hash = (struct mon_data *) +--- 111,128 ---- + * mon_start - start up the monitoring software + */ + void +! mon_start(mode) +! int mode; + { + register struct mon_data *md; + register int i; + +! if (mon_enabled != MON_OFF) { +! mon_enabled |= mode; + return; ++ } ++ if (mode == MON_OFF) ++ return; /* Ooops.. */ + + if (!mon_have_memory) { + mon_hash = (struct mon_data *) +*************** +*** 142,148 **** + mon_mru_list.mru_next = &mon_mru_list; + mon_mru_list.mru_prev = &mon_mru_list; + +! mon_enabled = 1; + } + + +--- 148,157 ---- + mon_mru_list.mru_next = &mon_mru_list; + mon_mru_list.mru_prev = &mon_mru_list; + +! mon_fifo_list.fifo_next = &mon_fifo_list; +! mon_fifo_list.fifo_prev = &mon_fifo_list; +! +! mon_enabled = mode; + } + + +*************** +*** 150,161 **** + * mon_stop - stop the monitoring software + */ + void +! mon_stop() + { + register struct mon_data *md; + register int i; + +! if (!mon_enabled) + return; + + /* +--- 159,177 ---- + * mon_stop - stop the monitoring software + */ + void +! mon_stop(mode) +! int mode; + { + register struct mon_data *md; + register int i; + +! if (mon_enabled == MON_OFF) +! return; +! if ((mon_enabled & mode) == 0 || mode == MON_OFF) +! return; +! +! mon_enabled &= ~mode; +! if (mon_enabled != MON_OFF) + return; + + /* +*************** +*** 176,182 **** + mon_mru_list.mru_next = &mon_mru_list; + mon_mru_list.mru_prev = &mon_mru_list; + +! mon_enabled = 0; + } + + +--- 192,199 ---- + mon_mru_list.mru_next = &mon_mru_list; + mon_mru_list.mru_prev = &mon_mru_list; + +! mon_fifo_list.fifo_next = &mon_fifo_list; +! mon_fifo_list.fifo_prev = &mon_fifo_list; + } + + +*************** +*** 194,200 **** + register int mode; + register struct mon_data *mdhash; + +! if (!mon_enabled) + return; + + pkt = &rbufp->recv_pkt; +--- 211,217 ---- + register int mode; + register struct mon_data *mdhash; + +! if (mon_enabled == MON_OFF) + return; + + pkt = &rbufp->recv_pkt; +*************** +*** 220,225 **** +--- 237,243 ---- + md->mru_prev = &mon_mru_list; + mon_mru_list.mru_next->mru_prev = md; + mon_mru_list.mru_next = md; ++ + return; + } + md = md->hash_next; +*************** +*** 240,245 **** +--- 258,269 ---- + md->hash_next->hash_prev = md->hash_prev; + md->hash_prev->hash_next = md->hash_next; + *(mon_hash_count + MON_HASH(md->rmtadr)) -= 1; ++ /* ++ * Get it from FIFO list ++ */ ++ md->fifo_prev->fifo_next = md->fifo_next; ++ md->fifo_next->fifo_prev = md->fifo_prev; ++ + } else { + if (mon_free_mem == 0) + mon_getmoremem(); +*************** +*** 252,257 **** +--- 276,282 ---- + * Got one, initialize it + */ + md->lasttime = md->firsttime = current_time; ++ md->lastdrop = 0; + md->count = 1; + md->rmtadr = netnum; + md->rmtport = NSRCPORT(&rbufp->recv_srcadr); +*************** +*** 260,266 **** + + /* + * Shuffle him into the hash table, inserting him at the +! * end. Also put him on top of the MRU list. + */ + mdhash = mon_hash + MON_HASH(netnum); + md->hash_next = mdhash; +--- 285,292 ---- + + /* + * Shuffle him into the hash table, inserting him at the +! * end. Also put him on top of the MRU list +! * and at bottom of FIFO list + */ + mdhash = mon_hash + MON_HASH(netnum); + md->hash_next = mdhash; +*************** +*** 273,278 **** +--- 299,309 ---- + md->mru_prev = &mon_mru_list; + mon_mru_list.mru_next->mru_prev = md; + mon_mru_list.mru_next = md; ++ ++ md->fifo_prev = mon_fifo_list.fifo_prev; ++ md->fifo_next = &mon_fifo_list; ++ mon_fifo_list.fifo_prev->fifo_next = md; ++ mon_fifo_list.fifo_prev = md; + } + + +diff -c xntpd/ntp_proto.c:1.1.1.19 xntpd/ntp_proto.c:3.21 +*** xntpd/ntp_proto.c:1.1.1.19 Wed Feb 2 18:16:51 1994 +--- xntpd/ntp_proto.c Wed Feb 2 18:16:52 1994 +*************** +*** 49,54 **** +--- 49,55 ---- + U_LONG sys_processed; /* packets processed */ + U_LONG sys_badauth; /* packets dropped because of authorization */ + U_LONG sys_wanderhold; /* sys_peer held to prevent wandering */ ++ U_LONG sys_limitrejected; /* pkts rejected due toclient count per net */ + + /* + * Imported from ntp_timer.c +*************** +*** 373,378 **** +--- 374,394 ---- + return; + + /* ++ * See if we only accept limited number of clients ++ * from the net this guy is from. ++ * Note: the flag is determined dynamically within restrictions() ++ */ ++ if (restrict & RES_LIMITED) { ++ extern U_LONG client_limit; ++ ++ sys_limitrejected++; ++ syslog(LOG_NOTICE, ++ "rejected mode %d request from %s - per net client limit (%d) exceeded", ++ PKT_MODE(pkt->li_vn_mode), ++ ntoa(&rbufp->recv_srcadr), client_limit); ++ return; ++ } ++ /* + * Dump anything with a putrid stratum. These will most likely + * come from someone trying to poll us with ntpdc. + */ +*************** +*** 2165,2168 **** +--- 2181,2185 ---- + sys_badauth = 0; + sys_wanderhold = 0; + sys_stattime = current_time; ++ sys_limitrejected = 0; + } +diff -c xntpd/ntp_request.c:1.1.1.14 xntpd/ntp_request.c:3.15 +*** xntpd/ntp_request.c:1.1.1.14 Wed Feb 2 18:16:55 1994 +--- xntpd/ntp_request.c Wed Feb 2 18:16:55 1994 +*************** +*** 916,921 **** +--- 916,922 ---- + extern U_LONG sys_processed; + extern U_LONG sys_badauth; + extern U_LONG sys_wanderhold; ++ extern U_LONG sys_limitrejected; + + ss = (struct info_sys_stats *)prepare_pkt(srcadr, inter, inpkt, + sizeof(struct info_sys_stats)); +*************** +*** 930,936 **** + ss->processed = htonl(sys_processed); + ss->badauth = htonl(sys_badauth); + ss->wanderhold = htonl(sys_wanderhold); +! + (void) more_pkt(); + flush_pkt(); + } +--- 931,937 ---- + ss->processed = htonl(sys_processed); + ss->badauth = htonl(sys_badauth); + ss->wanderhold = htonl(sys_wanderhold); +! ss->limitrejected = htonl(sys_limitrejected); + (void) more_pkt(); + flush_pkt(); + } +*************** +*** 1311,1317 **** + struct interface *inter; + struct req_pkt *inpkt; + { +! mon_start(); + req_ack(srcadr, inter, inpkt, INFO_OKAY); + } + +--- 1312,1318 ---- + struct interface *inter; + struct req_pkt *inpkt; + { +! mon_start(MON_ON); + req_ack(srcadr, inter, inpkt, INFO_OKAY); + } + +*************** +*** 1325,1331 **** + struct interface *inter; + struct req_pkt *inpkt; + { +! mon_stop(); + req_ack(srcadr, inter, inpkt, INFO_OKAY); + } + +--- 1326,1332 ---- + struct interface *inter; + struct req_pkt *inpkt; + { +! mon_stop(MON_ON); + req_ack(srcadr, inter, inpkt, INFO_OKAY); + } + +*************** +*** 1497,1502 **** +--- 1498,1507 ---- + md = md->mru_next) { + im->lasttime = htonl(current_time - md->lasttime); + im->firsttime = htonl(current_time - md->firsttime); ++ if (md->lastdrop) ++ im->lastdrop = htonl(current_time - md->lastdrop); ++ else ++ im->lastdrop = 0; + im->count = htonl(md->count); + im->addr = md->rmtadr; + im->port = md->rmtport; +diff -c xntpd/ntp_restrict.c:1.1.1.10 xntpd/ntp_restrict.c:3.10 +*** xntpd/ntp_restrict.c:1.1.1.10 Wed Feb 2 18:16:57 1994 +--- xntpd/ntp_restrict.c Wed Feb 2 18:16:57 1994 +*************** +*** 1,4 **** +! /* ntp_restrict.c,v 3.1 1993/07/06 01:11:28 jbj Exp + * ntp_restrict.c - find out what restrictions this host is running under + */ + #include <stdio.h> +--- 1,4 ---- +! /* + * ntp_restrict.c - find out what restrictions this host is running under + */ + #include <stdio.h> +*************** +*** 60,65 **** +--- 60,80 ---- + U_LONG res_timereset; + + /* ++ * Parameters of the RES_LIMITED restriction option. ++ * client_limit is the number of hosts allowed per source net ++ * client_limit_period is the number of seconds after which an entry ++ * is no longer considered for client limit determination ++ */ ++ U_LONG client_limit; ++ U_LONG client_limit_period; ++ /* ++ * count number of restriction entries referring to RES_LIMITED ++ * controls activation/deactivation of monitoring ++ * (with respect ro RES_LIMITED control) ++ */ ++ U_LONG res_limited_refcnt; ++ ++ /* + * Our initial allocation of list entries. + */ + static struct restrictlist resinit[INITRESLIST]; +*************** +*** 70,81 **** +--- 85,102 ---- + extern U_LONG current_time; + + /* ++ * debug flag ++ */ ++ extern int debug; ++ ++ /* + * init_restrict - initialize the restriction data structures + */ + void + init_restrict() + { + register int i; ++ char bp[80]; + + /* + * Zero the list and put all but one on the free list +*************** +*** 108,113 **** +--- 129,146 ---- + res_found = 0; + res_not_found = 0; + res_timereset = 0; ++ ++ /* ++ * set default values for RES_LIMIT functionality ++ */ ++ client_limit = 3; ++ client_limit_period = 3600; ++ res_limited_refcnt = 0; ++ ++ sprintf(bp, "client_limit=%d", client_limit); ++ set_sys_var(bp, strlen(bp)+1, RO); ++ sprintf(bp, "client_limit_period=%d", client_limit_period); ++ set_sys_var(bp, strlen(bp)+1, RO); + } + + +*************** +*** 150,155 **** +--- 183,302 ---- + else + res_found++; + ++ /* ++ * The following implements limiting the number of clients ++ * accepted from a given network. The notion of "same network" ++ * is determined by the mask and addr fields of the restrict ++ * list entry. The monitor mechanism has to be enabled for ++ * collecting info on current clients. ++ * ++ * The policy is as follows: ++ * - take the list of clients recorded ++ * from the given "network" seen within the last ++ * client_limit_period seconds ++ * - if there are at most client_limit entries: ++ * --> access allowed ++ * - otherwise sort by time first seen ++ * - current client among the first client_limit seen ++ * hosts? ++ * if yes: access allowed ++ * else: eccess denied ++ */ ++ if (match->flags & RES_LIMITED) { ++ int lcnt; ++ struct mon_data *md, *this_client; ++ extern int mon_enabled; ++ extern struct mon_data mon_fifo_list, mon_mru_list; ++ ++ #ifdef DEBUG ++ if (debug > 2) ++ printf("limited clients check: %d clients, period %d seconds, net is 0x%X\n", ++ client_limit, client_limit_period, ++ netof(hostaddr)); ++ #endif /*DEBUG*/ ++ if (mon_enabled == MON_OFF) { ++ #ifdef DEBUG ++ if (debug > 4) ++ printf("no limit - monitoring is off\n"); ++ #endif ++ return (int)(match->flags & ~RES_LIMITED); ++ } ++ ++ /* ++ * How nice, MRU list provides our current client as the ++ * first entry in the list. ++ * Monitoring was verified to be active above, thus we ++ * know an entry for our client must exist, or some ++ * brain dead set the memory limit for mon entries to ZERO!!! ++ */ ++ this_client = mon_mru_list.mru_next; ++ ++ for (md = mon_fifo_list.fifo_next,lcnt = 0; ++ md != &mon_fifo_list; ++ md = md->fifo_next) { ++ if ((current_time - md->lasttime) ++ > client_limit_period) { ++ #ifdef DEBUG ++ if (debug > 5) ++ printf("checking: %s: ignore: too old: %d\n", ++ numtoa(md->rmtadr), ++ current_time - md->lasttime); ++ #endif ++ continue; ++ } ++ if (md->mode == MODE_BROADCAST || ++ md->mode == MODE_CONTROL || ++ md->mode == MODE_PRIVATE) { ++ #ifdef DEBUG ++ if (debug > 5) ++ printf("checking: %s: ignore mode %d\n", ++ numtoa(md->rmtadr), ++ md->mode); ++ #endif ++ continue; ++ } ++ if (netof(md->rmtadr) != ++ netof(hostaddr)) { ++ #ifdef DEBUG ++ if (debug > 5) ++ printf("checking: %s: different net 0x%X\n", ++ numtoa(md->rmtadr), ++ netof(md->rmtadr)); ++ #endif ++ continue; ++ } ++ lcnt++; ++ if (lcnt > client_limit || ++ md->rmtadr == hostaddr) { ++ #ifdef DEBUG ++ if (debug > 5) ++ printf("considering %s: found host\n", ++ numtoa(md->rmtadr)); ++ #endif ++ break; ++ } ++ #ifdef DEBUG ++ else { ++ if (debug > 5) ++ printf("considering %s: same net\n", ++ numtoa(md->rmtadr)); ++ } ++ #endif ++ ++ } ++ #ifdef DEBUG ++ if (debug > 4) ++ printf("this one is rank %d in list, limit is %d: %s\n", ++ lcnt, client_limit, ++ (lcnt <= client_limit) ? "ALLOW" : "REJECT"); ++ #endif ++ if (lcnt <= client_limit) { ++ this_client->lastdrop = 0; ++ return (int)(match->flags & ~RES_LIMITED); ++ } else { ++ this_client->lastdrop = current_time; ++ } ++ } + return (int)match->flags; + } + +*************** +*** 257,262 **** +--- 404,413 ---- + rlprev->next = rl; + restrictcount++; + } ++ if ((rl->flags ^ (u_short)flags) & RES_LIMITED) { ++ res_limited_refcnt++; ++ mon_start(MON_RES); /* ensure data gets collected */ ++ } + rl->flags |= (u_short)flags; + break; + +*************** +*** 265,272 **** + * Remove some bits from the flags. If we didn't + * find this one, just return. + */ +! if (rl != 0) + rl->flags &= (u_short)~flags; + break; + + case RESTRICT_REMOVE: +--- 416,429 ---- + * Remove some bits from the flags. If we didn't + * find this one, just return. + */ +! if (rl != 0) { +! if ((rl->flags ^ (u_short)flags) & RES_LIMITED) { +! res_limited_refcnt--; +! if (res_limited_refcnt == 0) +! mon_stop(MON_RES); +! } + rl->flags &= (u_short)~flags; ++ } + break; + + case RESTRICT_REMOVE: +*************** +*** 280,285 **** +--- 437,447 ---- + && !(rl->mflags & RESM_INTERFACE)) { + rlprev->next = rl->next; + restrictcount--; ++ if (rl->flags & RES_LIMITED) { ++ res_limited_refcnt--; ++ if (res_limited_refcnt == 0) ++ mon_stop(MON_RES); ++ } + memset((char *)rl, 0, sizeof(struct restrictlist)); + + rl->next = resfree; +diff -c xntpd/ntp_unixclock.c:1.1.1.27 xntpd/ntp_unixclock.c:3.29 +*** xntpd/ntp_unixclock.c:1.1.1.27 Wed Feb 2 18:17:00 1994 +--- xntpd/ntp_unixclock.c Wed Feb 2 18:17:01 1994 +*************** +*** 556,568 **** + #endif /* SOLARIS */ + + #ifdef SYS_LINUX +! /* XXX should look this up somewhere ! */ + static void + clock_parms(tickadj, tick) + U_LONG *tickadj; + U_LONG *tick; + { +! *tickadj = (U_LONG)1; +! *tick = (U_LONG)10000; + } + #endif /* SYS_LINUX */ +--- 556,573 ---- + #endif /* SOLARIS */ + + #ifdef SYS_LINUX +! #include <sys/timex.h> + static void + clock_parms(tickadj, tick) + U_LONG *tickadj; + U_LONG *tick; + { +! struct timex txc; +! +! txc.mode = 0; +! __adjtimex(&txc); +! +! *tickadj = (U_LONG)1; /* our adjtime is accurate */ +! *tick = (U_LONG)txc.tick; + } + #endif /* SYS_LINUX */ +diff -c xntpdc/ntpdc_ops.c:1.1.1.12 xntpdc/ntpdc_ops.c:3.16 +*** xntpdc/ntpdc_ops.c:1.1.1.12 Wed Feb 2 18:17:35 1994 +--- xntpdc/ntpdc_ops.c Wed Feb 2 18:17:36 1994 +*************** +*** 846,853 **** + if (!check1item(items, fp)) + return; + +! if (!checkitemsize(itemsize, sizeof(struct info_sys_stats))) + return; + + (void) fprintf(fp, "system uptime: %d\n", + ntohl(ss->timeup)); +--- 846,857 ---- + if (!check1item(items, fp)) + return; + +! if (itemsize != sizeof(struct info_sys_stats) && +! itemsize != sizeof(struct old_info_sys_stats)) { +! /* issue warning according to new structure size */ +! checkitemsize(itemsize, sizeof(struct info_sys_stats)); + return; ++ } + + (void) fprintf(fp, "system uptime: %d\n", + ntohl(ss->timeup)); +*************** +*** 869,874 **** +--- 873,883 ---- + ntohl(ss->badauth)); + (void) fprintf(fp, "wander hold downs: %d\n", + ntohl(ss->wanderhold)); ++ if (itemsize != sizeof(struct info_sys_stats)) ++ return; ++ ++ (void) fprintf(fp, "limitation rejects: %d\n", ++ ntohl(ss->limitrejected)); + } + + +*************** +*** 1243,1248 **** +--- 1252,1258 ---- + { "nopeer", RES_NOPEER }, + { "notrap", RES_NOTRAP }, + { "lptrap", RES_LPTRAP }, ++ { "limited", RES_LIMITED }, + { "", 0 } + }; + +*************** +*** 1463,1468 **** +--- 1473,1479 ---- + FILE *fp; + { + struct info_monitor *ml; ++ struct old_info_monitor *oml; + int items; + int itemsize; + int res; +*************** +*** 1476,1498 **** + if (!checkitems(items, fp)) + return; + +! if (!checkitemsize(itemsize, sizeof(struct info_monitor))) +! return; + +! (void) fprintf(fp, +! " address port count mode version lasttime firsttime\n"); +! (void) fprintf(fp, +! "=====================================================================\n"); +! while (items > 0) { +! (void) fprintf(fp, "%-20.20s %5d %9d %4d %3d %9u %9u\n", +! nntohost(ml->addr), +! ntohs(ml->port), +! ntohl(ml->count), +! ml->mode, ml->version, +! ntohl(ml->lasttime), +! ntohl(ml->firsttime)); +! ml++; +! items--; + } + } + +--- 1487,1535 ---- + if (!checkitems(items, fp)) + return; + +! if (itemsize == sizeof(struct info_monitor)) { + +! (void) fprintf(fp, +! " address port count mode version lastdrop lasttime firsttime\n"); +! (void) fprintf(fp, +! "===============================================================================\n"); +! while (items > 0) { +! (void) fprintf(fp, "%-20.20s %5d %9d %4d %3d %9u %9u %9u\n", +! nntohost(ml->addr), +! ntohs(ml->port), +! ntohl(ml->count), +! ml->mode, +! ml->version, +! ntohl(ml->lastdrop), +! ntohl(ml->lasttime), +! ntohl(ml->firsttime)); +! ml++; +! items--; +! } +! } else { +! if (itemsize != sizeof(struct old_info_monitor)) { +! /* issue warning according to new info_monitor size */ +! checkitemsize(itemsize, sizeof(struct info_monitor)); +! return; +! } +! +! oml = (struct old_info_monitor *)ml; +! (void) fprintf(fp, +! " address port count mode version lasttime firsttime\n"); +! (void) fprintf(fp, +! "======================================================================\n"); +! while (items > 0) { +! (void) fprintf(fp, "%-20.20s %5d %9d %4d %3d %9u %9u\n", +! nntohost(oml->addr), +! ntohs(oml->port), +! ntohl(oml->count), +! oml->mode, +! oml->version, +! ntohl(oml->lasttime), +! ntohl(oml->firsttime)); +! oml++; +! items--; +! } + } + } + diff --git a/usr.sbin/xntpd/patches/patch.11 b/usr.sbin/xntpd/patches/patch.11 new file mode 100644 index 0000000..8554d88 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.11 @@ -0,0 +1,536 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa05908; 9 Feb 94 18:18 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa21398; + 9 Feb 94 18:13 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA29809 (5.65c-6/7.3v-FAU); Thu, 10 Feb 1994 00:12:50 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA11633 (5.65c-6/7.3m-FAU); Thu, 10 Feb 1994 00:12:46 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402092312.AA11633@faui43.informatik.uni-erlangen.de> +Subject: .zz Patches +To: Mills@udel.edu +Date: Thu, 10 Feb 94 0:12:41 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, + Paul_Vixie@corpmis.sjc.hw.sony.com, Piete.Brooks@cl.cam.ac.uk +X-Mailer: ELM [version 2.3 PL11] + +Guys, + +Ok, here are some patches (including some WWVB cleanup 8-) relative +to the zz version. The KERNEL stuff in ntp_timex.h must still +be resolved. + +diff -c Makefile:1.1.1.11 Makefile:3.46 +*** Makefile:1.1.1.11 Wed Feb 9 23:54:57 1994 +--- Makefile Wed Feb 9 23:54:57 1994 +*************** +*** 162,168 **** + FRC: + + savebin: +! @test -d bin || mkdir bin + @echo + @echo '### saving $(TARGETS) $(OPTTARG) in bin' + -@for f in $(TARGETS) $(OPTTARG); \ +--- 162,168 ---- + FRC: + + savebin: +! -@test -d bin || mkdir bin + @echo + @echo '### saving $(TARGETS) $(OPTTARG) in bin' + -@for f in $(TARGETS) $(OPTTARG); \ +diff -c include/ntp_machine.h:1.1.1.11 include/ntp_machine.h:1.27 +*** include/ntp_machine.h:1.1.1.11 Wed Feb 9 23:56:27 1994 +--- include/ntp_machine.h Wed Feb 9 23:56:27 1994 +*************** +*** 274,280 **** + #ifndef STR_SYSTEM + #define STR_SYSTEM "UNIX/Ultrix" + #endif +- #define HAVE_TERMIOS + #endif + + /* +--- 274,279 ---- +diff -c lib/systime.c:1.1.1.11 lib/systime.c:1.9 +*** lib/systime.c:1.1.1.11 Wed Feb 9 23:57:45 1994 +--- lib/systime.c Wed Feb 9 23:57:45 1994 +*************** +*** 47,58 **** + * We also remember the clock precision we computed from the kernel in + * case someone asks us. + */ + LONG adj_precision; /* adj precision in usec (tickadj) */ + LONG tvu_maxslew; /* maximum adjust doable in 1<<CLOCK_ADJ sec (usec) */ + + U_LONG tsf_maxslew; /* same as above, as LONG format */ + +- LONG sys_clock; + l_fp sys_clock_offset; /* correction for current system time */ + + /* +--- 47,59 ---- + * We also remember the clock precision we computed from the kernel in + * case someone asks us. + */ ++ LONG sys_clock; ++ + LONG adj_precision; /* adj precision in usec (tickadj) */ + LONG tvu_maxslew; /* maximum adjust doable in 1<<CLOCK_ADJ sec (usec) */ + + U_LONG tsf_maxslew; /* same as above, as LONG format */ + + l_fp sys_clock_offset; /* correction for current system time */ + + /* +diff -c machines/sunos4.bsd:1.1.1.3 machines/sunos4.bsd:1.3 +*** machines/sunos4.bsd:1.1.1.3 Wed Feb 9 23:58:15 1994 +--- machines/sunos4.bsd Wed Feb 9 23:58:15 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SUNOS4 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lkvm +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SUNOS4 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lkvm +diff -c machines/ultrix.bsd:1.1.1.2 machines/ultrix.bsd:1.3 +*** machines/ultrix.bsd:1.1.1.2 Wed Feb 9 23:58:19 1994 +--- machines/ultrix.bsd Wed Feb 9 23:58:19 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_ULTRIX + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_ULTRIX -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/ultrix.posix:1.1.1.2 machines/ultrix.posix:1.3 +*** machines/ultrix.posix:1.1.1.2 Wed Feb 9 23:58:20 1994 +--- machines/ultrix.posix Wed Feb 9 23:58:20 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_ULTRIX -DNTP_POSIX_SOURCE -DHAVE_SIGNALED_IO + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_ULTRIX -DNTP_POSIX_SOURCE -DHAVE_SIGNALED_IO -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c parse/clk_dcf7000.c:1.1.1.8 parse/clk_dcf7000.c:3.11 +*** parse/clk_dcf7000.c:1.1.1.8 Wed Feb 9 23:58:51 1994 +--- parse/clk_dcf7000.c Wed Feb 9 23:58:51 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_DCF7000) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_dcf7000.c,v 3.10 1994/01/25 19:05:07 kardel Exp + * +! * clk_dcf7000.c,v 3.10 1994/01/25 19:05:07 kardel Exp + * + * ELV DCF7000 module + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_DCF7000) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_dcf7000.c,v 3.11 1994/02/02 17:45:14 kardel Exp + * +! * clk_dcf7000.c,v 3.11 1994/02/02 17:45:14 kardel Exp + * + * ELV DCF7000 module + * +*************** +*** 121,126 **** +--- 121,129 ---- + * History: + * + * clk_dcf7000.c,v ++ * Revision 3.11 1994/02/02 17:45:14 kardel ++ * rcs ids fixed ++ * + * Revision 3.6 1993/10/09 15:01:27 kardel + * file structure unified + * +diff -c parse/clk_meinberg.c:1.1.1.8 parse/clk_meinberg.c:3.13 +*** parse/clk_meinberg.c:1.1.1.8 Wed Feb 9 23:58:53 1994 +--- parse/clk_meinberg.c Wed Feb 9 23:58:53 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.11 1994/01/25 19:05:10 kardel Exp + * +! * clk_meinberg.c,v 3.11 1994/01/25 19:05:10 kardel Exp + * + * Meinberg clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.13 1994/02/02 17:45:21 kardel Exp + * +! * clk_meinberg.c,v 3.13 1994/02/02 17:45:21 kardel Exp + * + * Meinberg clock support + * +*************** +*** 414,419 **** +--- 414,422 ---- + * History: + * + * clk_meinberg.c,v ++ * Revision 3.13 1994/02/02 17:45:21 kardel ++ * rcs ids fixed ++ * + * Revision 3.11 1994/01/25 19:05:10 kardel + * 94/01/23 reconcilation + * +diff -c parse/clk_rawdcf.c:1.1.1.8 parse/clk_rawdcf.c:3.11 +*** parse/clk_rawdcf.c:1.1.1.8 Wed Feb 9 23:58:54 1994 +--- parse/clk_rawdcf.c Wed Feb 9 23:58:54 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.9 1994/01/25 19:05:12 kardel Exp + * +! * clk_rawdcf.c,v 3.9 1994/01/25 19:05:12 kardel Exp + * + * Raw DCF77 pulse clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.11 1994/02/02 17:45:23 kardel Exp + * +! * clk_rawdcf.c,v 3.11 1994/02/02 17:45:23 kardel Exp + * + * Raw DCF77 pulse clock support + * +*************** +*** 529,534 **** +--- 529,537 ---- + * History: + * + * clk_rawdcf.c,v ++ * Revision 3.11 1994/02/02 17:45:23 kardel ++ * rcs ids fixed ++ * + * Revision 3.9 1994/01/25 19:05:12 kardel + * 94/01/23 reconcilation + * +diff -c parse/clk_schmid.c:1.1.1.8 parse/clk_schmid.c:3.12 +*** parse/clk_schmid.c:1.1.1.8 Wed Feb 9 23:58:55 1994 +--- parse/clk_schmid.c Wed Feb 9 23:58:55 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.10 1994/01/25 19:05:15 kardel Exp + * +! * clk_schmid.c,v 3.10 1994/01/25 19:05:15 kardel Exp + * + * Schmid clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.12 1994/02/02 17:45:25 kardel Exp + * +! * clk_schmid.c,v 3.12 1994/02/02 17:45:25 kardel Exp + * + * Schmid clock support + * +*************** +*** 168,173 **** +--- 168,176 ---- + * History: + * + * clk_schmid.c,v ++ * Revision 3.12 1994/02/02 17:45:25 kardel ++ * rcs ids fixed ++ * + * Revision 3.10 1994/01/25 19:05:15 kardel + * 94/01/23 reconcilation + * +diff -c parse/clk_trimble.c:1.1.1.3 parse/clk_trimble.c:3.9 +*** parse/clk_trimble.c:1.1.1.3 Wed Feb 9 23:58:56 1994 +--- parse/clk_trimble.c Wed Feb 9 23:58:57 1994 +*************** +*** 1,6 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMSV6) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_trimble.c,v 3.7 1994/01/25 19:05:17 kardel Exp + * + * Trimble SV6 clock support + */ +--- 1,6 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMSV6) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_trimble.c,v 3.9 1994/02/02 17:45:27 kardel Exp + * + * Trimble SV6 clock support + */ +*************** +*** 106,111 **** +--- 106,114 ---- + * History: + * + * clk_trimble.c,v ++ * Revision 3.9 1994/02/02 17:45:27 kardel ++ * rcs ids fixed ++ * + * Revision 3.7 1994/01/25 19:05:17 kardel + * 94/01/23 reconcilation + * +diff -c parse/parse.c:1.1.1.8 parse/parse.c:3.21 +*** parse/parse.c:1.1.1.8 Wed Feb 9 23:58:59 1994 +--- parse/parse.c Wed Feb 9 23:59:00 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.19 1994/01/25 19:05:20 kardel Exp + * +! * parse.c,v 3.19 1994/01/25 19:05:20 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * +! * parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 1148,1153 **** +--- 1148,1156 ---- + * History: + * + * parse.c,v ++ * Revision 3.21 1994/02/02 17:45:30 kardel ++ * rcs ids fixed ++ * + * Revision 3.19 1994/01/25 19:05:20 kardel + * 94/01/23 reconcilation + * +diff -c parse/parse_conf.c:1.1.1.8 parse/parse_conf.c:3.15 +*** parse/parse_conf.c:1.1.1.8 Wed Feb 9 23:59:01 1994 +--- parse/parse_conf.c Wed Feb 9 23:59:01 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse_conf.c,v 3.13 1994/01/25 19:05:23 kardel Exp + * +! * parse_conf.c,v 3.13 1994/01/25 19:05:23 kardel Exp + * + * Parser configuration module for reference clocks + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse_conf.c,v 3.15 1994/02/02 17:45:32 kardel Exp + * +! * parse_conf.c,v 3.15 1994/02/02 17:45:32 kardel Exp + * + * Parser configuration module for reference clocks + * +*************** +*** 81,86 **** +--- 81,89 ---- + * History: + * + * parse_conf.c,v ++ * Revision 3.15 1994/02/02 17:45:32 kardel ++ * rcs ids fixed ++ * + * Revision 3.13 1994/01/25 19:05:23 kardel + * 94/01/23 reconcilation + * +diff -c parse/parsesolaris.c:1.1.1.6 parse/parsesolaris.c:3.12 +*** parse/parsesolaris.c:1.1.1.6 Wed Feb 9 23:59:02 1994 +--- parse/parsesolaris.c Wed Feb 9 23:59:02 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp + * +! * parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.12 1994/02/02 17:45:35 kardel Exp + * +! * parsesolaris.c,v 3.12 1994/02/02 17:45:35 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +*************** +*** 139,145 **** + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.9"; + char *s, *S, *t; + + /* +--- 139,145 ---- + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.12"; + char *s, *S, *t; + + /* +*************** +*** 1179,1184 **** +--- 1179,1187 ---- + * History: + * + * parsesolaris.c,v ++ * Revision 3.12 1994/02/02 17:45:35 kardel ++ * rcs ids fixed ++ * + * Revision 3.9 1994/01/25 19:05:26 kardel + * 94/01/23 reconcilation + * +diff -c parse/parsestreams.c:1.1.1.7 parse/parsestreams.c:3.14 +*** parse/parsestreams.c:1.1.1.7 Wed Feb 9 23:59:03 1994 +--- parse/parsestreams.c Wed Feb 9 23:59:04 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp + * +! * parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.14 1994/02/02 17:45:38 kardel Exp + * +! * parsestreams.c,v 3.14 1994/02/02 17:45:38 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +*************** +*** 1258,1263 **** +--- 1258,1266 ---- + * History: + * + * parsestreams.c,v ++ * Revision 3.14 1994/02/02 17:45:38 kardel ++ * rcs ids fixed ++ * + * Revision 3.12 1994/01/25 19:05:30 kardel + * 94/01/23 reconcilation + * +diff -c xntpd/ntp_proto.c:1.1.1.20 xntpd/ntp_proto.c:3.22 +*** xntpd/ntp_proto.c:1.1.1.20 Thu Feb 10 00:00:36 1994 +--- xntpd/ntp_proto.c Thu Feb 10 00:00:36 1994 +*************** +*** 25,31 **** + l_fp sys_refskew; /* accumulated skew since last update */ + struct peer *sys_peer; /* our current peer */ + u_char sys_poll; /* log2 of desired system poll interval */ +! LONG sys_clock; /* second part of current time */ + LONG sys_lastselect; /* sys_clock at last synch-dist update */ + + /* +--- 25,31 ---- + l_fp sys_refskew; /* accumulated skew since last update */ + struct peer *sys_peer; /* our current peer */ + u_char sys_poll; /* log2 of desired system poll interval */ +! extern LONG sys_clock; /* second part of current time - now in systime.c */ + LONG sys_lastselect; /* sys_clock at last synch-dist update */ + + /* +diff -c xntpd/ntpd.c:1.1.1.28 xntpd/ntpd.c:3.32 +*** xntpd/ntpd.c:1.1.1.28 Thu Feb 10 00:00:43 1994 +--- xntpd/ntpd.c Thu Feb 10 00:00:43 1994 +*************** +*** 139,145 **** + (void) dup2(0, 1); + (void) dup2(0, 2); + #ifdef NTP_POSIX_SOURCE +! #if defined(SOLARIS) || defined(SYS_PTX) || defined(SYS_AUX3) || defined(SYS_AIX) + (void) setsid(); + #else + (void) setpgid(0, 0); +--- 139,145 ---- + (void) dup2(0, 1); + (void) dup2(0, 2); + #ifdef NTP_POSIX_SOURCE +! #if defined(SOLARIS) || defined(SYS_PTX) || defined(SYS_AUX3) || defined(SYS_AIX) || defined(SYS_ULTRIX) + (void) setsid(); + #else + (void) setpgid(0, 0); +diff -c xntpd/refclock_parse.c:1.1.1.10 xntpd/refclock_parse.c:3.47 +*** xntpd/refclock_parse.c:1.1.1.10 Thu Feb 10 00:00:54 1994 +--- xntpd/refclock_parse.c Thu Feb 10 00:00:54 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp + * +! * refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.47 1994/02/02 17:44:30 kardel Exp + * +! * refclock_parse.c,v 3.47 1994/02/02 17:44:30 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 3396,3401 **** +--- 3396,3404 ---- + * History: + * + * refclock_parse.c,v ++ * Revision 3.47 1994/02/02 17:44:30 kardel ++ * rcs ids fixed ++ * + * Revision 3.45 1994/01/25 19:06:27 kardel + * 94/01/23 reconcilation + * + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.12 b/usr.sbin/xntpd/patches/patch.12 new file mode 100644 index 0000000..9d7db0f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.12 @@ -0,0 +1,66 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa16020; 11 Feb 94 10:28 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa27338; + 11 Feb 94 10:12 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA00715 (5.65c-6/7.3v-FAU); Fri, 11 Feb 1994 14:26:34 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA24390 (5.65c-6/7.3m-FAU); Fri, 11 Feb 1994 14:26:31 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402111326.AA24390@faui43.informatik.uni-erlangen.de> +Subject: Re: Beep, beep, beep +To: Mills@udel.edu +Date: Fri, 11 Feb 94 14:26:25 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, + Paul_Vixie@corpmis.sjc.hw.sony.com, Piete.Brooks@cl.cam.ac.uk +In-Reply-To: <9402101138.aa10259@huey.udel.edu>; from "Mills@udel.edu" at Feb 10, 94 11:38 am +X-Mailer: ELM [version 2.3 PL11] + + +> Frank, + +> In the latest xntp3.3zz.tar.Z the Ultrix kernel finds joy of clock. +> (Whew). + +Ok, I just dug out an old allocation failure in xntpdc. While +reading respones the input buffer might be realloced(and MOVED) without +telling the rest of the system. This was fatal when stdio needed a +buffer for non terminal operation. Net result was confused output. + +Ok, here ist the patch: + +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/xntpdc/ntpdc.c,v +retrieving revision 3.17 +diff -c -r3.17 xntpdc/ntpdc.c +*** xntpdc/ntpdc.c:3.17 1994/01/28 14:07:13 +--- xntpdc/ntpdc.c 1994/02/11 13:20:56 +*************** +*** 598,605 **** + /* + * So far, so good. Copy this data into the output array. + */ +! if ((datap + datasize) > (pktdata + pktdatasize)) + growpktdata(); + memmove(datap, (char *)rpkt.data, datasize); + datap += datasize; + if (firstpkt) { +--- 598,609 ---- + /* + * So far, so good. Copy this data into the output array. + */ +! if ((datap + datasize) > (pktdata + pktdatasize)) { +! int offset = datap - pktdata; + growpktdata(); ++ *rdata = pktdata; /* might have been realloced ! */ ++ datap = pktdata + offset; ++ } + memmove(datap, (char *)rpkt.data, datasize); + datap += datasize; + if (firstpkt) { + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.13 b/usr.sbin/xntpd/patches/patch.13 new file mode 100644 index 0000000..17363e2 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.13 @@ -0,0 +1,68 @@ + +Received: from louie.udel.edu by huey.udel.edu id af16153; 14 Feb 94 7:27 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa27498; + 13 Feb 94 13:23 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA22387 (5.65c-6/7.3v-FAU); Sun, 13 Feb 1994 19:22:59 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA27117 (5.65c-6/7.3m-FAU); Sun, 13 Feb 1994 19:22:57 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402131822.AA27117@faui43.informatik.uni-erlangen.de> +Subject: compilation setup for solaris +To: mills@udel.edu +Date: Sun, 13 Feb 94 19:22:53 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave. + +Just to remove some compilation noise in solaris (NTP_POSIX_SOURCE +redefined): + +For 3.3e: +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/machines/sunos5.1,v +retrieving revision 1.4 +diff -c -r1.4 machines/sunos5.1 +*** machines/sunos5.1:1.4 1994/02/01 23:30:54 +--- machines/sunos5.1 1994/02/13 18:16:24 +*************** +*** 1,6 **** + RANLIB= : + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSTREAM -DSOLARIS -DSYS_SOLARIS -DNTP_POSIX_SOURCE + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= : + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSTREAM -DSOLARIS -DSYS_SOLARIS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/machines/sunos5.2,v +retrieving revision 1.4 +diff -c -r1.4 machines/sunos5.2 +*** machines/sunos5.2:1.4 1994/02/01 23:30:56 +--- machines/sunos5.2 1994/02/13 18:16:27 +*************** +*** 1,6 **** + RANLIB= : + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSTREAM -DSOLARIS -DSYS_SOLARIS -DADJTIME_IS_ACCURATE -DNTP_POSIX_SOURCE + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= : + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSTREAM -DSOLARIS -DSYS_SOLARIS -DADJTIME_IS_ACCURATE + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.14 b/usr.sbin/xntpd/patches/patch.14 new file mode 100644 index 0000000..775f9da --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.14 @@ -0,0 +1,116 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa16187; 14 Feb 94 7:27 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa27096; + 13 Feb 94 13:04 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA21590 (5.65c-6/7.3v-FAU); Sun, 13 Feb 1994 19:04:48 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA26947 (5.65c-6/7.3m-FAU); Sun, 13 Feb 1994 19:04:46 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402131804.AA26947@faui43.informatik.uni-erlangen.de> +Subject: patches for 3.3e +To: mills@udel.edu +Date: Sun, 13 Feb 94 19:04:42 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave. + +Here is something to make Sequent PTX happier. +I also changed the version number from 3.3zz to 3.3e. +The patch is relative to the current 3.3e version. + +diff -c Makefile:1.1.1.12 Makefile:3.47 +*** Makefile:1.1.1.12 Sun Feb 13 18:53:06 1994 +--- Makefile Sun Feb 13 18:53:07 1994 +*************** +*** 144,150 **** + @echo '###' creating XNTPRES utility + @cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" + +! util/tickadj: util/Makefile FRC + @echo + @echo '###' creating TICKADJ utility + @cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" +--- 144,150 ---- + @echo '###' creating XNTPRES utility + @cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" + +! util/tickadj: util/Makefile lib/libntp.a FRC + @echo + @echo '###' creating TICKADJ utility + @cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" +diff -c VERSION:1.1.1.7 VERSION:3.12 +*** VERSION:1.1.1.7 Sun Feb 13 18:53:10 1994 +--- VERSION Sun Feb 13 18:53:10 1994 +*************** +*** 1 **** +! version=3.3zz (beta) +--- 1 ---- +! version=3.3e (beta) +diff -c authstuff/Makefile.tmpl:1.1.1.9 authstuff/Makefile.tmpl:3.12 +*** authstuff/Makefile.tmpl:1.1.1.9 Sun Feb 13 18:53:18 1994 +--- authstuff/Makefile.tmpl Sun Feb 13 18:53:18 1994 +*************** +*** 38,50 **** + all: $(PROGRAM) + + authcert: $(CRTOBJS) $(LIB) +! $(CC) $(COPTS) -o $@ $(CRTOBJS) $(LIB) + + authspeed: $(SPDOBJS) $(LIB) + $(CC) $(COPTS) -o $@ $(SPDOBJS) $(LIB) $(COMPAT) $(RESLIB) + + keyparity: $(PAROBJS) $(LIB) +! $(CC) $(COPTS) -o $@ $(PAROBJS) $(LIB) + + makeIPFP: $(IFPOBJS) + $(CC) $(COPTS) -o $@ $(IFPOBJS) +--- 38,50 ---- + all: $(PROGRAM) + + authcert: $(CRTOBJS) $(LIB) +! $(CC) $(COPTS) -o $@ $(CRTOBJS) $(LIB) $(COMPAT) $(RESLIB) + + authspeed: $(SPDOBJS) $(LIB) + $(CC) $(COPTS) -o $@ $(SPDOBJS) $(LIB) $(COMPAT) $(RESLIB) + + keyparity: $(PAROBJS) $(LIB) +! $(CC) $(COPTS) -o $@ $(PAROBJS) $(LIB) $(COMPAT) $(RESLIB) + + makeIPFP: $(IFPOBJS) + $(CC) $(COPTS) -o $@ $(IFPOBJS) +*************** +*** 68,74 **** + $(CC) $(COPTS) -o $@ $(UNXBJS) + + md5: $(MD5OBJS) +! $(CC) $(COPTS) -o $@ $(MD5OBJS) $(LIB) + + tags: + ctags *.c *.h +--- 68,74 ---- + $(CC) $(COPTS) -o $@ $(UNXBJS) + + md5: $(MD5OBJS) +! $(CC) $(COPTS) -o $@ $(MD5OBJS) $(LIB) $(COMPAT) $(RESLIB) + + tags: + ctags *.c *.h +diff -c include/ntp_machine.h:1.1.1.12 include/ntp_machine.h:1.28 +*** include/ntp_machine.h:1.1.1.12 Sun Feb 13 18:54:32 1994 +--- include/ntp_machine.h Sun Feb 13 18:54:32 1994 +*************** +*** 457,462 **** +--- 457,463 ---- + #define HAVE_READKMEM + #define UDP_WILDCARD_DELIVERY + #define NTP_POSIX_SOURCE ++ #define memmove(x, y, z) memcpy(x, y, z) + struct timezone { int __0; }; /* unused placebo */ + /* + * no comment !@! +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.15 b/usr.sbin/xntpd/patches/patch.15 new file mode 100644 index 0000000..1ef861d --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.15 @@ -0,0 +1,39 @@ + +Received: from louie.udel.edu by huey.udel.edu id aq16153; 14 Feb 94 7:28 EST +Received: from jagubox.gsfc.nasa.gov by louie.udel.edu id aa24615; + 14 Feb 94 6:34 EST +Received: by jagubox.gsfc.nasa.gov (Smail3.1.28.1 #1) + id m0pW1Zk-000C8UC; Mon, 14 Feb 94 06:34 EST +Message-Id: <m0pW1Zk-000C8UC@jagubox.gsfc.nasa.gov> +From: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +Subject: xntp 3.3e (or is that zz ;) ) +To: Mills@udel.edu +Date: Mon, 14 Feb 1994 06:34:52 -0500 (EST) +Reply-To: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +In-Reply-To: <9308051324.aa24396@huey.udel.edu> from "Mills@udel.edu" at Aug 5, 93 01:24:24 pm +X-Mailer: ELM [version 2.4 PL23] +Content-Type: text +Content-Length: 621 + +This latest version requires the NTP_NEED_BOPS define in ntp_machine.h for +A/UX: + +*** ntp_machine.h.orig Mon Feb 14 06:34:34 1994 +--- ntp_machine.h Mon Feb 14 06:20:57 1994 +*************** +*** 299,304 **** +--- 299,305 ---- + #define HAVE_BSD_TTYS + #define LOG_NTP LOG_LOCAL1 + #define HAVE_SIGNALED_IO ++ #define NTP_NEED_BOPS + #ifndef STR_SYSTEM + #define STR_SYSTEM "UNIX/AUX" + #endif +-- +#include <std/disclaimer.h> + Jim Jagielski | + jim@jagubox.gsfc.nasa.gov | "Ahh... west and wewaxation at wast" + NASA/GSFC, Code 734.4 | Elmer Fudd + Greenbelt, MD 20771 | + diff --git a/usr.sbin/xntpd/patches/patch.16 b/usr.sbin/xntpd/patches/patch.16 new file mode 100644 index 0000000..909f0c7 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.16 @@ -0,0 +1,267 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa25712; 15 Feb 94 17:54 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa18345; + 15 Feb 94 17:51 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA15109 (5.65c-6/7.3v-FAU); Tue, 15 Feb 1994 23:50:53 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA17375 (5.65c-6/7.3m-FAU); Tue, 15 Feb 1994 23:50:51 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402152250.AA17375@faui43.informatik.uni-erlangen.de> +Subject: fixed for parse kernel stuff... +To: mills@udel.edu +Date: Tue, 15 Feb 94 23:50:47 MET +X-Mailer: ELM [version 2.3 PL11] + + +Hi, Dave ! + +Here are some fixes for the PARSE kernel modules. Basically they +fix a memory leak on an open error condition and pronounce the +Solaris 2.x stream module MT safe. + +Well, actually I should put something for you to eat here 8-). + +RCS file: /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v +retrieving revision 1.1.1.7 +diff -c -r1.1.1.7 parsesolaris.c +*** parse/parsesolaris.c:1.1.1.7 1994/02/12 09:53:42 +--- parse/parsesolaris.c 1994/02/15 22:20:51 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.12 1994/02/02 17:45:35 kardel Exp + * +! * parsesolaris.c,v 3.12 1994/02/02 17:45:35 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.15 1994/02/15 22:20:51 kardel Exp + * +! * parsesolaris.c,v 3.15 1994/02/15 22:20:51 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +*************** +*** 19,25 **** + */ + + #ifndef lint +! static char rcsid[] = "parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp"; + #endif + + /* +--- 19,25 ---- + */ + + #ifndef lint +! static char rcsid[] = "parsesolaris.c,v 3.15 1994/02/15 22:20:51 kardel Exp"; + #endif + + /* +*************** +*** 65,71 **** + { + "parse", /* module name */ + &parseinfo, /* module information */ +! D_NEW, /* not clean yet */ + /* lock ptr */ + }; + +--- 65,71 ---- + { + "parse", /* module name */ + &parseinfo, /* module information */ +! D_NEW|D_MP|D_MTQPAIR, /* exclusive for q pair */ + /* lock ptr */ + }; + +*************** +*** 139,145 **** + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.12"; + char *s, *S, *t; + + /* +--- 139,145 ---- + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.15"; + char *s, *S, *t; + + /* +*************** +*** 413,418 **** +--- 413,420 ---- + parse->parse_ppsclockev.tv.tv_usec = 0; + parse->parse_ppsclockev.serial = 0; + ++ qprocson(q); ++ + parseprintf(DD_OPEN,("parse: OPEN - initializing io subsystem q=%x\n", q)); + + if (!parse_ioinit(&parse->parse_io)) +*************** +*** 420,425 **** +--- 422,429 ---- + /* + * ok guys - beat it + */ ++ qprocsoff(q); ++ + kmem_free((caddr_t)parse, sizeof(parsestream_t)); + + parsebusy--; +*************** +*** 441,447 **** + */ + if (!notice) + { +! printf("%s: Copyright (c) 1991-1993, Frank Kardel\n", modlstrmod.strmod_linkinfo); + notice = 1; + } + +--- 445,451 ---- + */ + if (!notice) + { +! printf("%s: Copyright (c) 1991-1994, Frank Kardel\n", modlstrmod.strmod_linkinfo); + notice = 1; + } + +*************** +*** 449,455 **** +--- 453,464 ---- + } + else + { ++ qprocsoff(q); ++ ++ kmem_free((caddr_t)parse, sizeof(parsestream_t)); ++ + parsebusy--; ++ + return EIO; + } + } +*************** +*** 462,467 **** +--- 471,478 ---- + + parseprintf(DD_CLOSE,("parse: CLOSE\n")); + ++ qprocsoff(q); ++ + s = splhigh(); + + if (parse->parse_dqueue) +*************** +*** 1178,1184 **** + /* + * History: + * +! * parsesolaris.c,v + * Revision 3.12 1994/02/02 17:45:35 kardel + * rcs ids fixed + * +--- 1189,1204 ---- + /* + * History: + * +! * parsesolaris.c,v +! * Revision 3.15 1994/02/15 22:20:51 kardel +! * rcsid fixed +! * +! * Revision 3.14 1994/02/15 22:06:04 kardel +! * added qprocsx & flags for MT capability +! * +! * Revision 3.13 1994/02/13 19:16:47 kardel +! * updated verbose Copyright message +! * + * Revision 3.12 1994/02/02 17:45:35 kardel + * rcs ids fixed + * +RCS file: /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v +retrieving revision 1.1.1.8 +diff -c -r1.1.1.8 parsestreams.c +*** parse/parsestreams.c:1.1.1.8 1994/02/12 09:53:45 +--- parse/parsestreams.c 1994/02/15 22:39:50 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.14 1994/02/02 17:45:38 kardel Exp + * +! * parsestreams.c,v 3.14 1994/02/02 17:45:38 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.16 1994/02/15 22:39:50 kardel Exp + * +! * parsestreams.c,v 3.16 1994/02/15 22:39:50 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +*************** +*** 527,533 **** + */ + if (!notice) + { +! printf("%s: Copyright (c) 1991-1993, Frank Kardel\n", parsesync_vd.Drv_name); + notice = 1; + } + +--- 527,533 ---- + */ + if (!notice) + { +! printf("%s: Copyright (c) 1991-1994, Frank Kardel\n", parsesync_vd.Drv_name); + notice = 1; + } + +*************** +*** 535,540 **** +--- 535,542 ---- + } + else + { ++ kmem_free((caddr_t)parse, sizeof(parsestream_t)); ++ + #ifdef VDDRV + parsebusy--; + #endif +*************** +*** 1257,1263 **** + /* + * History: + * +! * parsestreams.c,v + * Revision 3.14 1994/02/02 17:45:38 kardel + * rcs ids fixed + * +--- 1259,1271 ---- + /* + * History: + * +! * parsestreams.c,v +! * Revision 3.16 1994/02/15 22:39:50 kardel +! * memory leak on open failure closed +! * +! * Revision 3.15 1994/02/13 19:16:50 kardel +! * updated verbose Copyright message +! * + * Revision 3.14 1994/02/02 17:45:38 kardel + * rcs ids fixed + * + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.17 b/usr.sbin/xntpd/patches/patch.17 new file mode 100644 index 0000000..f98f754 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.17 @@ -0,0 +1,50 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa00480; 16 Feb 94 12:17 EST +Received: from quack.kfu.com by louie.udel.edu id aa24950; 16 Feb 94 12:12 EST +Received: by quack.kfu.com id AA03532 + (5.65c8/IDA-1.4.4 for mills@udel.edu); Wed, 16 Feb 1994 09:12:04 -0800 +Date: Wed, 16 Feb 1994 09:12:04 -0800 +From: Nick Sayer <nsayer@quack.kfu.com> +Message-Id: <199402161712.AA03532@quack.kfu.com> +To: mills@udel.edu +Subject: CHU debug patch + +I don't know what you think about this, but I thought I'd pass it +along. I'm sorry I don't have a proper 'patch' format patch, but +it should be aparent from the context where this goes in refclock_chu.c: + + return; + } + + /* + * Get the clock this applies to and a pointer to the data + */ + chu = (struct chuunit *)rbufp->recv_srcclock; + chuc = (struct chucode *)&rbufp->recv_space; + chu->responses++; + chu->lastupdate = current_time; + + /* + * Just for fun, we can debug the whole frame if + * we want. + */ + +#ifndef NO_CHU_DEBUG + syslog(LOG_DEBUG,"CHU %s packet:",(chuc->chutype==CHU_YEAR)? + "year":"time"); + for (i=0;i<NCHUCHARS;i++) + { + char c[64]; + + sprintf(c,"%c%c %s",hexstring[chuc->codechars[i]&0xf], + hexstring[chuc->codechars[i]>>4], + ctime(&(chuc->codetimes[i].tv_sec))); + c[strlen(c)-1]=0; /* ctime() adds a damn \n */ + syslog(LOG_DEBUG,"%s .%06d",c,chuc->codetimes[i].tv_usec); + } +#endif + + /* + * At this point we're assured that both halves of the + * data match because of what the kernel has done. + diff --git a/usr.sbin/xntpd/patches/patch.18 b/usr.sbin/xntpd/patches/patch.18 new file mode 100644 index 0000000..e81eb62 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.18 @@ -0,0 +1,99 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa00679; 16 Feb 94 13:00 EST +Received: from spatula.csv.warwick.ac.uk by louie.udel.edu id aa26092; + 16 Feb 94 12:48 EST +Date: Wed, 16 Feb 1994 17:47:50 GMT +From: Ian Dickinson <cudep@csv.warwick.ac.uk> +Message-Id: <7051.199402161747@spatula.csv.warwick.ac.uk> +Received: from localhost by spatula.csv.warwick.ac.uk + id RAA07051; Wed, 16 Feb 1994 17:47:50 GMT +In-Reply-To: Mills@udel.edu + "Re: xntp sunos5 config" (Feb 16, 10:50am) +X-Mailer: Mail User's Shell (7.2.4 2/2/92) +To: Mills@udel.edu +Subject: Re: xntp sunos5 config +MIME-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII + +On Feb 16, 10:50am, Mills@udel.edu wrote: +} Subject: Re: xntp sunos5 config + +BTW, 3.3f seems to work fine on an SC2000 sunos5.3 (including the patch below) + +> Your message did not say in which file sunos5.1 or sunos5.2 or both +> you wanted the -DLOCK_PROCESS. I'll wait for your patches. + +I've never done any heavy work on a sunos5.1 machine, so I can't remember if +plock() exists there. I *think* sunso5.2 will work with it. +Perhaps it's time to create a sunos5.3 file which has -DLOCK_PROCESS and is +otherwise identical to sunos5.2, though this is getting silly for supposedly +a single SVR4-based operating system. + +As far as I'm aware, the choice between plock() and mlockall() can be done +with feature testing and doesn't need a seperate #define. + +This patch applies to 3.3b and 3.3f (with line fuzz). +I'm certainly not sure this is the best way to do this, but it does work here. +Perhaps it's worth asking around how widely this works in sunos5.x + +*** 1.1 1994/02/01 17:16:13 +--- xntpd/ntpd.c 1994/02/16 16:32:47 +*************** +*** 28,35 **** +--- 28,39 ---- + #include "ntp_stdlib.h" + + #ifdef LOCK_PROCESS ++ #ifdef SYS_SOLARIS ++ #include <sys/mman.h> ++ #else + #include <sys/lock.h> + #endif ++ #endif + + /* + * Signals we catch for debugging. If not debugging we ignore them. +*************** +*** 218,229 **** + if (rtprio(0, 120) < 0) + syslog(LOG_ERR, "rtprio() error: %m"); + #else +! #if defined(PROCLOCK) && defined(LOCK_PROCESS) + /* + * lock the process into memory + */ + if (plock(PROCLOCK) < 0) + syslog(LOG_ERR, "plock(): %m"); + #endif + #if defined(NTPD_PRIO) && NTPD_PRIO != 0 + /* +--- 222,243 ---- + if (rtprio(0, 120) < 0) + syslog(LOG_ERR, "rtprio() error: %m"); + #else +! #if defined(LOCK_PROCESS) +! #if defined(MCL_CURRENT) && defined(MCL_FUTURE) +! /* +! * lock the process into memory +! */ +! if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) +! syslog(LOG_ERR, "mlockall(): %m"); +! #else +! #if defined(PROCLOCK) + /* + * lock the process into memory + */ + if (plock(PROCLOCK) < 0) + syslog(LOG_ERR, "plock(): %m"); ++ #endif ++ #endif + #endif + #if defined(NTPD_PRIO) && NTPD_PRIO != 0 + /* + + + +Cheers, +-- +Ian + diff --git a/usr.sbin/xntpd/patches/patch.19 b/usr.sbin/xntpd/patches/patch.19 new file mode 100644 index 0000000..396f16f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.19 @@ -0,0 +1,599 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa08047; 17 Feb 94 15:26 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa17403; + 17 Feb 94 15:15 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA04056 (5.65c-6/7.3v-FAU); Thu, 17 Feb 1994 21:14:43 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA29721 (5.65c-6/7.3m-FAU); Thu, 17 Feb 1994 21:14:39 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402172014.AA29721@faui43.informatik.uni-erlangen.de> +Subject: Re: Beep, beep, beep +To: Mills@udel.edu +Date: Thu, 17 Feb 94 21:14:33 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, + Paul_Vixie@corpmis.sjc.hw.sony.com, Piete.Brooks@cl.cam.ac.uk +In-Reply-To: <9402171155.aa07032@huey.udel.edu>; from "Mills@udel.edu" at Feb 17, 94 11:55 am +X-Mailer: ELM [version 2.3 PL11] + + +> Guys, + +> Trouble with HAVE_BSD_TTYS on a VAX + +> ### creating NTP library +> cc -O -DDES -DXNTP_LITTLE_ENDIAN -DSYS_VAX -DDEBUG -DREFCLOCK -I../include -c atoint.c +> "../include/ntp_machine.h", line 570: syntax error +Yupp, nit TTY define set. + +> "atoint.c", line 12: redeclaration of ival +> "atoint.c", line 13: syntax error +> ... + +Well, I guess the trouble is more that none of the tty defines was +defined. For the sake of completeness i have added the tty defines to +(hopefully) all machine/* files. Some configurations were unknown to +me so I assumed HAVE_BSD_TTYS. Would be nice if someone could run +the whole suite 8-). +I have put the tty defines into the machine files so that the +refconf scripts can pick up the define without having to run the +preprocessor to dig out the configuration. +Hope this works. + +diff -c include/ntp_machine.h:1.1.1.13 include/ntp_machine.h:1.30 +*** include/ntp_machine.h:1.1.1.13 Thu Feb 17 20:17:59 1994 +--- include/ntp_machine.h Thu Feb 17 20:17:59 1994 +*************** +*** 44,54 **** + WHICH TERMINAL MODEL TO USE - I would assume HAVE_TERMIOS if + NTP_POSIX_SOURCE was set but can't. The + posix tty driver is too restrictive on most systems. +! It defined if you define STREAMS. + + HAVE_SYSV_TTYS - Use SYSV termio.h + HAVE_BSD_TTYS - Use BSD stty.h +- HAVE_TERMIOS - Use POSIX termios.h + + THIS MAKES PORTS TO NEW SYSTEMS EASY - You only have to wory about + kernel mucking. +--- 44,59 ---- + WHICH TERMINAL MODEL TO USE - I would assume HAVE_TERMIOS if + NTP_POSIX_SOURCE was set but can't. The + posix tty driver is too restrictive on most systems. +! It is defined if you define STREAMS. + ++ We do not put these defines in the ntp_machine.h as some systems ++ offer multiple interfaces and refclock configuration likes to ++ peek into the configuration defines for tty model restrictions. ++ Thus all tty definitions should be in the files in the machines directory. ++ ++ HAVE_TERMIOS - Use POSIX termios.h + HAVE_SYSV_TTYS - Use SYSV termio.h + HAVE_BSD_TTYS - Use BSD stty.h + + THIS MAKES PORTS TO NEW SYSTEMS EASY - You only have to wory about + kernel mucking. +*************** +*** 296,302 **** + #define FORCE_NTPDATE_STEP + #define RETSIGTYPE void + #define HAVE_ATT_SETPGRP +- #define HAVE_BSD_TTYS + #define LOG_NTP LOG_LOCAL1 + #define HAVE_SIGNALED_IO + #define NTP_NEED_BOPS +--- 301,306 ---- +*************** +*** 352,359 **** + #ifndef STR_SYSTEM + #define STR_SYSTEM "UNIX/BSDI" + #endif +- #define HAVE_BSD_TTYS +- #define HAVE_TERMIOS + #endif + + /* +--- 356,361 ---- +*************** +*** 441,449 **** + */ + #if defined(SYS_PTX) + #define NO_SIGNED_CHAR_DECL +- #ifndef HAVE_SYSV_TTYS +- #define HAVE_SYSV_TTYS +- #endif + #define STREAMS_TLI + #define HAVE_ATT_SETPGRP + #define HAVE_SIGNALED_IO +--- 443,448 ---- +*************** +*** 528,534 **** + #define HAVE_BSD_NICE + #define NOKMEM + #define HAVE_SIGNALED_IO +- #define HAVE_BSD_TTYS + #define NTP_SYSCALLS_STD + #define USE_PROTOTYPES + #define UDP_WILDCARD_DELIVERY +--- 527,532 ---- +*************** +*** 565,570 **** +--- 563,582 ---- + && !defined(HAVE_NO_NICE) + ERROR You_must_define_one_of_the_HAVE_xx_NICE_defines + #endif ++ ++ /* ++ * use only one tty model - no use in initialising ++ * a tty in three ways ++ * HAVE_TERMIOS is preferred over HAVE_SYSV_TTYS over HAVE_BSD_TTYS ++ */ ++ #ifdef HAVE_TERMIOS ++ #undef HAVE_BSD_TTYS ++ #undef HAVE_SYSV_TTYS ++ #endif ++ ++ #ifdef HAVE_SYSV_TTYS ++ #undef HAVE_BSD_TTYS ++ #endif + + #if !defined(HAVE_SYSV_TTYS) \ + && !defined(HAVE_BSD_TTYS) \ +diff -c machines/aux2:1.1.1.2 machines/aux2:1.4 +*** machines/aux2:1.1.1.2 Thu Feb 17 20:19:50 1994 +--- machines/aux2 Thu Feb 17 20:19:50 1994 +*************** +*** 1,6 **** + RANLIB= true # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_AUX2 + AUTHDEFS= -DDES -DMD5 -DFASTMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= true # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_AUX2 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 -DFASTMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/aux3:1.1.1.2 machines/aux3:1.4 +*** machines/aux3:1.1.1.2 Thu Feb 17 20:19:52 1994 +--- machines/aux3 Thu Feb 17 20:19:52 1994 +*************** +*** 1,6 **** + RANLIB= true # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_AUX3 + AUTHDEFS= -DDES -DMD5 -DFASTMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= true # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_AUX3 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 -DFASTMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/bsdi:1.1.1.4 machines/bsdi:1.6 +*** machines/bsdi:1.1.1.4 Thu Feb 17 20:19:53 1994 +--- machines/bsdi Thu Feb 17 20:19:53 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_BSDI + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lkvm +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_BSDI -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lkvm +diff -c machines/convexos10:1.1.1.2 machines/convexos10:1.3 +*** machines/convexos10:1.1.1.2 Thu Feb 17 20:19:54 1994 +--- machines/convexos10 Thu Feb 17 20:19:54 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_CONVEXOS10 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + RESLIB= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_CONVEXOS10 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + RESLIB= +diff -c machines/convexos9:1.1.1.2 machines/convexos9:1.3 +*** machines/convexos9:1.1.1.2 Thu Feb 17 20:19:55 1994 +--- machines/convexos9 Thu Feb 17 20:19:56 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_CONVEXOS9 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + RESLIB= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_CONVEXOS9 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + RESLIB= +diff -c machines/decosf1:1.1.1.2 machines/decosf1:1.4 +*** machines/decosf1:1.1.1.2 Thu Feb 17 20:19:57 1994 +--- machines/decosf1 Thu Feb 17 20:19:57 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSTREAM -DSYS_DECOSF1 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSTREAM -DSYS_DECOSF1 -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/dell.svr4:1.1.1.1 machines/dell.svr4:1.2 +*** machines/dell.svr4:1.1.1.1 Thu Feb 17 20:19:58 1994 +--- machines/dell.svr4 Thu Feb 17 20:19:58 1994 +*************** +*** 1,7 **** + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SVR4 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,7 ---- + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SVR4 -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/domainos:1.1.1.1 machines/domainos:1.2 +*** machines/domainos:1.1.1.1 Thu Feb 17 20:19:59 1994 +--- machines/domainos Thu Feb 17 20:19:59 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_DOMAINOS -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE -D_INCLUDE_POSIX_SOURCE + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_DOMAINOS -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE -D_INCLUDE_POSIX_SOURCE -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/i386:1.1.1.2 machines/i386:1.3 +*** machines/i386:1.1.1.2 Thu Feb 17 20:20:04 1994 +--- machines/i386 Thu Feb 17 20:20:05 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_I386 + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_I386 -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/i386svr4:1.1.1.3 machines/i386svr4:1.4 +*** machines/i386svr4:1.1.1.3 Thu Feb 17 20:20:05 1994 +--- machines/i386svr4 Thu Feb 17 20:20:05 1994 +*************** +*** 1,7 **** + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SVR4 -DSTREAMS_TLI + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,7 ---- + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SVR4 -DSTREAMS_TLI -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/mips:1.1.1.2 machines/mips:1.3 +*** machines/mips:1.1.1.2 Thu Feb 17 20:20:10 1994 +--- machines/mips Thu Feb 17 20:20:10 1994 +*************** +*** 1,7 **** + #RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK + DEFS= +! AUTHDEFS= -DDES -DMD5 -DSYS_MIPS + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lmld + RESLIB= +--- 1,7 ---- + #RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK + DEFS= +! AUTHDEFS= -DDES -DMD5 -DSYS_MIPS -DHAVE_BSD_TTYS + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lmld + RESLIB= +diff -c machines/next:1.1.1.1 machines/next:1.2 +*** machines/next:1.1.1.1 Thu Feb 17 20:20:12 1994 +--- machines/next Thu Feb 17 20:20:13 1994 +*************** +*** 1,6 **** + RANLIB= ranlib -c -s + DEFS= -DSYS_NEXT +! AUTHDEFS= -DDES -DMD5 -DFAST_MD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= +--- 1,6 ---- + RANLIB= ranlib -c -s + DEFS= -DSYS_NEXT +! AUTHDEFS= -DDES -DMD5 -DFAST_MD5 -DHAVE_BSD_TTYS + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= +diff -c machines/sequent:1.1.1.3 machines/sequent:1.4 +*** machines/sequent:1.1.1.3 Thu Feb 17 20:20:14 1994 +--- machines/sequent Thu Feb 17 20:20:14 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DHAVE_READ_KMEM -DSYS_SEQUENT + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DHAVE_READ_KMEM -DSYS_SEQUENT -DHAVE_BSD_TTYS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/sinix-m:1.1.1.2 machines/sinix-m:1.5 +*** machines/sinix-m:1.1.1.2 Thu Feb 17 20:20:15 1994 +--- machines/sinix-m Thu Feb 17 20:20:15 1994 +*************** +*** 1,6 **** + RANLIB= : + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_SINIXM + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +--- 1,6 ---- + RANLIB= : + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_SINIXM -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= +diff -c machines/sony:1.1.1.2 machines/sony:1.3 +*** machines/sony:1.1.1.2 Thu Feb 17 20:20:16 1994 +--- machines/sony Thu Feb 17 20:20:16 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SONY + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lmld +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_SONY -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= -lmld +diff -c machines/svr4:1.1.1.4 machines/svr4:1.4 +*** machines/svr4:1.1.1.4 Thu Feb 17 20:20:20 1994 +--- machines/svr4 Thu Feb 17 20:20:20 1994 +*************** +*** 1,6 **** + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V +! DEFS= -DSYS_SVR4 -DSTREAMS_TLI + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= + DAEMONLIBS= -lnet -lnsl -lsocket -lelf +--- 1,6 ---- + SHELL= /bin/sh + RANLIB= ls # ar does the work of ranlib under System V +! DEFS= -DSYS_SVR4 -DSTREAMS_TLI -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= + DAEMONLIBS= -lnet -lnsl -lsocket -lelf +diff -c machines/vax:1.1.1.2 machines/vax:1.3 +*** machines/vax:1.1.1.2 Thu Feb 17 20:20:23 1994 +--- machines/vax Thu Feb 17 20:20:23 1994 +*************** +*** 1,6 **** + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_VAX + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= +--- 1,6 ---- + RANLIB= ranlib + DEFS_LOCAL= -DREFCLOCK +! DEFS= -DSYS_VAX -DHAVE_BSD_TTYS + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= +RCS file: /src/NTP/REPOSITORY/v3/parse/README.new_clocks,v +retrieving revision 1.1.1.2 +retrieving revision 3.3 +diff -c -r1.1.1.2 -r3.3 +*** parse/README.new_clocks:1.1.1.2 1994/02/12 09:53:48 +--- parse/README.new_clocks 1994/02/17 20:09:58 +*************** +*** 1,7 **** +! Here is an attempt to scetch out what you need to do in order to + add another clock to the parse driver: + +! Prerequsites: + - Does the system you want the clock connect to have + termio.h or termios.h ? (You need that for the parse driver) + +--- 1,7 ---- +! 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 + termio.h or termios.h ? (You need that for the parse driver) + +*************** +*** 32,38 **** + 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 the is still a + chance the the generated time is still ok. + + PARSEB_DST DST in effect (informational only) +--- 32,38 ---- + 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) +*************** +*** 53,59 **** + them for examples. The basic structure is: + + struct clockformat <yourclock>_format = { +! lots of field for you to fill out (see below) + }; + + static cvt_<yourclock>() +--- 53,59 ---- + them for examples. The basic structure is: + + struct clockformat <yourclock>_format = { +! lots of fields for you to fill out (see below) + }; + + static cvt_<yourclock>() +*************** +*** 122,132 **** + 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 referenc to the clockformat + structure must be put into parse_conf.c. + +- +- + TTY setup and initialisation/configuration will be done in + xntpd/refclock_parse.c + +--- 122,130 ---- + 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. + + TTY setup and initialisation/configuration will be done in + xntpd/refclock_parse.c + +*************** +*** 135,141 **** + termio*.h c_cflag macros. + + - in xntpd/refclock_parse.c fill out a new the struct clockinfo element +! (allocates a new "IP" address - see comments) + (see all the other clocks for example) + struct clockinfo + { +--- 133,139 ---- + 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 + { +*************** +*** 188,199 **** + + + Well, this is very sketchy, i know. But I hope it helps a little bit. +! The best way is to look which clock comes closet to your and tweak that + code. +! Two sorts of clocks are used with parse. Clocks that automatically sent +! thier time code (once a second) do not nee entries in the poll routines because +! they sent the data all the time. The second sort are the clocks that need a +! command sent to then in order to reply with a time code (like the Trimble + clock). + + For questions: kardel@informatik.uni-erlangen.de. Please include +--- 186,197 ---- + + + 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 +RCS file: /src/NTP/REPOSITORY/v3/parse/README.parse_clocks,v +retrieving revision 1.1.1.1 +retrieving revision 3.2 +diff -c -r1.1.1.1 -r3.2 +*** parse/README.parse_clocks:1.1.1.1 1994/01/01 00:00:00 +--- parse/README.parse_clocks 1994/02/17 20:10:02 +*************** +*** 1,4 **** +! The parse driver currently supports several clock 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 +--- 1,4 ---- +! 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 +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.2 b/usr.sbin/xntpd/patches/patch.2 new file mode 100644 index 0000000..50a10235 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.2 @@ -0,0 +1,129 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa12171; 26 Jan 94 17:04 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa15368; + 26 Jan 94 17:00 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA17953 (5.65c-6/7.3v-FAU); Wed, 26 Jan 1994 23:00:40 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA29710 (5.65c-6/7.3m-FAU); Wed, 26 Jan 1994 23:00:37 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199401262200.AA29710@faui43.informatik.uni-erlangen.de> +Subject: Re: Solaribum +To: Mills@udel.edu +Date: Wed, 26 Jan 94 23:00:31 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, Piete.Brooks@cl.cam.ac.uk, + Paul_Vixie@corpmis.sjc.hw.sony.com +In-Reply-To: <9401261207.aa10860@huey.udel.edu>; from "Mills@udel.edu" at Jan 26, 94 12:07 pm +X-Mailer: ELM [version 2.3 PL11] + + +Sorry, guys - i tripped over a backward compatibility +variable. Thus the second patch: + +diff -c include/ntp_control.h:3.6 include/ntp_control.h:3.7 +*** include/ntp_control.h:3.6 Wed Jan 26 22:57:52 1994 +--- include/ntp_control.h Wed Jan 26 22:57:52 1994 +*************** +*** 204,210 **** + #define CP_SENT 32 + #define CP_FILTERROR 33 + #define CP_FLASH 34 +! #define CP_VARLIST 35 + + #define CP_MAXCODE CP_VARLIST + +--- 204,211 ---- + #define CP_SENT 32 + #define CP_FILTERROR 33 + #define CP_FLASH 34 +! #define CP_DISP 35 +! #define CP_VARLIST 36 + + #define CP_MAXCODE CP_VARLIST + +diff -c xntpd/ntp_control.c:3.21 xntpd/ntp_control.c:3.22 +*** xntpd/ntp_control.c:3.21 Wed Jan 26 22:58:30 1994 +--- xntpd/ntp_control.c Wed Jan 26 22:58:31 1994 +*************** +*** 175,181 **** + { CP_SENT, RO, "sent" }, /* 32 */ + { CP_FILTERROR, RO, "filterror" }, /* 33 */ + { CP_FLASH, RO, "flash" }, /* 34 */ +! { CP_VARLIST, RO, "peer_var_list" }, /* 35 */ + { 0, EOV, "" } + }; + +--- 175,182 ---- + { CP_SENT, RO, "sent" }, /* 32 */ + { CP_FILTERROR, RO, "filterror" }, /* 33 */ + { CP_FLASH, RO, "flash" }, /* 34 */ +! { CP_DISP, PADDING,"" }, /* 35 */ +! { CP_VARLIST, RO, "peer_var_list" }, /* 36 */ + { 0, EOV, "" } + }; + +*************** +*** 1298,1303 **** +--- 1299,1307 ---- + + for (k = sys_var; !(k->flags &EOV); k++) + { ++ if (k->flags & PADDING) ++ continue; ++ + i = strlen(k->text); + if (s+i+1 >= be) + break; +*************** +*** 1309,1314 **** +--- 1313,1321 ---- + + for (k = ext_sys_var; k && !(k->flags &EOV); k++) + { ++ if (k->flags & PADDING) ++ continue; ++ + ss = k->text; + if (!ss) + continue; +*************** +*** 1484,1489 **** +--- 1491,1499 ---- + + for (k = peer_var; !(k->flags &EOV); k++) + { ++ if (k->flags & PADDING) ++ continue; ++ + i = strlen(k->text); + if (s+i+1 >= be) + break; +*************** +*** 1594,1599 **** +--- 1604,1612 ---- + + for (k = clock_var; !(k->flags &EOV); k++) + { ++ if (k->flags & PADDING) ++ continue; ++ + i = strlen(k->text); + if (s+i+1 >= be) + break; +*************** +*** 1605,1610 **** +--- 1618,1626 ---- + + for (k = clock->kv_list; k && !(k->flags &EOV); k++) + { ++ if (k->flags & PADDING) ++ continue; ++ + ss = k->text; + if (!ss) + continue; +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.20 b/usr.sbin/xntpd/patches/patch.20 new file mode 100644 index 0000000..3975507 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.20 @@ -0,0 +1,1031 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa03713; 20 Feb 94 10:36 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa02155; + 20 Feb 94 10:26 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA03871 (5.65c-6/7.3v-FAU); Sun, 20 Feb 1994 16:26:26 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA04409 (5.65c-6/7.3m-FAU); Sun, 20 Feb 1994 16:26:24 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402201526.AA04409@faui43.informatik.uni-erlangen.de> +Subject: 3.3g patches +To: mills@udel.edu +Date: Sun, 20 Feb 94 16:26:19 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave, + +here are some more patches. They fix the following: + - nroff macros from John Line + - parse add/delete leap second (as opposed to just add second) + - some rcs ids + - linux support + - xntpd.8 leap variable documentation + +And here we go... + +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/compilers/linux.gcc,v +retrieving revision 1.2 +diff -c -r1.2 linux.gcc +*** 1.2 1993/10/10 23:10:03 +--- compilers/linux.gcc 1994/02/20 13:03:27 +*************** +*** 1,2 **** + COMPILER= gcc -DUSE_PROTOTYPES -Wall +! COPTS= -O6 -finline-functions -fomit-frame-pointer +--- 1,2 ---- + COMPILER= gcc -DUSE_PROTOTYPES -Wall +! COPTS= -O2 -finline-functions -fomit-frame-pointer +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/notes.txt,v +retrieving revision 1.3 +diff -c -r1.3 notes.txt +*** 1.3 1993/08/24 21:24:55 +--- doc/notes.txt 1994/02/20 11:57:24 +*************** +*** 785,791 **** + 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 slighly different encoding than the + usual interpretation: + + Value Action +--- 785,791 ---- + 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 +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/ntpdate.8,v +retrieving revision 3.0 +diff -c -r3.0 ntpdate.8 +*** 3.0 1992/08/14 15:11:44 +--- doc/ntpdate.8 1994/02/20 11:27:53 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/ntpq.8,v +retrieving revision 3.3 +diff -c -r3.3 ntpq.8 +*** 3.3 1993/10/22 14:26:57 +--- doc/ntpq.8 1994/02/20 11:27:55 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/ntptrace.8,v +retrieving revision 1.1.1.2 +diff -c -r1.1.1.2 ntptrace.8 +*** 1.1.1.2 1993/01/26 18:55:43 +--- doc/ntptrace.8 1994/02/20 11:27:58 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/tickadj.8,v +retrieving revision 3.0 +diff -c -r3.0 tickadj.8 +*** 3.0 1992/08/14 15:11:53 +--- doc/tickadj.8 1994/02/20 11:28:00 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/xntpd.8,v +retrieving revision 3.24 +diff -c -r3.24 xntpd.8 +*** 3.24 1994/02/02 16:42:25 +--- doc/xntpd.8 1994/02/20 11:57:28 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +*************** +*** 374,380 **** + Certain changes can be made to the + .I xntpd + server via mode 6 control messages, in particular the setting of +! leap second indications in a server with a radio clock. The + .B controlkey + statement specifies an encription key number to be used for authenticating + such messages. Omitting this statement will cause control messages +--- 374,381 ---- + Certain changes can be made to the + .I xntpd + server via mode 6 control messages, in particular the setting of +! leap second indications in a server with a radio clock. +! The + .B controlkey + statement specifies an encription key number to be used for authenticating + such messages. Omitting this statement will cause control messages +*************** +*** 1401,1406 **** +--- 1402,1432 ---- + If flag3 is set, then the sample information is dumped. + If flag4 is set, then the input data is smoothed, and all data + points are used. ++ .PP ++ .SH 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 ++ .I setvar ++ directive or the leap warning variables. The leap warning bits that can be ++ set in the ++ .B leapwarning ++ variable (up to one month ahead). Both, the ++ .B leapwarning and in the ++ .B leapindication ++ variable, have a slightly different encoding than the usual ++ .B leap ++ bits interpretation: ++ .P ++ .Ip 00 8 ++ The daemon passes the leap bits of its synchronisation source (usual mode of ++ operation). ++ .Ip 01/10 8 ++ A leap second is added/deleted (operator forced leap second). ++ .Ip 11 8 ++ Leap information from the sychronisation source is ignored (thus LEAP_NOWARNING ++ is passed on). ++ .PP + .SH FILES + .Ip /etc/ntp.conf 20 + the default name of the configuration file +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/doc/xntpdc.8,v +retrieving revision 3.4 +diff -c -r3.4 xntpdc.8 +*** 3.4 1994/02/02 15:54:14 +--- doc/xntpdc.8 1994/02/20 11:28:06 +*************** +*** 20,32 **** + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Bell System Logo is used as a dummy character. + ''' +! .tr \(bs-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(bs- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +--- 20,32 ---- + ''' + ''' Set up \*(-- to give an unbreakable dash; + ''' string Tr holds user defined translation string. +! ''' Greek uppercase omega is used as a dummy character. + ''' +! .tr \(*W-|\(bv\*(Tr + .ie n \{\ +! .ds -- \(*W- +! .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +! .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch + .ds L" "" + .ds R" "" + .ds L' ' +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/hints/linux,v +retrieving revision 1.2 +diff -c -r1.2 linux +*** 1.2 1994/02/01 23:19:26 +--- hints/linux 1994/02/20 11:26:44 +*************** +*** 1,5 **** + +! Requirements: kernel 0.99.14y or newer, libc 4.5.8 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +--- 1,5 ---- + +! Requirements: kernel 0.99.14y or newer, libc 4.5.20 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +*************** +*** 7,9 **** +--- 7,14 ---- + versions of the kernel or libc, or have any other question not covered in the + READMEs / hint files (sorry, necessary comment in the Linux community ;-) feel + free to ask me (duwe@informatik.uni-erlangen.de) ++ ++ [NOTE: libc-4.5.20 is (or was ? ;-) a beta testing release, but the first ++ binary compiled under the appropriate kernel. Get this one from ++ tsx-11:.../GCC/private/dontuse , compile 4.5.19 yourself or wait for the next ++ puplic relase after 4.5.20] +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/include/parse.h,v +retrieving revision 3.14 +diff -c -r3.14 parse.h +*** 3.14 1994/01/28 14:03:35 +--- include/parse.h 1994/02/20 13:04:26 +*************** +*** 81,115 **** + /* + * state flags + */ +! #define PARSEB_ANNOUNCE 0x0001 /* switch time zone warning (DST switch) */ +! #define PARSEB_POWERUP 0x0002 /* no synchronisation */ +! #define PARSEB_NOSYNC 0x0004 /* timecode currently not confirmed */ +! #define PARSEB_DST 0x0008 /* DST in effect */ +! #define PARSEB_UTC 0x0010 /* UTC time */ +! #define PARSEB_LEAP 0x0020 /* LEAP warning (1 hour prior to occurence) */ +! #define PARSEB_ALTERNATE 0x0040 /* alternate antenna used */ +! #define PARSEB_POSITION 0x0080 /* position available */ +! #define PARSEB_LEAPSECOND 0x0100 /* actual leap second */ +! +! #define PARSEB_S_LEAP 0x0200 /* supports LEAP */ +! #define PARSEB_S_ANTENNA 0x0400 /* supports antenna information */ +! #define PARSEB_S_PPS 0x0800 /* supports PPS time stamping */ +! #define PARSEB_S_POSITION 0x1000 /* supports position information (GPS) */ + +! #define PARSEB_TIMECODE 0x2000 /* valid time code sample */ +! #define PARSEB_PPS 0x4000 /* valid PPS sample */ + + #define PARSE_TCINFO (PARSEB_ANNOUNCE|PARSEB_POWERUP|PARSEB_NOSYNC|PARSEB_DST|\ +! PARSEB_UTC|PARSEB_LEAP|PARSEB_ALTERNATE|PARSEB_S_LEAP|\ + PARSEB_S_LOCATION|PARSEB_TIMECODE) + +! #define PARSE_POWERUP(x) ((x) & PARSEB_POWERUP) +! #define PARSE_NOSYNC(x) (((x) & (PARSEB_POWERUP|PARSEB_NOSYNC)) == PARSEB_NOSYNC) +! #define PARSE_SYNC(x) (((x) & (PARSEB_POWERUP|PARSEB_NOSYNC)) == 0) +! #define PARSE_ANNOUNCE(x) ((x) & PARSEB_ANNOUNCE) +! #define PARSE_DST(x) ((x) & PARSEB_DST) + #define PARSE_UTC(x) ((x) & PARSEB_UTC) +! #define PARSE_LEAP(x) (PARSE_SYNC(x) && ((x) & PARSEB_LEAP)) + #define PARSE_ALTERNATE(x) ((x) & PARSEB_ALTERNATE) + #define PARSE_LEAPSECOND(x) (PARSE_SYNC(x) && ((x) & PARSEB_LEAP_SECOND)) + +--- 81,135 ---- + /* + * state flags + */ +! #define PARSEB_POWERUP 0x00000001 /* no synchronisation */ +! #define PARSEB_NOSYNC 0x00000002 /* timecode currently not confirmed */ + +! /* +! * time zone information +! */ +! #define PARSEB_ANNOUNCE 0x00000010 /* switch time zone warning (DST switch) */ +! #define PARSEB_DST 0x00000020 /* DST in effect */ +! #define PARSEB_UTC 0x00000040 /* UTC time */ +! +! /* +! * leap information +! */ +! #define PARSEB_LEAPDEL 0x00000100 /* LEAP deletion warning */ +! #define PARSEB_LEAPADD 0x00000200 /* LEAP addition warning */ +! #define PARSEB_LEAPS 0x00000300 /* LEAP warnings */ +! #define PARSEB_LEAPSECOND 0x00000400 /* actual leap second */ +! /* +! * optional status information +! */ +! #define PARSEB_ALTERNATE 0x00001000 /* alternate antenna used */ +! #define PARSEB_POSITION 0x00002000 /* position available */ +! +! /* +! * feature information +! */ +! #define PARSEB_S_LEAP 0x00010000 /* supports LEAP */ +! #define PARSEB_S_ANTENNA 0x00020000 /* supports antenna information */ +! #define PARSEB_S_PPS 0x00040000 /* supports PPS time stamping */ +! #define PARSEB_S_POSITION 0x00080000 /* supports position information (GPS) */ +! +! /* +! * time stamp availality +! */ +! #define PARSEB_TIMECODE 0x10000000 /* valid time code sample */ +! #define PARSEB_PPS 0x20000000 /* valid PPS sample */ + + #define PARSE_TCINFO (PARSEB_ANNOUNCE|PARSEB_POWERUP|PARSEB_NOSYNC|PARSEB_DST|\ +! PARSEB_UTC|PARSEB_LEAPS|PARSEB_ALTERNATE|PARSEB_S_LEAP|\ + PARSEB_S_LOCATION|PARSEB_TIMECODE) + +! #define PARSE_POWERUP(x) ((x) & PARSEB_POWERUP) +! #define PARSE_NOSYNC(x) (((x) & (PARSEB_POWERUP|PARSEB_NOSYNC)) == PARSEB_NOSYNC) +! #define PARSE_SYNC(x) (((x) & (PARSEB_POWERUP|PARSEB_NOSYNC)) == 0) +! #define PARSE_ANNOUNCE(x) ((x) & PARSEB_ANNOUNCE) +! #define PARSE_DST(x) ((x) & PARSEB_DST) + #define PARSE_UTC(x) ((x) & PARSEB_UTC) +! #define PARSE_LEAPADD(x) (PARSE_SYNC(x) && (((x) & PARSEB_LEAPS) == PARSEB_LEAPADD)) +! #define PARSE_LEAPDEL(x) (PARSE_SYNC(x) && (((x) & PARSEB_LEAPS) == PARSEB_LEAPDEL)) + #define PARSE_ALTERNATE(x) ((x) & PARSEB_ALTERNATE) + #define PARSE_LEAPSECOND(x) (PARSE_SYNC(x) && ((x) & PARSEB_LEAP_SECOND)) + +*************** +*** 118,126 **** + #define PARSE_S_PPS(x) ((x) & PARSEB_S_PPS) + #define PARSE_S_POSITION(x) ((x) & PARSEB_S_POSITION) + +! #define PARSE_TIMECODE(x) ((x) & PARSEB_TIMECODE) + #define PARSE_PPS(x) ((x) & PARSEB_PPS) +! #define PARSE_POSITION(x) ((x) & PARSEB_POSITION) + + /* + * operation flags - some are also fudge flags +--- 138,146 ---- + #define PARSE_S_PPS(x) ((x) & PARSEB_S_PPS) + #define PARSE_S_POSITION(x) ((x) & PARSEB_S_POSITION) + +! #define PARSE_TIMECODE(x) ((x) & PARSEB_TIMECODE) + #define PARSE_PPS(x) ((x) & PARSEB_PPS) +! #define PARSE_POSITION(x) ((x) & PARSEB_POSITION) + + /* + * operation flags - some are also fudge flags +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/README.new_clocks,v +retrieving revision 3.3 +diff -c -r3.3 README.new_clocks +*** 3.3 1994/02/17 20:09:58 +--- parse/README.new_clocks 1994/02/20 13:04:34 +*************** +*** 37,43 **** + + PARSEB_DST DST in effect (informational only) + PARSEB_UTC timecode contains UTC time (informational only) +! PARSEB_LEAP LEAP 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 +--- 37,46 ---- + + 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 +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v +retrieving revision 3.13 +diff -c -r3.13 clk_meinberg.c +*** 3.13 1994/02/02 17:45:21 +--- parse/clk_meinberg.c 1994/02/20 13:04:37 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.13 1994/02/02 17:45:21 kardel Exp + * +! * clk_meinberg.c,v 3.13 1994/02/02 17:45:21 kardel Exp + * + * Meinberg clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.14 1994/02/20 13:04:37 kardel Exp + * +! * clk_meinberg.c,v 3.14 1994/02/20 13:04:37 kardel Exp + * + * Meinberg clock support + * +*************** +*** 284,291 **** + clock->flags |= PARSEB_S_LEAP; + clock->flags |= PARSEB_S_ANTENNA; + + if (f[4] == 'A') +! clock->flags |= PARSEB_LEAP; + + if (f[5] == 'R') + clock->flags |= PARSEB_ALTERNATE; +--- 284,296 ---- + clock->flags |= PARSEB_S_LEAP; + clock->flags |= PARSEB_S_ANTENNA; + ++ /* ++ * DCF77 does not encode the direction - ++ * so we take the current default - ++ * earth slowing down ++ */ + if (f[4] == 'A') +! clock->flags |= PARSEB_LEAPADD; + + if (f[5] == 'R') + clock->flags |= PARSEB_ALTERNATE; +*************** +*** 394,402 **** + + /* + * oncoming leap second + */ + if (f[5] == 'A') +! clock->flags |= PARSEB_LEAP; + + /* + * this is the leap second +--- 399,410 ---- + + /* + * oncoming leap second ++ * data format does not (yet) specify whether ++ * to add or to delete a second - thus we ++ * pick the current default + */ + if (f[5] == 'A') +! clock->flags |= PARSEB_LEAPADD; + + /* + * this is the leap second +*************** +*** 413,419 **** + /* + * History: + * +! * clk_meinberg.c,v + * Revision 3.13 1994/02/02 17:45:21 kardel + * rcs ids fixed + * +--- 421,430 ---- + /* + * History: + * +! * clk_meinberg.c,v +! * Revision 3.14 1994/02/20 13:04:37 kardel +! * parse add/delete second support +! * + * Revision 3.13 1994/02/02 17:45:21 kardel + * rcs ids fixed + * +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v +retrieving revision 3.11 +diff -c -r3.11 clk_rawdcf.c +*** 3.11 1994/02/02 17:45:23 +--- parse/clk_rawdcf.c 1994/02/20 13:04:39 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.11 1994/02/02 17:45:23 kardel Exp + * +! * clk_rawdcf.c,v 3.11 1994/02/02 17:45:23 kardel Exp + * + * Raw DCF77 pulse clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.12 1994/02/20 13:04:39 kardel Exp + * +! * clk_rawdcf.c,v 3.12 1994/02/20 13:04:39 kardel Exp + * + * Raw DCF77 pulse clock support + * +*************** +*** 278,284 **** + clock->flags |= PARSEB_ANNOUNCE; + + if (ext_bf(buffer, DCF_A2, dcfparam->zerobits)) +! clock->flags |= PARSEB_LEAP; + + if (ext_bf(buffer, DCF_R, dcfparam->zerobits)) + clock->flags |= PARSEB_ALTERNATE; +--- 278,284 ---- + clock->flags |= PARSEB_ANNOUNCE; + + if (ext_bf(buffer, DCF_A2, dcfparam->zerobits)) +! clock->flags |= PARSEB_LEAPADD; /* default: DCF77 data format deficiency */ + + if (ext_bf(buffer, DCF_R, dcfparam->zerobits)) + clock->flags |= PARSEB_ALTERNATE; +*************** +*** 528,534 **** + /* + * History: + * +! * clk_rawdcf.c,v + * Revision 3.11 1994/02/02 17:45:23 kardel + * rcs ids fixed + * +--- 528,537 ---- + /* + * History: + * +! * clk_rawdcf.c,v +! * Revision 3.12 1994/02/20 13:04:39 kardel +! * parse add/delete second support +! * + * Revision 3.11 1994/02/02 17:45:23 kardel + * rcs ids fixed + * +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v +retrieving revision 3.12 +diff -c -r3.12 clk_schmid.c +*** 3.12 1994/02/02 17:45:25 +--- parse/clk_schmid.c 1994/02/20 13:04:41 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.12 1994/02/02 17:45:25 kardel Exp + * +! * clk_schmid.c,v 3.12 1994/02/02 17:45:25 kardel Exp + * + * Schmid clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.13 1994/02/20 13:04:41 kardel Exp + * +! * clk_schmid.c,v 3.13 1994/02/20 13:04:41 kardel Exp + * + * Schmid clock support + * +*************** +*** 152,158 **** + + if (buffer[8] & WS_LEAP) + { +! clock->flags |= PARSEB_LEAP; + } + } + +--- 152,158 ---- + + if (buffer[8] & WS_LEAP) + { +! clock->flags |= PARSEB_LEAPADD; /* default: DCF77 data format deficiency */ + } + } + +*************** +*** 167,173 **** + /* + * History: + * +! * clk_schmid.c,v + * Revision 3.12 1994/02/02 17:45:25 kardel + * rcs ids fixed + * +--- 167,176 ---- + /* + * History: + * +! * clk_schmid.c,v +! * Revision 3.13 1994/02/20 13:04:41 kardel +! * parse add/delete second support +! * + * Revision 3.12 1994/02/02 17:45:25 kardel + * rcs ids fixed + * +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v +retrieving revision 3.47 +diff -c -r3.47 refclock_parse.c +*** 3.47 1994/02/02 17:44:30 +--- xntpd/refclock_parse.c 1994/02/20 13:26:00 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.47 1994/02/02 17:44:30 kardel Exp + * +! * refclock_parse.c,v 3.47 1994/02/02 17:44:30 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * +! * refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 129,135 **** + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp"; + #endif + + /**=========================================================================== +--- 129,135 ---- + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp"; + #endif + + /**=========================================================================== +*************** +*** 1706,1712 **** + { PARSEB_NOSYNC, "TIME CODE NOT CONFIRMED" }, + { PARSEB_DST, "DST" }, + { PARSEB_UTC, "UTC DISPLAY" }, +! { PARSEB_LEAP, "LEAP WARNING" }, + { PARSEB_LEAPSECOND, "LEAP SECOND" }, + { PARSEB_ALTERNATE,"ALTERNATE ANTENNA" }, + { PARSEB_TIMECODE, "TIME CODE" }, +--- 1706,1713 ---- + { PARSEB_NOSYNC, "TIME CODE NOT CONFIRMED" }, + { PARSEB_DST, "DST" }, + { PARSEB_UTC, "UTC DISPLAY" }, +! { PARSEB_LEAPADD, "LEAP ADD WARNING" }, +! { PARSEB_LEAPDEL, "LEAP DELETE WARNING" }, + { PARSEB_LEAPSECOND, "LEAP SECOND" }, + { PARSEB_ALTERNATE,"ALTERNATE ANTENNA" }, + { PARSEB_TIMECODE, "TIME CODE" }, +*************** +*** 2539,2547 **** + parse_leap() + { + /* +- * PARSE does encode a leap warning... we are aware but not afraid of that +- * as long as we get a little help for the direction from the operator until + * PARSE encodes the LEAP correction direction. + */ + } + +--- 2540,2549 ---- + parse_leap() + { + /* + * PARSE encodes the LEAP correction direction. ++ * For timecodes that do not pass on the leap correction direction ++ * the default PARSEB_LEAPADD must be used. It may then be modified ++ * with a fudge flag (flag2). + */ + } + +*************** +*** 2821,2827 **** + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +--- 2823,2829 ---- + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +*************** +*** 3245,3258 **** + } + else + { +! if (PARSE_LEAP(parsetime->parse_state)) + { + leap = (parse->flags & PARSE_LEAP_DELETE) ? LEAP_DELSECOND : LEAP_ADDSECOND; + } + else +! { +! leap = LEAP_NOWARNING; +! } + } + + refclock_receive(parse->peer, &off, 0, LFPTOFP(&dispersion), &reftime, &rectime, leap); +--- 3247,3270 ---- + } + else + { +! if (PARSE_LEAPADD(parsetime->parse_state)) + { ++ /* ++ * we pick this state also for time code that pass leap warnings ++ * without direction information (as earth is currently slowing ++ * down). ++ */ + leap = (parse->flags & PARSE_LEAP_DELETE) ? LEAP_DELSECOND : LEAP_ADDSECOND; + } + else +! if (PARSE_LEAPDEL(parsetime->parse_state)) +! { +! leap = LEAP_DELSECOND; +! } +! else +! { +! leap = LEAP_NOWARNING; +! } + } + + refclock_receive(parse->peer, &off, 0, LFPTOFP(&dispersion), &reftime, &rectime, leap); +*************** +*** 3395,3401 **** + /* + * History: + * +! * refclock_parse.c,v + * Revision 3.47 1994/02/02 17:44:30 kardel + * rcs ids fixed + * +--- 3407,3419 ---- + /* + * History: + * +! * refclock_parse.c,v +! * Revision 3.49 1994/02/20 13:26:00 kardel +! * rcs id cleanup +! * +! * Revision 3.48 1994/02/20 13:04:56 kardel +! * parse add/delete second support +! * + * Revision 3.47 1994/02/02 17:44:30 kardel + * rcs ids fixed + * +*** parse/util/parsetest.c Sun Feb 20 15:54:11 1994 +--- parse/util/parsetest.c Sun Feb 20 14:04:46 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/kernel/parsetest.c,v 3.4 1993/03/17 17:16:57 kardel Exp + * +! * parsetest.c,v 3.10 1994/01/23 17:22:18 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/util/parsetest.c,v 3.13 1994/02/20 13:04:46 kardel Exp + * +! * parsetest.c,v 3.13 1994/02/20 13:04:46 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 10,26 **** + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * +! * parsetest.c,v +! * Revision 3.4 1993/03/17 17:16:57 kardel +! * DEC OSF/1 ALPHA Integration - 930314 + * +! * Revision 3.3 1993/01/18 09:24:33 kardel +! * updated copyright conditions in conjunction with +! * conditions set up in the COPYRIGHT file + * +- * Revision 3.2 1993/01/17 13:43:00 kardel +- * 1993 initial update +- * + */ + + #ifndef STREAM +--- 10,22 ---- + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * +! * parsetest.c,v +! * Revision 3.13 1994/02/20 13:04:46 kardel +! * parse add/delete second support + * +! * Revision 3.12 1994/02/02 17:45:51 kardel +! * rcs ids fixed + * + */ + + #ifndef STREAM +*************** +*** 199,205 **** + parsetime_t parsetime; + struct strioctl strioc; + +! printf("parsetest.c,v 3.10 1994/01/23 17:22:18 kardel Exp\n"); + + while (ioctl(fd, I_POP, 0) == 0) + ; +--- 195,201 ---- + parsetime_t parsetime; + struct strioctl strioc; + +! printf("parsetest.c,v 3.13 1994/02/20 13:04:46 kardel Exp\n"); + + while (ioctl(fd, I_POP, 0) == 0) + ; +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v +retrieving revision 3.16 +diff -c -r3.16 parsestreams.c +*** 3.16 1994/02/15 22:39:50 +--- parse/parsestreams.c 1994/02/20 15:18:02 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.16 1994/02/15 22:39:50 kardel Exp + * +! * parsestreams.c,v 3.16 1994/02/15 22:39:50 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp + * +! * parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +*************** +*** 16,22 **** + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp"; + #endif + + #include "sys/types.h" +--- 16,22 ---- + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp"; + #endif + + #include "sys/types.h" +*************** +*** 195,201 **** + } + else + { +! static char revision[] = "3.12"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +--- 195,201 ---- + } + else + { +! static char revision[] = "3.17"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +*************** +*** 1259,1265 **** + /* + * History: + * +! * parsestreams.c,v + * Revision 3.16 1994/02/15 22:39:50 kardel + * memory leak on open failure closed + * +--- 1259,1268 ---- + /* + * History: + * +! * parsestreams.c,v +! * Revision 3.17 1994/02/20 15:18:02 kardel +! * rcs id cleanup +! * + * Revision 3.16 1994/02/15 22:39:50 kardel + * memory leak on open failure closed + * +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.21 b/usr.sbin/xntpd/patches/patch.21 new file mode 100644 index 0000000..9299971 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.21 @@ -0,0 +1,54 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa25363; 23 Feb 94 18:50 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa28210; + 23 Feb 94 18:44 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA07903 (5.65c-6/7.3v-FAU); Thu, 24 Feb 1994 00:44:18 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA19013 (5.65c-6/7.3m-FAU); Thu, 24 Feb 1994 00:44:17 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402232344.AA19013@faui43.informatik.uni-erlangen.de> +Subject: TRAK clock +To: mills@udel.edu +Date: Thu, 24 Feb 94 0:44:12 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave - some obvious things about the TRAK clock: + - please removed the 4 ^A at the end of the + xntpd/reflock_trak.c file (email leftovers). + - add following refclocks/rclk.TRAK file + +#!/bin/sh - +CMD="$1" +shift; + +. refclocks/setup + +case "$CMD" in + info) + echo " TRAK - TRAK 8810 GPS station clock" + ;; + check) + if check "$RCONFIG" '$0 ~ /TRAK/'; then + echo "TRAK - TRAK 8810 GPS station clock" + fi + ;; + config) + if check "$REFCONF" '$0 ~ /TRAK/' || + ( [ ! "$REFCONF" ] && query "Include TRAK 8810 GPS station clock (TRAK)" n); then + if check "$PPSFEATURES" '$0 ~ /CD/' && + [ "$PPSOK" -eq 1 ] && + (check "$REFCONF" '$0 ~ /TRAKPPS/' || + ( [ ! "$REFCONF" ] && query " Use TRAK for PPS" n)); then + echo "-DTRAKPPS" >> $RCONFIG + else + echo "-DTRAK" >> $RCONFIG + fi + fi + ;; +esac +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.22 b/usr.sbin/xntpd/patches/patch.22 new file mode 100644 index 0000000..8b4296c --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.22 @@ -0,0 +1,296 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa02110; 24 Feb 94 18:54 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa13897; + 24 Feb 94 18:53 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA27796 (5.65c-6/7.3v-FAU); Fri, 25 Feb 1994 00:53:32 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA16114 (5.65c-6/7.3m-FAU); Fri, 25 Feb 1994 00:53:31 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199402242353.AA16114@faui43.informatik.uni-erlangen.de> +Subject: patches (parse pps/pll control) +To: mills@udel.edu +Date: Fri, 25 Feb 94 0:52:59 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi, here are some patches. + +pps pll control is nor supported by parse. +pps output variable are readable via mode 6 messages. + +diff -c v3/parse/parsestreams.c:1.1.1.10 v3/parse/parsestreams.c:3.19 +*** v3/parse/parsestreams.c:1.1.1.10 Fri Feb 25 00:44:41 1994 +--- v3/parse/parsestreams.c Fri Feb 25 00:44:41 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp + * +! * parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp + * +! * parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +*************** +*** 16,22 **** + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp"; + #endif + + #include "sys/types.h" +--- 16,22 ---- + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp"; + #endif + + #include "sys/types.h" +*************** +*** 195,201 **** + } + else + { +! static char revision[] = "3.17"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +--- 195,201 ---- + } + else + { +! static char revision[] = "3.19"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +*************** +*** 1076,1081 **** +--- 1076,1086 ---- + + #define MAXDEPTH 50 /* maximum allowed stream crawl */ + ++ #ifdef PPS_SYNC ++ extern hardpps(); ++ extern struct timeval time; ++ #endif ++ + /* + * take external status interrupt (only CD interests us) + */ +*************** +*** 1087,1101 **** + register queue_t *q; + register unsigned char zsstatus; + register int loopcheck; +- register unsigned char cdstate; + register char *dname; + + /* + * pick up current state + */ + zsstatus = zsaddr->zscc_control; + +! if (za->za_rr0 ^ (cdstate = zsstatus & ZSRR0_CD)) + { + timestamp_t cdevent; + register int status; +--- 1092,1109 ---- + register queue_t *q; + register unsigned char zsstatus; + register int loopcheck; + register char *dname; ++ #ifdef PPS_SYNC ++ register int s; ++ register long usec; ++ #endif + + /* + * pick up current state + */ + zsstatus = zsaddr->zscc_control; + +! if ((za->za_rr0 ^ zsstatus) & (ZSRR0_CD|ZSRR0_SYNC)) + { + timestamp_t cdevent; + register int status; +*************** +*** 1103,1129 **** + /* + * CONDITIONAL external measurement support + */ +! SET_LED(cdstate); /* + * inconsistent with upper SET_LED, but this + * is for oscilloscope business anyway and we + * are just interested in edge delays in the + * lower us range + */ +! + /* + * time stamp + */ + uniqtime(&cdevent.tv); +! +! TIMEVAL_USADD(&cdevent.tv, xsdelay); +! +! q = za->za_ttycommon.t_readq; + + /* + * logical state + */ +! status = cd_invert ? cdstate == 0 : cdstate != 0; + + /* + * ok - now the hard part - find ourself + */ +--- 1111,1155 ---- + /* + * CONDITIONAL external measurement support + */ +! SET_LED(zsstatus & (ZSRR0_CD|ZSRR0_SYNC)); /* + * inconsistent with upper SET_LED, but this + * is for oscilloscope business anyway and we + * are just interested in edge delays in the + * lower us range + */ +! #ifdef PPS_SYNC +! s = splclock(); +! usec = time.tv_usec; +! #endif + /* + * time stamp + */ + uniqtime(&cdevent.tv); +! +! #ifdef PPS_SYNC +! splx(s); +! #endif + + /* + * logical state + */ +! status = cd_invert ? (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) == 0 : (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) != 0; + ++ #ifdef PPS_SYNC ++ if (status) ++ { ++ usec = cdevent.tv.tv_usec - usec; ++ if (usec < 0) ++ usec += 1000000; ++ ++ hardpps(&cdevent.tv, usec); ++ } ++ #endif ++ ++ TIMEVAL_USADD(&cdevent.tv, xsdelay); ++ ++ q = za->za_ttycommon.t_readq; ++ + /* + * ok - now the hard part - find ourself + */ +*************** +*** 1179,1188 **** + /* + * only pretend that CD has been handled + */ +! za->za_rr0 = za->za_rr0 & ~ZSRR0_CD | zsstatus & ZSRR0_CD; + ZSDELAY(2); + +! if (!((za->za_rr0 ^ zsstatus) & ~ZSRR0_CD)) + { + /* + * all done - kill status indication and return +--- 1205,1214 ---- + /* + * only pretend that CD has been handled + */ +! za->za_rr0 = za->za_rr0 & ~(ZSRR0_CD|ZSRR0_SYNC) | zsstatus & (ZSRR0_CD|ZSRR0_SYNC); + ZSDELAY(2); + +! if (!((za->za_rr0 ^ zsstatus) & ~(ZSRR0_CD|ZSRR0_SYNC))) + { + /* + * all done - kill status indication and return +*************** +*** 1260,1265 **** +--- 1286,1297 ---- + * History: + * + * parsestreams.c,v ++ * Revision 3.19 1994/02/24 16:33:54 kardel ++ * CD events can also be posted on sync flag ++ * ++ * Revision 3.18 1994/02/24 14:12:58 kardel ++ * initial PPS_SYNC support version ++ * + * Revision 3.17 1994/02/20 15:18:02 kardel + * rcs id cleanup + * +diff -c v3/xntpd/ntp_loopfilter.c:1.1.1.33 v3/xntpd/ntp_loopfilter.c:3.40 +*** v3/xntpd/ntp_loopfilter.c:1.1.1.33 Fri Feb 25 00:46:20 1994 +--- v3/xntpd/ntp_loopfilter.c Fri Feb 25 00:46:21 1994 +*************** +*** 522,529 **** +--- 522,545 ---- + ntv.maxerror = sys_rootdispersion + sys_rootdelay / 2; + ntv.esterror = sys_rootdispersion; + ntv.time_constant = time_constant; ++ ntv.shift = 0; + (void)ntp_adjtime(&ntv); + drift_comp = ntv.frequency; ++ if (ntv.shift != 0) { ++ char buf[128]; ++ (void) sprintf(buf, "pps_freq=%s", fptoa(ntv.ybar, 3)); ++ set_sys_var(buf, strlen(buf)+1, RO|DEF); ++ (void) sprintf(buf, "pps_disp=%s", fptoa(ntv.disp, 3)); ++ set_sys_var(buf, strlen(buf)+1, RO|DEF); ++ (void) sprintf(buf, "pps_interval=%ld",1 << ntv.shift); ++ set_sys_var(buf, strlen(buf)+1, RO); ++ (void) sprintf(buf, "pps_intervals=%ld", ntv.calcnt); ++ set_sys_var(buf, strlen(buf)+1, RO); ++ (void) sprintf(buf, "pps_jitterexceeded=%ld", ntv.jitcnt); ++ set_sys_var(buf, strlen(buf)+1, RO); ++ (void) sprintf(buf, "pps_dispersionexceeded=%ld", ntv.discnt); ++ set_sys_var(buf, strlen(buf)+1, RO); ++ } + #endif /* KERNEL_PLL */ + } else { + if (offset < 0) { +*************** +*** 725,730 **** +--- 741,748 ---- + "loop_config: skew compensation %s too large", + fptoa(tmp, 5)); + } else { ++ char var[40]; ++ + drift_comp = tmp; + + #if defined(KERNEL_PLL) +*************** +*** 751,756 **** +--- 769,778 ---- + syslog(LOG_NOTICE, + "%susing kernel phase-lock loop", + (pll_control) ? "" : "Not "); ++ (void)sprintf(var, "kernel_pll=%s", pll_control ? "true" : "false"); ++ ++ set_sys_var(var, strlen(var)+1, RO); ++ + #if DEBUG + if (debug) + printf("pll_control %d\n", pll_control); +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.23 b/usr.sbin/xntpd/patches/patch.23 new file mode 100644 index 0000000..5fee16f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.23 @@ -0,0 +1,80 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa18634; 27 Feb 94 13:54 EST +Received: from rincewind.mech.virginia.edu by louie.udel.edu id aa11711; + 27 Feb 94 13:53 EST +Received: from localhost (dmm0t@localhost) by rincewind.mech.virginia.edu (8.6.5/8.6.5) id NAA04646 for mills@udel.edu; Sun, 27 Feb 1994 13:53:35 -0500 +From: David Meyer <dmm0t@rincewind.mech.virginia.edu> +Message-Id: <199402271853.NAA04646@rincewind.mech.virginia.edu> +Subject: patches to xntpd-3.3j for NeXT +To: mills@udel.edu +Date: Sun, 27 Feb 1994 13:53:34 -0500 (EST) +X-Mailer: ELM [version 2.4 PL23] +MIME-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Length: 2043 + +I have a couple of patches to make the 3.3j beta compile on a NeXT +running NS3.1. + +The first patch just defines RETSIGTYPE. The second patch puts +HAVE_BSD_TTYS in DEFS rather than AUTHDEFS. The last patch just fixes +a type - using # rather than * in a comment block. + +*** ../orig/include/ntp_machine.h Sun Feb 20 22:23:29 1994 +--- include/ntp_machine.h Sun Feb 27 13:47:59 1994 +*************** +*** 313,318 **** +--- 313,319 ---- + * Next + */ + #if defined(SYS_NEXT) ++ #define RETSIGTYPE void + #define DOSYNCTODR + #define HAVE_READKMEM + #define HAVE_BSD_NICE + +*** ../orig/machines/next Sun Feb 20 22:23:36 1994 +--- machines/next Sun Feb 27 13:47:15 1994 +*************** +*** 1,6 **** + RANLIB= ranlib -c -s +! DEFS= -DSYS_NEXT +! AUTHDEFS= -DDES -DMD5 -DFAST_MD5 -DHAVE_BSD_TTYS + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= +--- 1,6 ---- + RANLIB= ranlib -c -s +! DEFS= -DSYS_NEXT -DHAVE_BSD_TTYS +! AUTHDEFS= -DDES -DMD5 -DFAST_MD5 + CLOCKDEFS= -DLOCAL_CLOCK + DAEMONLIBS= + RESLIB= + +*** ../orig/xntpd/refclock_irig.c Thu Jan 27 09:03:58 1994 +--- xntpd/refclock_irig.c Sun Feb 27 13:36:30 1994 +*************** +*** 19,25 **** + * This driver supports the IRIG audio decoder. This clever gadget uses + * a modified BSD audio driver for the Sun SPARCstation which provides + * a timestamp, raw binary timecode, status byte and decoded ASCII +! # timecode. The data are represented in the structure: + * + * struct irig_time { + * struct timeval stamp; timestamp +--- 19,25 ---- + * This driver supports the IRIG audio decoder. This clever gadget uses + * a modified BSD audio driver for the Sun SPARCstation which provides + * a timestamp, raw binary timecode, status byte and decoded ASCII +! * timecode. The data are represented in the structure: + * + * struct irig_time { + * struct timeval stamp; timestamp + + +-- +David M. Meyer Mechanical & Aerospace Engineering +dmm0t@rincewind.mech.virginia.edu University of Virginia +NeXTmail ok + diff --git a/usr.sbin/xntpd/patches/patch.24 b/usr.sbin/xntpd/patches/patch.24 new file mode 100644 index 0000000..6ab00e2 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.24 @@ -0,0 +1,474 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa16943; 4 Mar 94 6:43 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa02686; + 4 Mar 94 6:34 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA12349 (5.65c-6/7.3v-FAU); Fri, 4 Mar 1994 12:34:08 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA26044 (5.65c-6/7.3m-FAU); Fri, 4 Mar 1994 12:34:06 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403041134.AA26044@faui43.informatik.uni-erlangen.de> +Subject: Re: patches for 3.3l +To: Mills@udel.edu +Date: Fri, 4 Mar 94 12:33:49 MET +In-Reply-To: <9403040253.aa16147@huey.udel.edu>; from "Mills@udel.edu" at Mar 4, 94 2:53 am +X-Mailer: ELM [version 2.3 PL11] + + +> Frank, + + +> ld: ../lib/libntp.a: warning: archive has no table of contents; add one using ranlib(1) +I didn't fiddle with lib/* this round. Thus it must be some problem +with the lib building process. Try make clean and again. I just checked +the patches with my 3.3l tree - fine. I do admit being a bit lax when +sending you the patches - you might have had to enter some paths +manually. + +> ld: Undefined symbol +> _DESauth1crypt .... +Happens if ranlib isn't run. + +> Obviously, it bombed. +Not likely being a problem from my patches - the lib/libntp.a got +inconsistent. +Usually this should not happen (ranlib need to be run on BSD systems). +Try building again from scratch (make clean all). If the problem +persists look (or send me) at the output of the lib building step +something is amiss there at your site. + +I'll include the patches here again not properly prepared for a +plain "patch < patchfile". + + +Hi, Dave, + +Here are some more patches: + - allow parse conversion routines to deliver UTC directly + - irix4 machine/cc from Amos + - rcs id fixing + - linux hints + - modload hints + - full integration of trak refclock driver (was only partially integrated) + +diff -c /dev/null compilers/irix4.cc:1.1 +*** /dev/null Thu Mar 3 10:29:50 1994 +--- compilers/irix4.cc Thu Mar 3 10:29:50 1994 +*************** +*** 0 **** +--- 1,2 ---- ++ COMPILER= cc -cckr ++ COPTS= -O2 +diff -c hints/linux:1.1.1.3 hints/linux:1.5 +*** hints/linux:1.1.1.3 Thu Mar 3 10:30:53 1994 +--- hints/linux Thu Mar 3 10:30:53 1994 +*************** +*** 1,5 **** + +! Requirements: kernel 0.99.14y or newer, libc 4.5.20 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +--- 1,5 ---- + +! Requirements: kernel 0.99.14y or newer, libc 4.5.21 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +*************** +*** 7,14 **** + versions of the kernel or libc, or have any other question not covered in the + READMEs / hint files (sorry, necessary comment in the Linux community ;-) feel + free to ask me (duwe@informatik.uni-erlangen.de) +- +- [NOTE: libc-4.5.20 is (or was ? ;-) a beta testing release, but the first +- binary compiled under the appropriate kernel. Get this one from +- tsx-11:.../GCC/private/dontuse , compile 4.5.19 yourself or wait for the next +- puplic relase after 4.5.20] +--- 7,9 ---- +diff -c include/parse.h:1.1.1.8 include/parse.h:3.17 +*** include/parse.h:1.1.1.8 Thu Mar 3 10:31:37 1994 +--- include/parse.h Thu Mar 3 10:31:37 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * +! * parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp + * +! * parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 15,21 **** + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp FAU"; + #endif + + #include "ntp_types.h" +--- 15,21 ---- + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp"; + #endif + + #include "ntp_types.h" +*************** +*** 301,306 **** +--- 301,307 ---- + LONG second; + LONG usecond; + LONG utcoffset; /* in seconds */ ++ time_t utctime; /* the actual time - alternative to date/time */ + LONG flags; /* current clock status */ + }; + +*************** +*** 385,390 **** +--- 386,394 ---- + * History: + * + * parse.h,v ++ * Revision 3.17 1994/03/03 09:27:20 kardel ++ * rcs ids fixed ++ * + * Revision 3.13 1994/01/25 19:04:21 kardel + * 94/01/23 reconcilation + * +diff -c parse/Makefile.kernel:1.1.1.3 parse/Makefile.kernel:3.9 +*** parse/Makefile.kernel:1.1.1.3 Thu Mar 3 10:35:48 1994 +--- parse/Makefile.kernel Thu Mar 3 10:35:48 1994 +*************** +*** 40,46 **** + rm -f parsestreams.o + + parsestreams.o: parsestreams.o.$(KARCH) +! @echo "--- You may load parsestreams.o.$(KARCH) via 'modload parsestreams.o.$(KARCH)' into the kernel" + + parsestreams.o.$(KARCH): parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +--- 40,46 ---- + rm -f parsestreams.o + + parsestreams.o: parsestreams.o.$(KARCH) +! @echo "--- You may load parsestreams.o.$(KARCH) via 'modload parsestreams.o' (put in e.g. /sys/<karch>/OBJ) into the kernel" + + parsestreams.o.$(KARCH): parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +diff -c parse/README.new_clocks:1.1.1.3 parse/README.new_clocks:3.5 +*** parse/README.new_clocks:1.1.1.3 Thu Mar 3 10:35:52 1994 +--- parse/README.new_clocks Thu Mar 3 10:35:53 1994 +*************** +*** 23,28 **** +--- 23,29 ---- + LONG second; + LONG usecond; + LONG utcoffset; /* in seconds */ ++ time_t utcoffset; /* true utc time instead of date/time */ + LONG flags; /* current clock status */ + }; + +*************** +*** 52,57 **** +--- 53,65 ---- + 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: + +diff -c parse/parse.c:1.1.1.9 parse/parse.c:3.22 +*** parse/parse.c:1.1.1.9 Thu Mar 3 10:36:06 1994 +--- parse/parse.c Thu Mar 3 10:36:07 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * +! * parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * +! * parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 556,561 **** +--- 556,564 ---- + register int i; + time_t t; + ++ if (clock->utctime) ++ return clock->utctime; /* if the conversion routine gets it right away - why not */ ++ + if (clock->year < 100) + clock->year += 1900; + +*************** +*** 628,633 **** +--- 631,639 ---- + t += clock->utcoffset; /* warp to UTC */ + + /* done */ ++ ++ clock->utctime = t; /* documentray only */ ++ + return t; + } + +*************** +*** 890,895 **** +--- 896,903 ---- + + if (parseio->parse_flags & PARSE_FIXED_FMT) + { ++ clock.utctime = 0; ++ + switch ((cvtrtc = clockformats[format]->convert ? clockformats[format]->convert(parseio->parse_data, parseio->parse_index, clockformats[format]->data, &clock) : CVT_NONE) & CVT_MASK) + { + case CVT_FAIL: +*************** +*** 941,946 **** +--- 949,956 ---- + { + do + { ++ clock.utctime = 0; ++ + switch ((cvtrtc = (clockformats[format]->convert && !(clockformats[format]->flags & CVT_FIXEDONLY)) ? + clockformats[format]->convert(parseio->parse_data, parseio->parse_index, clockformats[format]->data, &clock) : + CVT_NONE) & CVT_MASK) +*************** +*** 1148,1153 **** +--- 1158,1166 ---- + * History: + * + * parse.c,v ++ * Revision 3.22 1994/02/25 12:34:49 kardel ++ * allow for converter generated utc times ++ * + * Revision 3.21 1994/02/02 17:45:30 kardel + * rcs ids fixed + * +diff -c parse/util/testdcf.c:1.1.1.6 parse/util/testdcf.c:3.11 +*** parse/util/testdcf.c:1.1.1.6 Thu Mar 3 10:36:27 1994 +--- parse/util/testdcf.c Thu Mar 3 10:36:27 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * +! * testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.11 1994/02/02 17:45:55 kardel Exp + * +! * testdcf.c,v 3.11 1994/02/02 17:45:55 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +diff -c xntpd/Makefile.tmpl:1.1.1.18 xntpd/Makefile.tmpl:3.28 +*** xntpd/Makefile.tmpl:1.1.1.18 Thu Mar 3 10:38:13 1994 +--- xntpd/Makefile.tmpl Thu Mar 3 10:38:13 1994 +*************** +*** 34,40 **** + refclock_wwvb.c refclock_goes.c refclock_mx4200.c \ + refclock_parse.c refclock_as2201.c refclock_omega.c \ + refclock_tpro.c refclock_leitch.c refclock_irig.c \ +! refclock_msfees.c refclock_gpstm.c ntp_intres.c ntp_filegen.c + + OBJS= ntp_config.o ntp_control.o ntp_io.o ntp_leap.o \ + ntp_loopfilter.o ntp_monitor.o ntp_peer.o ntp_proto.o \ +--- 34,41 ---- + refclock_wwvb.c refclock_goes.c refclock_mx4200.c \ + refclock_parse.c refclock_as2201.c refclock_omega.c \ + refclock_tpro.c refclock_leitch.c refclock_irig.c \ +! refclock_msfees.c refclock_gpstm.c refclock_trak.c \ +! ntp_intres.c ntp_filegen.c + + OBJS= ntp_config.o ntp_control.o ntp_io.o ntp_leap.o \ + ntp_loopfilter.o ntp_monitor.o ntp_peer.o ntp_proto.o \ +*************** +*** 44,50 **** + refclock_wwvb.o refclock_goes.o refclock_mx4200.o \ + refclock_parse.o refclock_as2201.o refclock_omega.o \ + refclock_tpro.o refclock_leitch.o refclock_irig.o \ +! refclock_msfees.o refclock_gpstm.o ntp_intres.o ntp_filegen.o + + all: $(PROGRAM) + +--- 45,52 ---- + refclock_wwvb.o refclock_goes.o refclock_mx4200.o \ + refclock_parse.o refclock_as2201.o refclock_omega.o \ + refclock_tpro.o refclock_leitch.o refclock_irig.o \ +! refclock_msfees.o refclock_gpstm.o refclock_trak.o \ +! ntp_intres.o ntp_filegen.o + + all: $(PROGRAM) + +*************** +*** 136,141 **** +--- 138,146 ---- + + refclock_msfees.o: refclock_msfees.c + $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c ++ ++ refclock_trak.o: refclock_trak.c ++ $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c + + refclock_gpstm.o: refclock_gpstm.c + $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c +diff -c xntpd/ntp_control.c:1.1.1.17 xntpd/ntp_control.c:3.26 +*** xntpd/ntp_control.c:1.1.1.17 Thu Mar 3 10:38:16 1994 +--- xntpd/ntp_control.c Thu Mar 3 10:38:17 1994 +*************** +*** 301,307 **** + static u_char clocktypes[] = { + CTL_SST_TS_NTP, /* REFCLK_NONE */ + CTL_SST_TS_UNSPEC, /* REFCLK_LOCALCLOCK */ +! CTL_SST_TS_HF, /* REFCLK_WWV_HEATH */ + CTL_SST_TS_HF, /* REFCLK_WWV_PST */ + CTL_SST_TS_LF, /* REFCLK_WWVB_SPECTRACOM */ + CTL_SST_TS_UHF, /* REFCLK_GOES_TRUETIME */ +--- 301,307 ---- + static u_char clocktypes[] = { + CTL_SST_TS_NTP, /* REFCLK_NONE */ + CTL_SST_TS_UNSPEC, /* REFCLK_LOCALCLOCK */ +! CTL_SST_TS_HF, /* REFCLK_GPS_TRAK */ + CTL_SST_TS_HF, /* REFCLK_WWV_PST */ + CTL_SST_TS_LF, /* REFCLK_WWVB_SPECTRACOM */ + CTL_SST_TS_UHF, /* REFCLK_GOES_TRUETIME */ +diff -c xntpd/refclock_conf.c:1.1.1.22 xntpd/refclock_conf.c:3.21 +*** xntpd/refclock_conf.c:1.1.1.22 Thu Mar 3 10:38:54 1994 +--- xntpd/refclock_conf.c Thu Mar 3 10:38:54 1994 +*************** +*** 113,119 **** + struct refclock *refclock_conf[] = { + &refclock_none, /* 0 REFCLK_NONE */ + &refclock_local, /* 1 REFCLK_LOCAL */ +! &refclock_none, /* 2 REFCLK_WWV_HEATH */ + &refclock_pst, /* 3 REFCLK_WWV_PST */ + &refclock_wwvb, /* 4 REFCLK_WWVB_SPECTRACOM */ + &refclock_goes, /* 5 REFCLK_GOES_TRUETIME */ +--- 113,119 ---- + struct refclock *refclock_conf[] = { + &refclock_none, /* 0 REFCLK_NONE */ + &refclock_local, /* 1 REFCLK_LOCAL */ +! &refclock_trak, /* 2 REFCLK_GPS_TRAK */ + &refclock_pst, /* 3 REFCLK_WWV_PST */ + &refclock_wwvb, /* 4 REFCLK_WWVB_SPECTRACOM */ + &refclock_goes, /* 5 REFCLK_GOES_TRUETIME */ +RCS file: /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v +retrieving revision 1.1.1.12 +diff -c -r1.1.1.12 xntpd/refclock_parse.c +*** xntpd/refclock_parse.c:1.1.1.12 1994/02/22 21:57:57 +--- xntpd/refclock_parse.c 1994/03/03 09:49:54 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * +! * refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * +! * refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 129,135 **** + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp"; + #endif + + /**=========================================================================== +--- 129,135 ---- + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp"; + #endif + + /**=========================================================================== +*************** +*** 1653,1659 **** + * done if no more characters are available + */ + FD_SET(fd, &fdmask); +! if (select(fd + 1, &fdmask, 0, 0, &null_time) == 0) + return; + } + } +--- 1653,1660 ---- + * done if no more characters are available + */ + FD_SET(fd, &fdmask); +! if ((i == 0) && +! (select(fd + 1, &fdmask, 0, 0, &null_time) == 0)) + return; + } + } +*************** +*** 2823,2829 **** + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +--- 2824,2830 ---- + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.25 b/usr.sbin/xntpd/patches/patch.25 new file mode 100644 index 0000000..6ab00e2 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.25 @@ -0,0 +1,474 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa16943; 4 Mar 94 6:43 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa02686; + 4 Mar 94 6:34 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA12349 (5.65c-6/7.3v-FAU); Fri, 4 Mar 1994 12:34:08 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA26044 (5.65c-6/7.3m-FAU); Fri, 4 Mar 1994 12:34:06 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403041134.AA26044@faui43.informatik.uni-erlangen.de> +Subject: Re: patches for 3.3l +To: Mills@udel.edu +Date: Fri, 4 Mar 94 12:33:49 MET +In-Reply-To: <9403040253.aa16147@huey.udel.edu>; from "Mills@udel.edu" at Mar 4, 94 2:53 am +X-Mailer: ELM [version 2.3 PL11] + + +> Frank, + + +> ld: ../lib/libntp.a: warning: archive has no table of contents; add one using ranlib(1) +I didn't fiddle with lib/* this round. Thus it must be some problem +with the lib building process. Try make clean and again. I just checked +the patches with my 3.3l tree - fine. I do admit being a bit lax when +sending you the patches - you might have had to enter some paths +manually. + +> ld: Undefined symbol +> _DESauth1crypt .... +Happens if ranlib isn't run. + +> Obviously, it bombed. +Not likely being a problem from my patches - the lib/libntp.a got +inconsistent. +Usually this should not happen (ranlib need to be run on BSD systems). +Try building again from scratch (make clean all). If the problem +persists look (or send me) at the output of the lib building step +something is amiss there at your site. + +I'll include the patches here again not properly prepared for a +plain "patch < patchfile". + + +Hi, Dave, + +Here are some more patches: + - allow parse conversion routines to deliver UTC directly + - irix4 machine/cc from Amos + - rcs id fixing + - linux hints + - modload hints + - full integration of trak refclock driver (was only partially integrated) + +diff -c /dev/null compilers/irix4.cc:1.1 +*** /dev/null Thu Mar 3 10:29:50 1994 +--- compilers/irix4.cc Thu Mar 3 10:29:50 1994 +*************** +*** 0 **** +--- 1,2 ---- ++ COMPILER= cc -cckr ++ COPTS= -O2 +diff -c hints/linux:1.1.1.3 hints/linux:1.5 +*** hints/linux:1.1.1.3 Thu Mar 3 10:30:53 1994 +--- hints/linux Thu Mar 3 10:30:53 1994 +*************** +*** 1,5 **** + +! Requirements: kernel 0.99.14y or newer, libc 4.5.20 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +--- 1,5 ---- + +! Requirements: kernel 0.99.14y or newer, libc 4.5.21 or newer + ------------ + + With this configuration, xntp should build an run right out of the box +*************** +*** 7,14 **** + versions of the kernel or libc, or have any other question not covered in the + READMEs / hint files (sorry, necessary comment in the Linux community ;-) feel + free to ask me (duwe@informatik.uni-erlangen.de) +- +- [NOTE: libc-4.5.20 is (or was ? ;-) a beta testing release, but the first +- binary compiled under the appropriate kernel. Get this one from +- tsx-11:.../GCC/private/dontuse , compile 4.5.19 yourself or wait for the next +- puplic relase after 4.5.20] +--- 7,9 ---- +diff -c include/parse.h:1.1.1.8 include/parse.h:3.17 +*** include/parse.h:1.1.1.8 Thu Mar 3 10:31:37 1994 +--- include/parse.h Thu Mar 3 10:31:37 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * +! * parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp + * +! * parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 15,21 **** + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp FAU"; + #endif + + #include "ntp_types.h" +--- 15,21 ---- + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.17 1994/03/03 09:27:20 kardel Exp"; + #endif + + #include "ntp_types.h" +*************** +*** 301,306 **** +--- 301,307 ---- + LONG second; + LONG usecond; + LONG utcoffset; /* in seconds */ ++ time_t utctime; /* the actual time - alternative to date/time */ + LONG flags; /* current clock status */ + }; + +*************** +*** 385,390 **** +--- 386,394 ---- + * History: + * + * parse.h,v ++ * Revision 3.17 1994/03/03 09:27:20 kardel ++ * rcs ids fixed ++ * + * Revision 3.13 1994/01/25 19:04:21 kardel + * 94/01/23 reconcilation + * +diff -c parse/Makefile.kernel:1.1.1.3 parse/Makefile.kernel:3.9 +*** parse/Makefile.kernel:1.1.1.3 Thu Mar 3 10:35:48 1994 +--- parse/Makefile.kernel Thu Mar 3 10:35:48 1994 +*************** +*** 40,46 **** + rm -f parsestreams.o + + parsestreams.o: parsestreams.o.$(KARCH) +! @echo "--- You may load parsestreams.o.$(KARCH) via 'modload parsestreams.o.$(KARCH)' into the kernel" + + parsestreams.o.$(KARCH): parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +--- 40,46 ---- + rm -f parsestreams.o + + parsestreams.o: parsestreams.o.$(KARCH) +! @echo "--- You may load parsestreams.o.$(KARCH) via 'modload parsestreams.o' (put in e.g. /sys/<karch>/OBJ) into the kernel" + + parsestreams.o.$(KARCH): parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +diff -c parse/README.new_clocks:1.1.1.3 parse/README.new_clocks:3.5 +*** parse/README.new_clocks:1.1.1.3 Thu Mar 3 10:35:52 1994 +--- parse/README.new_clocks Thu Mar 3 10:35:53 1994 +*************** +*** 23,28 **** +--- 23,29 ---- + LONG second; + LONG usecond; + LONG utcoffset; /* in seconds */ ++ time_t utcoffset; /* true utc time instead of date/time */ + LONG flags; /* current clock status */ + }; + +*************** +*** 52,57 **** +--- 53,65 ---- + 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: + +diff -c parse/parse.c:1.1.1.9 parse/parse.c:3.22 +*** parse/parse.c:1.1.1.9 Thu Mar 3 10:36:06 1994 +--- parse/parse.c Thu Mar 3 10:36:07 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * +! * parse.c,v 3.21 1994/02/02 17:45:30 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * +! * parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 556,561 **** +--- 556,564 ---- + register int i; + time_t t; + ++ if (clock->utctime) ++ return clock->utctime; /* if the conversion routine gets it right away - why not */ ++ + if (clock->year < 100) + clock->year += 1900; + +*************** +*** 628,633 **** +--- 631,639 ---- + t += clock->utcoffset; /* warp to UTC */ + + /* done */ ++ ++ clock->utctime = t; /* documentray only */ ++ + return t; + } + +*************** +*** 890,895 **** +--- 896,903 ---- + + if (parseio->parse_flags & PARSE_FIXED_FMT) + { ++ clock.utctime = 0; ++ + switch ((cvtrtc = clockformats[format]->convert ? clockformats[format]->convert(parseio->parse_data, parseio->parse_index, clockformats[format]->data, &clock) : CVT_NONE) & CVT_MASK) + { + case CVT_FAIL: +*************** +*** 941,946 **** +--- 949,956 ---- + { + do + { ++ clock.utctime = 0; ++ + switch ((cvtrtc = (clockformats[format]->convert && !(clockformats[format]->flags & CVT_FIXEDONLY)) ? + clockformats[format]->convert(parseio->parse_data, parseio->parse_index, clockformats[format]->data, &clock) : + CVT_NONE) & CVT_MASK) +*************** +*** 1148,1153 **** +--- 1158,1166 ---- + * History: + * + * parse.c,v ++ * Revision 3.22 1994/02/25 12:34:49 kardel ++ * allow for converter generated utc times ++ * + * Revision 3.21 1994/02/02 17:45:30 kardel + * rcs ids fixed + * +diff -c parse/util/testdcf.c:1.1.1.6 parse/util/testdcf.c:3.11 +*** parse/util/testdcf.c:1.1.1.6 Thu Mar 3 10:36:27 1994 +--- parse/util/testdcf.c Thu Mar 3 10:36:27 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * +! * testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.11 1994/02/02 17:45:55 kardel Exp + * +! * testdcf.c,v 3.11 1994/02/02 17:45:55 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +diff -c xntpd/Makefile.tmpl:1.1.1.18 xntpd/Makefile.tmpl:3.28 +*** xntpd/Makefile.tmpl:1.1.1.18 Thu Mar 3 10:38:13 1994 +--- xntpd/Makefile.tmpl Thu Mar 3 10:38:13 1994 +*************** +*** 34,40 **** + refclock_wwvb.c refclock_goes.c refclock_mx4200.c \ + refclock_parse.c refclock_as2201.c refclock_omega.c \ + refclock_tpro.c refclock_leitch.c refclock_irig.c \ +! refclock_msfees.c refclock_gpstm.c ntp_intres.c ntp_filegen.c + + OBJS= ntp_config.o ntp_control.o ntp_io.o ntp_leap.o \ + ntp_loopfilter.o ntp_monitor.o ntp_peer.o ntp_proto.o \ +--- 34,41 ---- + refclock_wwvb.c refclock_goes.c refclock_mx4200.c \ + refclock_parse.c refclock_as2201.c refclock_omega.c \ + refclock_tpro.c refclock_leitch.c refclock_irig.c \ +! refclock_msfees.c refclock_gpstm.c refclock_trak.c \ +! ntp_intres.c ntp_filegen.c + + OBJS= ntp_config.o ntp_control.o ntp_io.o ntp_leap.o \ + ntp_loopfilter.o ntp_monitor.o ntp_peer.o ntp_proto.o \ +*************** +*** 44,50 **** + refclock_wwvb.o refclock_goes.o refclock_mx4200.o \ + refclock_parse.o refclock_as2201.o refclock_omega.o \ + refclock_tpro.o refclock_leitch.o refclock_irig.o \ +! refclock_msfees.o refclock_gpstm.o ntp_intres.o ntp_filegen.o + + all: $(PROGRAM) + +--- 45,52 ---- + refclock_wwvb.o refclock_goes.o refclock_mx4200.o \ + refclock_parse.o refclock_as2201.o refclock_omega.o \ + refclock_tpro.o refclock_leitch.o refclock_irig.o \ +! refclock_msfees.o refclock_gpstm.o refclock_trak.o \ +! ntp_intres.o ntp_filegen.o + + all: $(PROGRAM) + +*************** +*** 136,141 **** +--- 138,146 ---- + + refclock_msfees.o: refclock_msfees.c + $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c ++ ++ refclock_trak.o: refclock_trak.c ++ $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c + + refclock_gpstm.o: refclock_gpstm.c + $(CC) $(COPTS) $(DEFS) $(DEFS_LOCAL) $(CLOCKDEFS) $(INCL) -c $*.c +diff -c xntpd/ntp_control.c:1.1.1.17 xntpd/ntp_control.c:3.26 +*** xntpd/ntp_control.c:1.1.1.17 Thu Mar 3 10:38:16 1994 +--- xntpd/ntp_control.c Thu Mar 3 10:38:17 1994 +*************** +*** 301,307 **** + static u_char clocktypes[] = { + CTL_SST_TS_NTP, /* REFCLK_NONE */ + CTL_SST_TS_UNSPEC, /* REFCLK_LOCALCLOCK */ +! CTL_SST_TS_HF, /* REFCLK_WWV_HEATH */ + CTL_SST_TS_HF, /* REFCLK_WWV_PST */ + CTL_SST_TS_LF, /* REFCLK_WWVB_SPECTRACOM */ + CTL_SST_TS_UHF, /* REFCLK_GOES_TRUETIME */ +--- 301,307 ---- + static u_char clocktypes[] = { + CTL_SST_TS_NTP, /* REFCLK_NONE */ + CTL_SST_TS_UNSPEC, /* REFCLK_LOCALCLOCK */ +! CTL_SST_TS_HF, /* REFCLK_GPS_TRAK */ + CTL_SST_TS_HF, /* REFCLK_WWV_PST */ + CTL_SST_TS_LF, /* REFCLK_WWVB_SPECTRACOM */ + CTL_SST_TS_UHF, /* REFCLK_GOES_TRUETIME */ +diff -c xntpd/refclock_conf.c:1.1.1.22 xntpd/refclock_conf.c:3.21 +*** xntpd/refclock_conf.c:1.1.1.22 Thu Mar 3 10:38:54 1994 +--- xntpd/refclock_conf.c Thu Mar 3 10:38:54 1994 +*************** +*** 113,119 **** + struct refclock *refclock_conf[] = { + &refclock_none, /* 0 REFCLK_NONE */ + &refclock_local, /* 1 REFCLK_LOCAL */ +! &refclock_none, /* 2 REFCLK_WWV_HEATH */ + &refclock_pst, /* 3 REFCLK_WWV_PST */ + &refclock_wwvb, /* 4 REFCLK_WWVB_SPECTRACOM */ + &refclock_goes, /* 5 REFCLK_GOES_TRUETIME */ +--- 113,119 ---- + struct refclock *refclock_conf[] = { + &refclock_none, /* 0 REFCLK_NONE */ + &refclock_local, /* 1 REFCLK_LOCAL */ +! &refclock_trak, /* 2 REFCLK_GPS_TRAK */ + &refclock_pst, /* 3 REFCLK_WWV_PST */ + &refclock_wwvb, /* 4 REFCLK_WWVB_SPECTRACOM */ + &refclock_goes, /* 5 REFCLK_GOES_TRUETIME */ +RCS file: /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v +retrieving revision 1.1.1.12 +diff -c -r1.1.1.12 xntpd/refclock_parse.c +*** xntpd/refclock_parse.c:1.1.1.12 1994/02/22 21:57:57 +--- xntpd/refclock_parse.c 1994/03/03 09:49:54 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * +! * refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * +! * refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 129,135 **** + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp"; + #endif + + /**=========================================================================== +--- 129,135 ---- + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp"; + #endif + + /**=========================================================================== +*************** +*** 1653,1659 **** + * done if no more characters are available + */ + FD_SET(fd, &fdmask); +! if (select(fd + 1, &fdmask, 0, 0, &null_time) == 0) + return; + } + } +--- 1653,1660 ---- + * done if no more characters are available + */ + FD_SET(fd, &fdmask); +! if ((i == 0) && +! (select(fd + 1, &fdmask, 0, 0, &null_time) == 0)) + return; + } + } +*************** +*** 2823,2829 **** + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.49 1994/02/20 13:26:00 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +--- 2824,2830 ---- + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.26 b/usr.sbin/xntpd/patches/patch.26 new file mode 100644 index 0000000..a55360d --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.26 @@ -0,0 +1,36 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa24501; 5 Mar 94 21:23 EST +Received: from goofus.wustl.edu by louie.udel.edu id aa01087; 5 Mar 94 21:15 EST +Received: from mumps.pfcs.com by goofus.wustl.edu with UUCP id AA17154 + (5.67a+/IDA-1.5 for mills@udel.edu); Sat, 5 Mar 1994 20:15:06 -0600 +Received: by mumps.pfcs.com id AA09821 + (5.65c/IDA-1.4.4 for mills@udel.edu); Sat, 5 Mar 1994 19:10:18 -0600 +Date: Sat, 5 Mar 1994 19:10:18 -0600 +From: Harlan Stenn <harlan@mumps.pfcs.com> +Message-Id: <199403060110.AA09821@mumps.pfcs.com> +To: mills@udel.edu +Subject: xntpd/Makefile and 3.3l + +Dave, + +xntpd/Makefile doesn't get -DSYS_whatever and -DHAVE_xxx_TTYS "installed" +when the Makefile gets created. This is for OS=mips. + +Same for xntpdc/Makefile. + +A patch follows... + +Harlan + +PS - might you have a copy of the message I sent you a couple of weeks +ago where I asked about broadcast servers and clients and the ntp.conf +file? I was going to send it to the maling list but I lost my copy. + +machines/mips +3,4c3,4 +< DEFS= +< AUTHDEFS= -DDES -DMD5 -DSYS_MIPS -DHAVE_BSD_TTYS +--- +> DEFS= -DSYS_MIPS -DHAVE_BSD_TTYS +> AUTHDEFS= -DDES -DMD5 + diff --git a/usr.sbin/xntpd/patches/patch.27 b/usr.sbin/xntpd/patches/patch.27 new file mode 100644 index 0000000..5d450d4 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.27 @@ -0,0 +1,86 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa23654; 11 Mar 94 7:49 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa14038; + 10 Mar 94 14:14 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA13885 (5.65c-6/7.3v-FAU); Thu, 10 Mar 1994 20:10:36 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA03872 (5.65c-6/7.3m-FAU); Thu, 10 Mar 1994 20:10:33 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403101910.AA03872@faui43.informatik.uni-erlangen.de> +Subject: RAW dcf77 showstopper 8-(. +To: mills@udel.edu +Date: Thu, 10 Mar 94 20:10:25 MET +Cc: dpk@morgan.com, Frank.Kardel@informatik.uni-erlangen.de, + Piete.Brooks@cl.cam.ac.uk, jcs@bear.zoo.bt.co.uk +X-Mailer: ELM [version 2.3 PL11] + +Hi, my changes for 3.3m introduced a subtle reliability problem for +the cheap DCF77 receiver code - it only returned somtimes the +correct time 8-(. + +Well, here is the patch. (I'll post this one to the news group +also as it is a show stopper for the cheap clocks 8-(). So +don't be confused. + + +RCS file: /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v +retrieving revision 3.12 +diff -c -r3.12 clk_rawdcf.c +*** parse/clk_rawdcf.c:3.12 1994/02/20 13:04:39 +--- parse/clk_rawdcf.c 1994/03/10 19:00:43 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.12 1994/02/20 13:04:39 kardel Exp + * +! * clk_rawdcf.c,v 3.12 1994/02/20 13:04:39 kardel Exp + * + * Raw DCF77 pulse clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.13 1994/03/10 19:00:43 kardel Exp + * +! * clk_rawdcf.c,v 3.13 1994/03/10 19:00:43 kardel Exp + * + * Raw DCF77 pulse clock support + * +*************** +*** 245,250 **** +--- 245,251 ---- + parseprintf(DD_RAWDCF,("parse: convert_rawdcf: parity check passed\n")); + + clock->flags = PARSEB_S_ANTENNA|PARSEB_S_LEAP; ++ clock->utctime= 0; + clock->usecond= 0; + clock->second = 0; + clock->minute = ext_bf(buffer, DCF_M10, dcfparam->zerobits); +*************** +*** 528,534 **** + /* + * History: + * +! * clk_rawdcf.c,v + * Revision 3.12 1994/02/20 13:04:39 kardel + * parse add/delete second support + * +--- 529,538 ---- + /* + * History: + * +! * clk_rawdcf.c,v +! * Revision 3.13 1994/03/10 19:00:43 kardel +! * clear utctime field to avoid confusion on synthesize time stamps +! * + * Revision 3.12 1994/02/20 13:04:39 kardel + * parse add/delete second support + * + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.28 b/usr.sbin/xntpd/patches/patch.28 new file mode 100644 index 0000000..37e2065 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.28 @@ -0,0 +1,454 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa07183; 13 Mar 94 23:57 EST +Received: from hpsdlo.sdd.hp.com by louie.udel.edu id aa17483; + 13 Mar 94 23:50 EST +Received: from hpsdlz.sdd.hp.com by hpsdlo.sdd.hp.com with SMTP + (1.36.108.4/15.5+IOS 3.21+sdd) id AA07032; Sun, 13 Mar 1994 20:50:23 -0800 +Received: from localhost by hpsdlz.sdd.hp.com with SMTP + (1.36.108.4/15.5+IOS 3.21+sdd) id AA05726; Sun, 13 Mar 1994 20:50:21 -0800 +Message-Id: <9403140450.AA05726@hpsdlz.sdd.hp.com> +To: mills@udel.edu +Subject: patches for xntpd +Date: Sun, 13 Mar 1994 20:50:21 -0800 +From: Ken Stone <ken@sdd.hp.com> + + +Ok Dave, + +I guess I'll take a poke at the "m" version for cleanup and updates. This +should take care of the newly released 9.03 for s300/s400 which has the +adjtime(2) syscall. Also, cleanup in readiness for 10.0 all around. + + -- Ken + +P.S. How is your HP hardware/software deal going ? I haven't heard anything + lately. + + + +First do a "rm */hpux10+*" as I have renamed all that to hpux-adj ... that +9.03 blew me out of the water on the naming scheme :-) + +Then unshar the following ... it will add a few new files and give you +diff to apply (diffs.hpux). + + +#---------------------------------- cut here ---------------------------------- +# This is a shell archive. Remove anything before this line, +# then unpack it by saving it in a file and typing "sh file". +# +# Wrapped by Source Hacker <src@hpsdlz> on Sun Mar 13 20:47:57 1994 +# +# This archive contains: +# compilers/hpux-adj.cc compilers/hpux-adj.gcc +# machines/hpux-adj scripts/hpadjtime.sh +# diffs.hpux +# +# Error checking via wc(1) will be performed. +# Error checking via sum(1) will be performed. + +LANG=""; export LANG +PATH=/bin:/usr/bin:$PATH; export PATH + +if sum -r </dev/null >/dev/null 2>&1 +then + sumopt='-r' +else + sumopt='' +fi + +echo x - compilers/hpux-adj.cc +cat >compilers/hpux-adj.cc <<'@EOF' +COMPILER=cc +O1 +@EOF +set `sum $sumopt <compilers/hpux-adj.cc`; if test $1 -ne 22541 +then + echo ERROR: compilers/hpux-adj.cc checksum is $1 should be 22541 +fi +set `wc -lwc <compilers/hpux-adj.cc` +if test $1$2$3 != 1216 +then + echo ERROR: wc results of compilers/hpux-adj.cc are $* should be 1 2 16 +fi + +chmod 644 compilers/hpux-adj.cc + +echo x - compilers/hpux-adj.gcc +cat >compilers/hpux-adj.gcc <<'@EOF' +COMPILER=gcc -O2 +@EOF +set `sum $sumopt <compilers/hpux-adj.gcc`; if test $1 -ne 23593 +then + echo ERROR: compilers/hpux-adj.gcc checksum is $1 should be 23593 +fi +set `wc -lwc <compilers/hpux-adj.gcc` +if test $1$2$3 != 1217 +then + echo ERROR: wc results of compilers/hpux-adj.gcc are $* should be 1 2 17 +fi + +chmod 644 compilers/hpux-adj.gcc + +echo x - machines/hpux-adj +cat >machines/hpux-adj <<'@EOF' +SHELL= /bin/sh +RANLIB= ls # ar does the work of ranlib under System V +DEFS_LOCAL= -DREFCLOCK +DEFS= -DHAVE_TERMIOS -DSYS_HPUX=10 +AUTHDEFS= -DDES -DMD5 +CLOCKDEFS= -DLOCAL_CLOCK +COPTS= +INSTALL=$(TOP)scripts/install.sh +@EOF +set `sum $sumopt <machines/hpux-adj`; if test $1 -ne 42265 +then + echo ERROR: machines/hpux-adj checksum is $1 should be 42265 +fi +set `wc -lwc <machines/hpux-adj` +if test $1$2$3 != 826251 +then + echo ERROR: wc results of machines/hpux-adj are $* should be 8 26 251 +fi + +chmod 644 machines/hpux-adj + +echo x - scripts/hpadjtime.sh +cat >scripts/hpadjtime.sh <<'@EOF' +#! /bin/sh + +if [ -f /bin/uname -o -f /usr/bin/uname ]; then + set `uname -a | tr '[A-Z]' '[a-z]'` + case "$1" in + hp-ux) case "$3" in + *.10.*) val=1 ;; + *.09.03) case "$5" in + 9000/3*) val=1 ;; + *) val=0 ;; + esac ;; + *) val=0 ;; + esac + ;; + *) + esac +fi +exit $val +@EOF +set `sum $sumopt <scripts/hpadjtime.sh`; if test $1 -ne 1497 +then + echo ERROR: scripts/hpadjtime.sh checksum is $1 should be 1497 +fi +set `wc -lwc <scripts/hpadjtime.sh` +if test $1$2$3 != 1850287 +then + echo ERROR: wc results of scripts/hpadjtime.sh are $* should be 18 50 287 +fi + +chmod 755 scripts/hpadjtime.sh + +echo x - diffs.hpux +cat >diffs.hpux <<'@EOF' +*** xntp3.3m.orig/compilers/hpux.cc Thu Sep 2 13:19:56 1993 +--- xntp3.3m/compilers/hpux.cc Sun Mar 13 12:10:23 1994 +*************** +*** 1,2 **** +! COMPILER=cc +! COPTS=+O1 +--- 1 ---- +! COMPILER=cc +O1 +*** xntp3.3m.orig/compilers/hpux.gcc Thu Sep 2 13:19:59 1993 +--- xntp3.3m/compilers/hpux.gcc Sun Mar 13 12:10:29 1994 +*************** +*** 1,2 **** +! COMPILER=gcc +! COPTS=-O2 +--- 1 ---- +! COMPILER=gcc -O2 +*** xntp3.3m.orig/hints/hpux Fri Dec 3 02:28:57 1993 +--- xntp3.3m/hints/hpux Sun Mar 13 20:20:38 1994 +*************** +*** 1,59 **** + This file hopefully describes the whatever and however of how to get xntp +! running on hpux 8.0 and later s300, s700, and s800. + + First off, all the standard disclaimers hold here ... HP doesn't have anthing + to do with this stuff. I fool with it in my spare time because we use it and + because I like to. We just happen to have a lot of HP machines around here :-) +! Xntp has been in use here for several months and has a fair amount of mileage + on various HP platforms within the company. I can't really guarantee bug fixes + but I'd certainly like to hear about bugs and I won't hestitate to look at + any fixes sent to me. + +! Now lets talk OS. If you don't have 8.0 or later, pretty much hang it up now. +! This stuff has run here on 8.0 s300, s700, and s800. Its possible that it +! runs on 7.0 but I have not tried v3 code on 7.0 at all. + +! [Note that recent reports state that this release does in fact run on HP +! 300 and 400 boxes, which run 7.0 - Ed.] + +! Next, let me explain a bit about how this stuff works on HP-UX since we don't + have adjtime(2). The directory adjtime contains libadjtime.a and the adjtimed + daemon. Instead of the adjtime(2) system call, we use a library routine to + talk to adjtimed thru message queues. Adjtimed munges into /dev/kmem and + causes the clock to skew properly as needed. PLEASE NOTE that the adjtime + code provided here is NOT a general replacement for adjtime(2) ... use of +! this adjtime(3)/adjtimed(8) other than here may yield very odd results. + + What to do to get this stuff running ? + +! * cd .. +! * Say "make makeconfig" + +! * cd .. +! * Say "make", sit back for a few minutes. + + * cd authstuff + * Say "./authcert < certdata" and check the output. Every line should + end with "OK" ... if not, we got trouble. + * Now try "./authspeed auth.samplekeys". What we want to + remember here is the "authentication delay in CPU time" + +! * cd .. +! * Now we need to install this stuff ... make install will not work +! unless you have replaced the SYSV install command with a BSD +! compatible version. So ... the simplest thing to do is run +! make -n install and do manually what it would have done. + + * I'd suggest reading the xntp docs about now :-) ... seriously !! + +! * Check out the docs and the stuff in xntp/conf and build a config +! file ... put it in /usr/local/etc/xntp.conf (or where ever you +! defined the config file to be in Config). One thing we have +! added to this version of xntpd is a way to select config files +! if you are sharing /usr/local thru NFS or whatever. If the +! file /usr/local/etc/xntp.conf happens to be a directory, the files +! in that directory are searched until a match is found. The rules +! for a match are: + + 1. Our hostname + 2. default.<machine id> (as in default.375 or default.850) +--- 1,63 ---- ++ Last update: Sun Mar 13 15:05:31 PST 1994 ++ + This file hopefully describes the whatever and however of how to get xntp +! running on hpux 7.0 and later s300. s400, s700, and s800. + + First off, all the standard disclaimers hold here ... HP doesn't have anthing + to do with this stuff. I fool with it in my spare time because we use it and + because I like to. We just happen to have a lot of HP machines around here :-) +! Xntpd has been in use here for several years and has a fair amount of mileage + on various HP platforms within the company. I can't really guarantee bug fixes + but I'd certainly like to hear about bugs and I won't hestitate to look at + any fixes sent to me. + +! Now lets talk OS. If you don't have 7.0 or later, pretty much hang it up now. +! This stuff has run here on pretty much everything from 8.0 upward on s300, +! s700, and s800. It is known to run on 7.0 s300/s400 but all reports are +! from the field and not my personal experience. + +! If you are lucky enough to have a s300 or s400 with 9.03, then you no longer +! have to worry about adjtimed as HP-UX now has adjtime(2). The rest of you +! will have to wait on 10.0 which will have adjtime(2) and a supported though +! a bit older version of xntpd. + +! Next, let me explain a bit about how this stuff works on HP-UX's that do not + have adjtime(2). The directory adjtime contains libadjtime.a and the adjtimed + daemon. Instead of the adjtime(2) system call, we use a library routine to + talk to adjtimed thru message queues. Adjtimed munges into /dev/kmem and + causes the clock to skew properly as needed. PLEASE NOTE that the adjtime + code provided here is NOT a general replacement for adjtime(2) ... use of +! this adjtime(3)/adjtimed(8) other than with xntpd may yield very odd results. + + What to do to get this stuff running ? + +! * If you are running an OS less than 10.0 or do not have a s300/s400 +! with 9.03 or better +! -> cd machines +! -> vi hpux +! -> (change -DSYS_HPUX=? to match whatever you are running [7,8,9]) +! -> cd .. + +! * Say "make makeconfig" + ++ * Say "make", sit back for a few minutes. ++ + * cd authstuff + * Say "./authcert < certdata" and check the output. Every line should + end with "OK" ... if not, we got trouble. + * Now try "./authspeed auth.samplekeys". What we want to + remember here is the "authentication delay in CPU time" ++ * cd .. + +! * Say "make install" + + * I'd suggest reading the xntp docs about now :-) ... seriously !! + +! * One thing I have added to this version of xntpd is a way to select +! config files if you are sharing /usr/local thru NFS or whatever. +! If the file /usr/local/etc/xntp.conf happens to be a directory, the +! files in that directory are searched until a match is found. The +! rules for a match are: + + 1. Our hostname + 2. default.<machine id> (as in default.375 or default.850) +*************** +*** 72,76 **** +--- 76,92 ---- + + * On some 320's and 835's we have had to run adjtimed with "-p 45" or + so to get rid of syslog messages about "last adjust did not finish". ++ ++ * At 9.0, there is a problem with DIAGMON (patch available from the ++ response center) which causes it to delete the message queue that ++ adjtimed/xntpd use to communicate. (see next note for result) ++ ++ * Xntpd has been known to get really ticked off when adjtime() fails ++ which is usually only while running the emulation code on HP-UX. ++ When it gets mad, it usually jumps the clock into never never land. ++ Possible reasons for this are adjtimed being killed or just never ++ started or adjtimed being completely swapped out on a really busy ++ machine (newer adjtimed try to lock themselves in memory to prevent ++ this one). + + Anything else ... just drop me a line at ken@sdd.hp.com +*** xntp3.3m.orig/include/ntp_machine.h Sun Feb 27 19:34:59 1994 +--- xntp3.3m/include/ntp_machine.h Sun Mar 13 15:35:33 1994 +*************** +*** 334,341 **** + #define setlinebuf(f) setvbuf(f, NULL, _IOLBF, 0) + #define NO_SIGNED_CHAR_DECL + #define LOCK_PROCESS +- #define HAVE_NO_NICE /* HPUX uses rtprio instead */ + #define RETSIGTYPE void + #if (SYS_HPUX < 10) + #define NOKMEM + #else +--- 334,345 ---- + #define setlinebuf(f) setvbuf(f, NULL, _IOLBF, 0) + #define NO_SIGNED_CHAR_DECL + #define LOCK_PROCESS + #define RETSIGTYPE void ++ #if (SYS_HPUX < 9) ++ #define HAVE_NO_NICE /* HPUX uses rtprio instead */ ++ #else ++ #define HAVE_BSD_NICE /* new at 9.X */ ++ #endif + #if (SYS_HPUX < 10) + #define NOKMEM + #else +*** xntp3.3m.orig/lib/Makefile.tmpl Wed Feb 2 21:20:13 1994 +--- xntp3.3m/lib/Makefile.tmpl Sun Mar 13 16:27:50 1994 +*************** +*** 49,55 **** + $(LIBNAME).a: $(OBJS) + ar rv $@ $? + -rm -f $? +! @if ( hp-pa || hp-mc680x0 ) > /dev/null 2>&1; then \ + ( cd ../adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" ) && ar rv $@ ../adjtime/adjtime.o; \ + else \ + :; \ +--- 49,55 ---- + $(LIBNAME).a: $(OBJS) + ar rv $@ $? + -rm -f $? +! @if ( ../scripts/hpadjtime.sh ) > /dev/null 2>&1; then \ + ( cd ../adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" ) && ar rv $@ ../adjtime/adjtime.o; \ + else \ + :; \ +*** xntp3.3m.orig/scripts/Guess.sh Wed Jan 26 15:26:03 1994 +--- xntp3.3m/scripts/Guess.sh Sun Mar 13 14:10:19 1994 +*************** +*** 40,46 **** + guess="ultrix" + ;; + hp-ux) case "$3" in +! *.10.*) guess="hpux10+" ;; + *) guess="hpux" ;; + esac + ;; +--- 40,50 ---- + guess="ultrix" + ;; + hp-ux) case "$3" in +! *.10.*) guess="hpux-adj" ;; +! *.09.03) case "$5" in +! 9000/3*) guess="hpux-adj" ;; +! *) guess="hpux" ;; +! esac ;; + *) guess="hpux" ;; + esac + ;; +*** xntp3.3m.orig/util/tickadj.c Wed Feb 2 21:20:17 1994 +--- xntp3.3m/util/tickadj.c Sun Mar 13 13:55:53 1994 +*************** +*** 388,393 **** +--- 388,409 ---- + #endif + #endif + ++ #if defined(SYS_HPUX) ++ #define X_TICKADJ 0 ++ #define X_TICK 1 ++ #define X_DEF ++ static struct nlist nl[] = ++ #ifdef hp9000s300 ++ { {"_tickadj"}, ++ {"_old_tick"}, ++ #else ++ { {"tickadj"}, ++ {"old_tick"}, ++ #endif ++ {""}, ++ }; ++ #endif ++ + #if !defined(X_DEF) + #define X_TICKADJ 0 + #define X_TICK 1 +*************** +*** 408,413 **** +--- 424,430 ---- + "/kernel/unix", + "/386bsd", + "/netbsd", ++ "/hp-ux", + NULL + }; + struct stat stbuf; +*** xntp3.3m.orig/xntpd/ntp_loopfilter.c Sun Feb 27 19:36:16 1994 +--- xntp3.3m/xntpd/ntp_loopfilter.c Sun Mar 13 14:03:54 1994 +*************** +*** 349,356 **** + } + } + #endif /* HAVE_BSD_TTYS */ +- fdpps = fd232; + #endif /* HPUXGADGET */ + + /* + * Insert in device list. +--- 349,356 ---- + } + } + #endif /* HAVE_BSD_TTYS */ + #endif /* HPUXGADGET */ ++ fdpps = fd232; + + /* + * Insert in device list. +@EOF +set `sum $sumopt <diffs.hpux`; if test $1 -ne 46307 +then + echo ERROR: diffs.hpux checksum is $1 should be 46307 +fi +set `wc -lwc <diffs.hpux` +if test $1$2$3 != 288172410391 +then + echo ERROR: wc results of diffs.hpux are $* should be 288 1724 10391 +fi + +chmod 664 diffs.hpux + +exit 0 + + + diff --git a/usr.sbin/xntpd/patches/patch.29 b/usr.sbin/xntpd/patches/patch.29 new file mode 100644 index 0000000..ee161a2 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.29 @@ -0,0 +1,52 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa24239; 16 Mar 94 18:01 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa18720; + 16 Mar 94 17:57 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA25324 (5.65c-6/7.3v-FAU); Wed, 16 Mar 1994 23:57:39 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA18230 (5.65c-6/7.3m-FAU); Wed, 16 Mar 1994 23:57:37 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403162257.AA18230@faui43.informatik.uni-erlangen.de> +Subject: hpadjtime.sh +To: mills@udel.edu, ken@sdd.hp.com +Date: Wed, 16 Mar 94 23:57:32 MET +Return-Receipt-To: "Frank Kardel" <Frank.Kardel@informatik.uni-erlangen.de> +X-Mailer: ELM [version 2.3 PL11] + +Hi, 3.3n is somewhat broken... + +First of all + - scripts/hpadjtime.sh is missing (it's in patch.28) + +And + - scripts/hpadjtime.sh is broken for non hp-ux + (will try to build adjtime libs on non hp-ux architectures + as a default value was no set) + +Please use this version of scripts/hpadjtime.sh for increased safety: + +#! /bin/sh +val=1 +if [ -f /bin/uname -o -f /usr/bin/uname ]; then + set `uname -a | tr '[A-Z]' '[a-z]'` + case "$1" in + hp-ux) case "$3" in + *.10.*) val=1 ;; + *.09.03) case "$5" in + 9000/3*) val=1 ;; + *) val=0 ;; + esac ;; + *) val=0 ;; + esac + ;; + *) + esac +fi +exit $val + +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.3 b/usr.sbin/xntpd/patches/patch.3 new file mode 100644 index 0000000..beba805 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.3 @@ -0,0 +1,3032 @@ +diff -c TODO:1.1.1.3 TODO:3.5 +*** TODO:1.1.1.3 Wed Jan 26 21:46:47 1994 +--- TODO Wed Jan 26 21:46:48 1994 +*************** +*** 1,5 **** + # +! # TODO,v 3.4 1994/01/23 17:19:06 kardel Exp + # + This file contains problems known to the authors that still need to be done. + We would appreciate if you could spare some of your time to look through +--- 1,5 ---- + # +! # TODO,v 3.5 1994/01/25 19:03:55 kardel Exp + # + This file contains problems known to the authors that still need to be done. + We would appreciate if you could spare some of your time to look through +diff -c doc/xntpd.8:1.1.1.11 doc/xntpd.8:3.21 +*** doc/xntpd.8:1.1.1.11 Wed Jan 26 21:47:54 1994 +--- doc/xntpd.8 Wed Jan 26 21:47:55 1994 +*************** +*** 74,79 **** +--- 74,85 ---- + ] [ + .B -t + .I trustedkey ++ ] [ ++ .B -v ++ .I variable ++ ] [ ++ .B -V ++ .I variable + ] + .SH DESCRIPTION + .I Xntpd +*************** +*** 140,145 **** +--- 146,155 ---- + specify a directory to be used for creating statistics files + .Ip -t 8 + add a key number to the trusted key list ++ .Ip -v 8 ++ add a system variable ++ .Ip -V 8 ++ add a system variable listed by default + .SH "CONFIGURATION FILE OPTIONS" + .IR Xntpd 's + configuration file is relatively free format. Comments, which may be +*************** +*** 494,499 **** +--- 504,534 ---- + This command is obsolete and not available in this version of + .I xntpd. + .PP ++ .B setvar ++ .I variable ++ .I [default] ++ .PP ++ 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 from <name>=<value> is followed by the ++ .I 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 overide any variables defined ++ via the ++ .I setvar ++ mechanism. ++ .PP ++ There are three special variables that contain the names of all variable of ++ the same group. The ++ .I sys_var_list ++ holds the names of all system variables. The ++ .I peer_var_list ++ holds the names of all peer variables and the ++ .I clock_var_list ++ hold the names of the reference clock variables. ++ .PP + .B resolver + .I /path/xntpres + .PP +*************** +*** 1093,1101 **** + time. + On the availability of PPS information the + .I time2 +! fudge factor show the difference betwteen the PPS time stamp and the reception +! time stamp of the serial signal. This parameter is read only attempts to +! set this parameter will be ignored. + The + .I flag0 + enables input filtering. This a median filter with continuous sampling. The +--- 1128,1140 ---- + time. + On the availability of PPS information the + .I time2 +! fudge factor defines the skew between the PPS time stamp and the reception +! time stamp of the PPS signal. This parameter is usually 0 as usually +! the PPS signal is believed in time and OS delays should be corrected +! in the machine specific section of the kernel driver. +! .I time2 +! needs only be set when the actial PPS signal is delayed for some +! reason. + The + .I flag0 + enables input filtering. This a median filter with continuous sampling. The +*************** +*** 1109,1121 **** + .I ntpq + timecode variable + .PP +! The timecode variable in the ntpq read clock variable command contains several +! fields. The first field is the local time in Unix format. The second field is +! the offset to UTC (format HHMM). The currently active receiver flags are listed +! next. Additional feature flags of the receiver are optionally listed in paranthesis. +! The actual time code is enclosed in angle brackets < >. A qualification of the +! decoded time code format is following the time code. The last piece of information +! is the overall running time and the accumulated times for the clock event states. + .PP + Unit encoding + .PP +--- 1148,1172 ---- + .I ntpq + timecode variable + .PP +! The ntpq read clock variables command list several variables. These +! hold followinf information: +! .I refclock_time +! is the local time with the offset to UTC (format HHMM). +! The currently active receiver flags are listed in +! .I refclock_status. +! Additional feature flags of the receiver are optionally listed in paranthesis. +! The actual time code is listed in +! .I timecode. +! A qualification of the decoded time code format is following in +! .I refclock_format. +! The last piece of information is the overall running time and the accumulated +! times for the clock event states in +! .I refclock_states. +! When PPS information is present additional variable are available. +! .I refclock_ppstime +! lists then the PPS timestamp and +! .I refclock_ppsskew +! lists the difference between RS232 derived timestamp and the PPS timestamp. + .PP + Unit encoding + .PP +diff -c include/ntp_control.h:1.1.1.5 include/ntp_control.h:3.6 +*** include/ntp_control.h:1.1.1.5 Wed Jan 26 21:48:21 1994 +--- include/ntp_control.h Wed Jan 26 21:48:21 1994 +*************** +*** 163,171 **** + #define CS_SYSTEM 17 + #define CS_KEYID 18 + #define CS_REFSKEW 19 +! #define CS_VERSION 20 + +! #define CS_MAXCODE CS_VERSION + + /* + * Peer variables we understand +--- 163,171 ---- + #define CS_SYSTEM 17 + #define CS_KEYID 18 + #define CS_REFSKEW 19 +! #define CS_VARLIST 20 + +! #define CS_MAXCODE CS_VARLIST + + /* + * Peer variables we understand +*************** +*** 204,212 **** + #define CP_SENT 32 + #define CP_FILTERROR 33 + #define CP_FLASH 34 +! #define CP_DISP 35 +! #define CP_MAXCODE CP_DISP + + /* + * Clock variables we understand + */ +--- 204,213 ---- + #define CP_SENT 32 + #define CP_FILTERROR 33 + #define CP_FLASH 34 +! #define CP_VARLIST 35 + ++ #define CP_MAXCODE CP_VARLIST ++ + /* + * Clock variables we understand + */ +*************** +*** 222,229 **** + #define CC_FUDGEVAL2 10 + #define CC_FLAGS 11 + #define CC_DEVICE 12 + +! #define CC_MAXCODE CC_DEVICE + + /* + * Definition of the structure used internally to hold trap information. +--- 223,231 ---- + #define CC_FUDGEVAL2 10 + #define CC_FLAGS 11 + #define CC_DEVICE 12 ++ #define CC_VARLIST 13 + +! #define CC_MAXCODE CC_VARLIST + + /* + * Definition of the structure used internally to hold trap information. +diff -c include/ntp_filegen.h:1.1.1.3 include/ntp_filegen.h:3.7 +*** include/ntp_filegen.h:1.1.1.3 Wed Jan 26 21:48:22 1994 +--- include/ntp_filegen.h Wed Jan 26 21:48:22 1994 +*************** +*** 1,5 **** + /* +! * ntp_filegen.h,v 3.6 1993/09/01 21:51:24 kardel Exp + * + * definitions for NTP file generations support + * +--- 1,5 ---- + /* +! * ntp_filegen.h,v 3.7 1994/01/25 19:04:16 kardel Exp + * + * definitions for NTP file generations support + * +diff -c include/ntp_machine.h:1.1.1.9 include/ntp_machine.h:1.24 +*** include/ntp_machine.h:1.1.1.9 Wed Jan 26 21:48:27 1994 +--- include/ntp_machine.h Wed Jan 26 21:48:27 1994 +*************** +*** 123,134 **** + + HAVE_UNISTD_H - Maybe should be part of NTP_POSIX_SOURCE ? + + You could just put the defines on the DEFS line in machines/<os> file. + I don't since there are lost of different types compiler that a systemm might + have, some that can do proto typing and others that cannot on the saem system. + I get a chanse to twiddle some of the configuration paramasters at compile + time based on compler/machine combinatsions by using this include file. +! See convex, aix and sun configurations see how complex it get. + + */ + +--- 123,138 ---- + + HAVE_UNISTD_H - Maybe should be part of NTP_POSIX_SOURCE ? + ++ DEFINITIONS FOR SYSTEM && PROCESSOR ++ STR_SYSTEM - value of system variable ++ STR_PROCESSOR - value of processor variable ++ + You could just put the defines on the DEFS line in machines/<os> file. + I don't since there are lost of different types compiler that a systemm might + have, some that can do proto typing and others that cannot on the saem system. + I get a chanse to twiddle some of the configuration paramasters at compile + time based on compler/machine combinatsions by using this include file. +! See convex, aix and sun configurations see how complex it gets. + + */ + +*************** +*** 152,157 **** +--- 156,164 ---- + #endif + #endif /*_BSD */ + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/AIX" ++ #endif + #endif /* RS6000 */ + + /* +*************** +*** 166,171 **** +--- 173,181 ---- + #define RETSIGTYPE void + #define NTP_SYSCALL_GET 132 + #define NTP_SYSCALL_ADJ 147 ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/SunOS 4.x" ++ #endif + #endif + + /* +*************** +*** 182,188 **** +--- 192,201 ---- + #define NTP_POSIX_SOURCE + #define HAVE_ATT_SETPGRP + #define HAVE_ATT_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/SINIX-M" + #endif ++ #endif + + /* + * SunOS 5.1 or SunOS 5.2 or Solaris 2.1 or Solaris 2.2 +*************** +*** 198,203 **** +--- 211,219 ---- + #define HAVE_ATT_SETPGRP + #define HAVE_ATT_NICE + #define UDP_WILDCARD_DELIVERY ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Solaris 2.x" ++ #endif + #endif + + /* +*************** +*** 221,227 **** +--- 237,246 ---- + #define NTP_POSIX_SOURCE + #define HAVE_ATT_SETPGRP + #endif ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/ConvexOS" + #endif ++ #endif + + /* + * IRIX 4.X and IRIX 5.x +*************** +*** 235,240 **** +--- 254,262 ---- + #define HAVE_ATT_SETPGRP + #define HAVE_BSD_NICE + #define NTP_POSIX_SOURCE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/IRIX" ++ #endif + #endif + + /* +*************** +*** 247,253 **** +--- 269,278 ---- + #define HAVE_BSD_NICE + #define RETSIGTYPE void + #define NTP_SYSCALLS_STD ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Ultrix" + #endif ++ #endif + + /* + * AUX +*************** +*** 272,277 **** +--- 297,305 ---- + #define HAVE_BSD_TTYS + #define LOG_NTP LOG_LOCAL1 + #define HAVE_SIGNALED_IO ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/AUX" ++ #endif + #endif + + /* +*************** +*** 283,289 **** +--- 311,320 ---- + #define HAVE_BSD_NICE + #define HAVE_N_UN + #undef NTP_POSIX_SOURCE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Next" + #endif ++ #endif + + /* + * HPUX +*************** +*** 301,306 **** +--- 332,340 ---- + #else + #define HAVE_READKMEM + #endif ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/HPUX" ++ #endif + #endif + + /* +*************** +*** 311,316 **** +--- 345,353 ---- + #define HAVE_LIBKVM + #define NTP_POSIX_SOURCE + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/BSDI" ++ #endif + #define HAVE_BSD_TTYS + #endif + +*************** +*** 327,332 **** +--- 364,372 ---- + * along with a standard name one day ! */ + #define ntp_adjtime __adjtimex + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Linux" ++ #endif + #endif + + /* +*************** +*** 338,344 **** +--- 378,387 ---- + #define HAVE_READKMEM + #define NTP_POSIX_SOURCE + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/*BSD" + #endif ++ #endif + + /* + * DECOSF1 +*************** +*** 349,354 **** +--- 392,400 ---- + #define NTP_POSIX_SOURCE + #define NTP_SYSCALLS_STD + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/DECOSF1" ++ #endif + #endif + + /* +*************** +*** 358,364 **** +--- 404,413 ---- + #define HAVE_READKMEM + #define S_CHAR_DEFINED + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/I386" + #endif ++ #endif + + /* + * Mips +*************** +*** 366,371 **** +--- 415,423 ---- + #if defined(SYS_MIPS) + #define NOKMEM + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Mips" ++ #endif + #endif + + /* +*************** +*** 373,379 **** +--- 425,434 ---- + */ + #if defined(SYS_SEQUENT) + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Sequent Dynix 3" + #endif ++ #endif + + /* + * PTX +*************** +*** 407,412 **** +--- 462,470 ---- + typedef unsigned short u_short; + typedef unsigned long u_long; + #endif ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Sequent PTX" ++ #endif + #endif + + +*************** +*** 417,423 **** +--- 475,484 ---- + #define NO_SIGNED_CHAR_DECL + #define HAVE_READKMEM + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Sony" + #endif ++ #endif + + /* + * VAX +*************** +*** 426,431 **** +--- 487,495 ---- + #define NO_SIGNED_CHAR_DECL + #define HAVE_READKMEM + #define HAVE_BSD_NICE ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/VAX" ++ #endif + #endif + + /* +*************** +*** 445,455 **** + #define LOCK_PROCESS + #define SYSV_TIMEOFDAY + #define SIZE_RETURNED_IN_BUFFER +! #endif +! +! #ifdef STREAM /* STREAM implies TERMIOS */ +! #ifndef HAVE_TERMIOS +! #define HAVE_TERMIOS + #endif + #endif + +--- 509,516 ---- + #define LOCK_PROCESS + #define SYSV_TIMEOFDAY + #define SIZE_RETURNED_IN_BUFFER +! #ifndef STR_SYSTEM +! #define STR_SYSTEM "UNIX/SysVR4" + #endif + #endif + +*************** +*** 464,469 **** +--- 525,539 ---- + #define NTP_SYSCALLS_STD + #define USE_PROTOTYPES + #define UDP_WILDCARD_DELIVERY ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/DOMAINOS" ++ #endif ++ #endif ++ ++ #ifdef STREAM /* STREAM implies TERMIOS */ ++ #ifndef HAVE_TERMIOS ++ #define HAVE_TERMIOS ++ #endif + #endif + + #ifndef RETSIGTYPE +diff -c include/ntp_refclock.h:1.1.1.8 include/ntp_refclock.h:3.8 +*** include/ntp_refclock.h:1.1.1.8 Wed Jan 26 21:48:28 1994 +--- include/ntp_refclock.h Wed Jan 26 21:48:28 1994 +*************** +*** 75,84 **** + LONG fudgeval2; + u_char currentstatus; + u_char lastevent; +! u_char unused[1]; + }; + +- + /* + * Reference clock I/O structure. Used to provide an interface between + * the reference clock drivers and the I/O module. +--- 75,84 ---- + LONG fudgeval2; + u_char currentstatus; + u_char lastevent; +! u_char unused; +! struct ctl_var *kv_list; /* additional variables */ + }; + + /* + * Reference clock I/O structure. Used to provide an interface between + * the reference clock drivers and the I/O module. +diff -c include/ntpd.h:1.1.1.6 include/ntpd.h:1.5 +*** include/ntpd.h:1.1.1.6 Wed Jan 26 21:48:35 1994 +--- include/ntpd.h Wed Jan 26 21:48:35 1994 +*************** +*** 1,4 **** +! /* ntpd.h,v 3.1 1993/07/06 01:07:03 jbj Exp + * ntpd.h - Prototypes for xntpd. + */ + +--- 1,4 ---- +! /* + * ntpd.h - Prototypes for xntpd. + */ + +*************** +*** 21,26 **** +--- 21,55 ---- + extern void process_control P((struct recvbuf *, int)); + extern void report_event P((int, struct peer *)); + ++ /* ntp_control.c */ ++ /* ++ * Structure for translation tables between internal system ++ * variable indices and text format. ++ */ ++ struct ctl_var { ++ u_short code; ++ u_short flags; ++ char *text; ++ }; ++ /* ++ * Flag values ++ */ ++ #define CAN_READ 0x01 ++ #define CAN_WRITE 0x02 ++ ++ #define DEF 0x20 ++ #define PADDING 0x40 ++ #define EOV 0x80 ++ ++ #define RO (CAN_READ) ++ #define WO (CAN_WRITE) ++ #define RW (CAN_READ|CAN_WRITE) ++ ++ extern char * add_var P((struct ctl_var **, unsigned long, int)); ++ extern void free_varlist P((struct ctl_var *)); ++ extern void set_var P((struct ctl_var **, char *, unsigned long, int)); ++ extern void set_sys_var P((char *, unsigned long, int)); ++ + /* ntp_intres.c */ + extern void ntp_intres P((void)); + +diff -c include/parse.h:1.1.1.6 include/parse.h:3.13 +*** include/parse.h:1.1.1.6 Wed Jan 26 21:48:36 1994 +--- include/parse.h Wed Jan 26 21:48:36 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.12 1994/01/23 17:23:05 kardel Exp + * +! * parse.h,v 3.12 1994/01/23 17:23:05 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/include/parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * +! * parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 15,21 **** + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.12 1994/01/23 17:23:05 kardel Exp FAU"; + #endif + + #include "ntp_types.h" +--- 15,21 ---- + #ifndef __PARSE_H__ + #define __PARSE_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char parsehrcsid[]="parse.h,v 3.13 1994/01/25 19:04:21 kardel Exp FAU"; + #endif + + #include "ntp_types.h" +*************** +*** 365,370 **** +--- 365,373 ---- + * History: + * + * parse.h,v ++ * Revision 3.13 1994/01/25 19:04:21 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.12 1994/01/23 17:23:05 kardel + * 1994 reconcilation + * +diff -c include/parse_conf.h:1.1.1.5 include/parse_conf.h:3.5 +*** include/parse_conf.h:1.1.1.5 Wed Jan 26 21:48:37 1994 +--- include/parse_conf.h Wed Jan 26 21:48:37 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/include/parse_conf.h,v 3.4 1994/01/23 17:23:07 kardel Exp + * +! * parse_conf.h,v 3.4 1994/01/23 17:23:07 kardel Exp + * + * Copyright (c) 1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/include/parse_conf.h,v 3.5 1994/01/25 19:04:23 kardel Exp + * +! * parse_conf.h,v 3.5 1994/01/25 19:04:23 kardel Exp + * + * Copyright (c) 1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 15,21 **** + #ifndef __PARSE_CONF_H__ + #define __PARSE_CONF_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char dcfhrcsid[]="parse_conf.h,v 3.4 1994/01/23 17:23:07 kardel Exp FAU"; + #endif + + /* +--- 15,21 ---- + #ifndef __PARSE_CONF_H__ + #define __PARSE_CONF_H__ + #if !(defined(lint) || defined(__GNUC__)) +! static char dcfhrcsid[]="parse_conf.h,v 3.5 1994/01/25 19:04:23 kardel Exp FAU"; + #endif + + /* +diff -c include/sys/parsestreams.h:1.1.1.6 include/sys/parsestreams.h:3.11 +*** include/sys/parsestreams.h:1.1.1.6 Wed Jan 26 21:48:44 1994 +--- include/sys/parsestreams.h Wed Jan 26 21:48:44 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/include/sys/parsestreams.h,v 3.10 1994/01/23 17:23:12 kardel Exp + * +! * parsestreams.h,v 3.10 1994/01/23 17:23:12 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/include/sys/parsestreams.h,v 3.11 1994/01/25 19:04:30 kardel Exp + * +! * parsestreams.h,v 3.11 1994/01/25 19:04:30 kardel Exp + * + * Copyright (c) 1989,1990,1991,1992,1993,1994 + * Frank Kardel Friedrich-Alexander Universitaet Erlangen-Nuernberg +*************** +*** 13,19 **** + */ + + #if !(defined(lint) || defined(__GNUC__)) +! static char parse77hrcsid[]="parsestreams.h,v 3.10 1994/01/23 17:23:12 kardel Exp"; + #endif + + #undef PARSEKERNEL +--- 13,19 ---- + */ + + #if !(defined(lint) || defined(__GNUC__)) +! static char parse77hrcsid[]="parsestreams.h,v 3.11 1994/01/25 19:04:30 kardel Exp"; + #endif + + #undef PARSEKERNEL +diff -c kernel/Makefile.tmpl:1.1.1.3 kernel/Makefile.tmpl:3.6 +*** kernel/Makefile.tmpl:1.1.1.3 Wed Jan 26 21:48:49 1994 +--- kernel/Makefile.tmpl Wed Jan 26 21:48:49 1994 +*************** +*** 1,7 **** + # +! # /src/NTP/REPOSITORY/v3/kernel/Makefile.tmpl,v 3.5 1994/01/23 17:37:53 kardel Exp + # +- # + # parse routine that could be used in two places + # + COMPILER= cc +--- 1,6 ---- + # +! # /src/NTP/REPOSITORY/v3/kernel/Makefile.tmpl,v 3.6 1994/01/25 19:04:35 kardel Exp + # + # parse routine that could be used in two places + # + COMPILER= cc +diff -c lib/systime.c:1.1.1.10 lib/systime.c:1.7 +*** lib/systime.c:1.1.1.10 Wed Jan 26 21:50:00 1994 +--- lib/systime.c Wed Jan 26 21:50:00 1994 +*************** +*** 238,273 **** + #endif + } + +- sys_clock_offset.l_ui = offset_i; +- sys_clock_offset.l_uf = offset_f; +- + if (adjtime(&adjtv, &oadjtv) < 0) { + syslog(LOG_ERR, "Can't do time adjustment: %m"); + rval = 0; +! } else + rval = 1; + + #ifdef DEBUGRS6000 +! syslog(LOG_ERR, "adj_systime(%s): offset = %s%s\n", +! mfptoa((adj<0?-1:0), adj, 9), isneg?"-":"", +! umfptoa(offset_i, offset_f, 9)); +! syslog(LOG_ERR, "%d %d %d %d\n", (int) adjtv.tv_sec, +! (int) adjtv.tv_usec, (int) oadjtv.tv_sec, (int) +! oadjtv.tv_usec); + #endif /* DEBUGRS6000 */ + +! if ((oadjtv.tv_sec != 0 || oadjtv.tv_usec != 0) && (max_no_complete > 0)) { +! sTVTOTS(&oadjtv, &oadjts); +! L_ADD(&sys_clock_offset, &oadjts); +! syslog(LOG_WARNING, "Previous time adjustment didn't complete"); + #ifdef DEBUG +! if (debug > 4) +! syslog(LOG_DEBUG, +! "Previous adjtime() incomplete, residual = %s\n", +! tvtoa(&oadjtv)); + #endif +! if (--max_no_complete == 0) syslog(LOG_WARNING, +! "*** No more 'Prev time adj didn't complete'"); + } + return(rval); + } +--- 238,277 ---- + #endif + } + + if (adjtime(&adjtv, &oadjtv) < 0) { + syslog(LOG_ERR, "Can't do time adjustment: %m"); + rval = 0; +! } else { +! sys_clock_offset.l_ui = offset_i; +! sys_clock_offset.l_uf = offset_f; + rval = 1; + + #ifdef DEBUGRS6000 +! syslog(LOG_ERR, "adj_systime(%s): offset = %s%s\n", +! mfptoa((adj<0?-1:0), adj, 9), isneg?"-":"", +! umfptoa(offset_i, offset_f, 9)); +! syslog(LOG_ERR, "%d %d %d %d\n", (int) adjtv.tv_sec, +! (int) adjtv.tv_usec, (int) oadjtv.tv_sec, (int) +! oadjtv.tv_usec); + #endif /* DEBUGRS6000 */ + +! if (oadjtv.tv_sec != 0 || oadjtv.tv_usec != 0) { +! sTVTOTS(&oadjtv, &oadjts); +! L_ADD(&sys_clock_offset, &oadjts); +! if (max_no_complete > 0) { +! syslog(LOG_WARNING, +! "Previous time adjustment didn't complete"); + #ifdef DEBUG +! if (debug > 4) +! syslog(LOG_DEBUG, +! "Previous adjtime() incomplete, residual = %s\n", +! tvtoa(&oadjtv)); + #endif +! if (--max_no_complete == 0) +! syslog(LOG_WARNING, +! "*** No more 'Prev time adj didn't complete'"); +! } +! } + } + return(rval); + } +diff -c ntpq/ntpq.c:1.1.1.20 ntpq/ntpq.c:3.20 +*** ntpq/ntpq.c:1.1.1.20 Wed Jan 26 21:50:59 1994 +--- ntpq/ntpq.c Wed Jan 26 21:50:59 1994 +*************** +*** 2577,2582 **** +--- 2577,2583 ---- + register char *cp; + register char *np; + register char *cpend; ++ int quoted = 0; + static char name[MAXVARLEN]; + static char value[MAXVALLEN]; + +*************** +*** 2623,2630 **** + while (cp < cpend && (isspace(*cp) && *cp != '\r' && *cp != '\n')) + cp++; + np = value; +! while (cp < cpend && *cp != ',') +! *np++ = *cp++; + while (np > value && isspace(*(np-1))) + np--; + *np = '\0'; +--- 2624,2634 ---- + while (cp < cpend && (isspace(*cp) && *cp != '\r' && *cp != '\n')) + cp++; + np = value; +! while (cp < cpend && ((*cp != ',') || quoted)) +! { +! quoted ^= ((*np++ = *cp++) == '"'); +! } +! + while (np > value && isspace(*(np-1))) + np--; + *np = '\0'; +diff -c parse/Makefile.kernel:1.1.1.2 parse/Makefile.kernel:3.8 +*** parse/Makefile.kernel:1.1.1.2 Wed Jan 26 21:51:11 1994 +--- parse/Makefile.kernel Wed Jan 26 21:51:11 1994 +*************** +*** 30,46 **** + ld -r -o parse parsesolaris.o libparse_kernel.a ../lib/libntp.a + @echo "--- Install 'parse' in /kernel/strmod for automatic loading" + +! mparsestreams.o: parsestreams.c microtime.o ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c -DMICROTIME $(DEFS) -I../include parsestreams.c + ld -r -o $@ parsestreams.o ../lib/libntp.a libparse_kernel.a \ + microtime.o + rm -f parsestreams.o +! @echo "--- You may load mparsestreams.o via 'modload mparsestreams.o' into the kernel" + +! parsestreams.o: parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +! ld -r -o $@ $@ ../lib/libntp.a libparse_kernel.a +! @echo "--- You may load parsestreams.o via 'modload parsestreams.o' into the kernel" + + microtime.o: $(MICROTIME) assym.s + cc -E -I. $(MICROTIME) | sed -e '/\.global _uniqtime/d' > $@.i +--- 30,51 ---- + ld -r -o parse parsesolaris.o libparse_kernel.a ../lib/libntp.a + @echo "--- Install 'parse' in /kernel/strmod for automatic loading" + +! mparsestreams.o: mparsestreams.o.$(KARCH) +! @echo "--- You may load mparsestreams.o.$(KARCH) via 'modload mparsestreams.o.$(KARCH)' into the kernel" +! +! mparsestreams.o.$(KARCH): parsestreams.c microtime.o ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c -DMICROTIME $(DEFS) -I../include parsestreams.c + ld -r -o $@ parsestreams.o ../lib/libntp.a libparse_kernel.a \ + microtime.o + rm -f parsestreams.o +! +! parsestreams.o: parsestreams.o.$(KARCH) +! @echo "--- You may load parsestreams.o.$(KARCH) via 'modload parsestreams.o.$(KARCH)' into the kernel" + +! parsestreams.o.$(KARCH): parsestreams.c ../lib/libntp.a libparse_kernel.a ../include/parse.h ../include/sys/parsestreams.h + cc -c $(DEFS) -I../include parsestreams.c +! ld -r -o $@ parsestreams.o ../lib/libntp.a libparse_kernel.a +! rm -f parsestreams.o + + microtime.o: $(MICROTIME) assym.s + cc -E -I. $(MICROTIME) | sed -e '/\.global _uniqtime/d' > $@.i +diff -c parse/clk_dcf7000.c:1.1.1.7 parse/clk_dcf7000.c:3.10 +*** parse/clk_dcf7000.c:1.1.1.7 Wed Jan 26 21:51:16 1994 +--- parse/clk_dcf7000.c Wed Jan 26 21:51:17 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_DCF7000) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_dcf7000.c,v 3.9 1994/01/23 17:21:51 kardel Exp + * +! * clk_dcf7000.c,v 3.9 1994/01/23 17:21:51 kardel Exp + * + * ELV DCF7000 module + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_DCF7000) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_dcf7000.c,v 3.10 1994/01/25 19:05:07 kardel Exp + * +! * clk_dcf7000.c,v 3.10 1994/01/25 19:05:07 kardel Exp + * + * ELV DCF7000 module + * +diff -c parse/clk_meinberg.c:1.1.1.7 parse/clk_meinberg.c:3.11 +*** parse/clk_meinberg.c:1.1.1.7 Wed Jan 26 21:51:17 1994 +--- parse/clk_meinberg.c Wed Jan 26 21:51:18 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.10 1994/01/23 17:21:54 kardel Exp + * +! * clk_meinberg.c,v 3.10 1994/01/23 17:21:54 kardel Exp + * + * Meinberg clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_MEINBERG) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_meinberg.c,v 3.11 1994/01/25 19:05:10 kardel Exp + * +! * clk_meinberg.c,v 3.11 1994/01/25 19:05:10 kardel Exp + * + * Meinberg clock support + * +*************** +*** 414,419 **** +--- 414,422 ---- + * History: + * + * clk_meinberg.c,v ++ * Revision 3.11 1994/01/25 19:05:10 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.10 1994/01/23 17:21:54 kardel + * 1994 reconcilation + * +diff -c parse/clk_rawdcf.c:1.1.1.7 parse/clk_rawdcf.c:3.9 +*** parse/clk_rawdcf.c:1.1.1.7 Wed Jan 26 21:51:19 1994 +--- parse/clk_rawdcf.c Wed Jan 26 21:51:19 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.8 1994/01/22 11:24:11 kardel Exp + * +! * clk_rawdcf.c,v 3.8 1994/01/22 11:24:11 kardel Exp + * + * Raw DCF77 pulse clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_RAWDCF) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_rawdcf.c,v 3.9 1994/01/25 19:05:12 kardel Exp + * +! * clk_rawdcf.c,v 3.9 1994/01/25 19:05:12 kardel Exp + * + * Raw DCF77 pulse clock support + * +*************** +*** 529,534 **** +--- 529,537 ---- + * History: + * + * clk_rawdcf.c,v ++ * Revision 3.9 1994/01/25 19:05:12 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.8 1994/01/22 11:24:11 kardel + * fixed PPS handling + * +diff -c parse/clk_schmid.c:1.1.1.7 parse/clk_schmid.c:3.10 +*** parse/clk_schmid.c:1.1.1.7 Wed Jan 26 21:51:20 1994 +--- parse/clk_schmid.c Wed Jan 26 21:51:20 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.9 1994/01/23 17:21:56 kardel Exp + * +! * clk_schmid.c,v 3.9 1994/01/23 17:21:56 kardel Exp + * + * Schmid clock support + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_SCHMID) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_schmid.c,v 3.10 1994/01/25 19:05:15 kardel Exp + * +! * clk_schmid.c,v 3.10 1994/01/25 19:05:15 kardel Exp + * + * Schmid clock support + * +*************** +*** 168,173 **** +--- 168,176 ---- + * History: + * + * clk_schmid.c,v ++ * Revision 3.10 1994/01/25 19:05:15 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.9 1994/01/23 17:21:56 kardel + * 1994 reconcilation + * +diff -c parse/clk_trimble.c:1.1.1.2 parse/clk_trimble.c:3.7 +*** parse/clk_trimble.c:1.1.1.2 Wed Jan 26 21:51:21 1994 +--- parse/clk_trimble.c Wed Jan 26 21:51:21 1994 +*************** +*** 1,6 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMSV6) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_trimble.c,v 3.6 1993/10/30 09:44:45 kardel Exp + * + * Trimble SV6 clock support + */ +--- 1,6 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMSV6) + /* +! * /src/NTP/REPOSITORY/v3/parse/clk_trimble.c,v 3.7 1994/01/25 19:05:17 kardel Exp + * + * Trimble SV6 clock support + */ +*************** +*** 106,111 **** +--- 106,114 ---- + * History: + * + * clk_trimble.c,v ++ * Revision 3.7 1994/01/25 19:05:17 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.6 1993/10/30 09:44:45 kardel + * conditional compilation flag cleanup + * +diff -c parse/parse.c:1.1.1.7 parse/parse.c:3.19 +*** parse/parse.c:1.1.1.7 Wed Jan 26 21:51:24 1994 +--- parse/parse.c Wed Jan 26 21:51:24 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.18 1994/01/23 17:21:59 kardel Exp + * +! * parse.c,v 3.18 1994/01/23 17:21:59 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.19 1994/01/25 19:05:20 kardel Exp + * +! * parse.c,v 3.19 1994/01/25 19:05:20 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 22,28 **** + */ + + #if !(defined(lint) || defined(__GNUC__)) +! static char rcsid[] = "parse.c,v 3.18 1994/01/23 17:21:59 kardel Exp"; + #endif + + #include "sys/types.h" +--- 22,28 ---- + */ + + #if !(defined(lint) || defined(__GNUC__)) +! static char rcsid[] = "parse.c,v 3.19 1994/01/25 19:05:20 kardel Exp"; + #endif + + #include "sys/types.h" +*************** +*** 1139,1144 **** +--- 1139,1147 ---- + * History: + * + * parse.c,v ++ * Revision 3.19 1994/01/25 19:05:20 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.18 1994/01/23 17:21:59 kardel + * 1994 reconcilation + * +diff -c parse/parse_conf.c:1.1.1.7 parse/parse_conf.c:3.13 +*** parse/parse_conf.c:1.1.1.7 Wed Jan 26 21:51:25 1994 +--- parse/parse_conf.c Wed Jan 26 21:51:25 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse_conf.c,v 3.12 1994/01/23 17:22:02 kardel Exp + * +! * parse_conf.c,v 3.12 1994/01/23 17:22:02 kardel Exp + * + * Parser configuration module for reference clocks + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse_conf.c,v 3.13 1994/01/25 19:05:23 kardel Exp + * +! * parse_conf.c,v 3.13 1994/01/25 19:05:23 kardel Exp + * + * Parser configuration module for reference clocks + * +*************** +*** 81,86 **** +--- 81,89 ---- + * History: + * + * parse_conf.c,v ++ * Revision 3.13 1994/01/25 19:05:23 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.12 1994/01/23 17:22:02 kardel + * 1994 reconcilation + * +diff -c parse/parsesolaris.c:1.1.1.4 parse/parsesolaris.c:3.9 +*** parse/parsesolaris.c:1.1.1.4 Wed Jan 26 21:51:26 1994 +--- parse/parsesolaris.c Wed Jan 26 21:51:27 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.8 1994/01/23 17:22:04 kardel Exp + * +! * parsesolaris.c,v 3.8 1994/01/23 17:22:04 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp + * +! * parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS5.x - not fully tested - buyer beware ! - OS KILLERS may still be +*************** +*** 19,25 **** + */ + + #ifndef lint +! static char rcsid[] = "parsesolaris.c,v 3.8 1994/01/23 17:22:04 kardel Exp"; + #endif + + /* +--- 19,25 ---- + */ + + #ifndef lint +! static char rcsid[] = "parsesolaris.c,v 3.9 1994/01/25 19:05:26 kardel Exp"; + #endif + + /* +*************** +*** 139,145 **** + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.8"; + char *s, *S, *t; + + /* +--- 139,145 ---- + /*ARGSUSED*/ + int _init(void) + { +! static char revision[] = "3.9"; + char *s, *S, *t; + + /* +*************** +*** 1179,1184 **** +--- 1179,1187 ---- + * History: + * + * parsesolaris.c,v ++ * Revision 3.9 1994/01/25 19:05:26 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.8 1994/01/23 17:22:04 kardel + * 1994 reconcilation + * +diff -c parse/parsestreams.c:1.1.1.6 parse/parsestreams.c:3.12 +*** parse/parsestreams.c:1.1.1.6 Wed Jan 26 21:51:28 1994 +--- parse/parsestreams.c Wed Jan 26 21:51:28 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.11 1994/01/23 17:22:07 kardel Exp + * +! * parsestreams.c,v 3.11 1994/01/23 17:22:07 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp + * +! * parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp + * + * STREAMS module for reference clocks + * (SunOS4.x) +*************** +*** 16,22 **** + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.11 1994/01/23 17:22:07 kardel Exp"; + #endif + + #include "sys/types.h" +--- 16,22 ---- + */ + + #ifndef lint +! static char rcsid[] = "parsestreams.c,v 3.12 1994/01/25 19:05:30 kardel Exp"; + #endif + + #include "sys/types.h" +*************** +*** 195,201 **** + } + else + { +! static char revision[] = "3.11"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +--- 195,201 ---- + } + else + { +! static char revision[] = "3.12"; + char *s, *S, *t; + + strncpy(ifm->f_name, mname, FMNAMESZ); +*************** +*** 1258,1263 **** +--- 1258,1266 ---- + * History: + * + * parsestreams.c,v ++ * Revision 3.12 1994/01/25 19:05:30 kardel ++ * 94/01/23 reconcilation ++ * + * Revision 3.11 1994/01/23 17:22:07 kardel + * 1994 reconcilation + * +diff -c parse/util/Makefile.tmpl:1.1.1.2 parse/util/Makefile.tmpl:3.12 +*** parse/util/Makefile.tmpl:1.1.1.2 Wed Jan 26 21:51:31 1994 +--- parse/util/Makefile.tmpl Wed Jan 26 21:51:31 1994 +*************** +*** 1,5 **** + # +! # /src/NTP/REPOSITORY/v3/parse/util/Makefile.tmpl,v 3.11 1993/11/17 13:34:12 kardel Exp + # + COMPILER= cc + DEFS= +--- 1,5 ---- + # +! # /src/NTP/REPOSITORY/v3/parse/util/Makefile.tmpl,v 3.12 1994/01/25 19:05:39 kardel Exp + # + COMPILER= cc + DEFS= +diff -c parse/util/dcfd.c:1.1.1.4 parse/util/dcfd.c:3.15 +*** parse/util/dcfd.c:1.1.1.4 Wed Jan 26 21:51:33 1994 +--- parse/util/dcfd.c Wed Jan 26 21:51:33 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/util/dcfd.c,v 3.13 1994/01/23 17:22:15 kardel Exp + * +! * dcfd.c,v 3.13 1994/01/23 17:22:15 kardel Exp + * + * DCF77 100/200ms pulse synchronisation daemon program (via 50Baud serial line) + * +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/util/dcfd.c,v 3.15 1994/01/25 19:05:42 kardel Exp + * +! * dcfd.c,v 3.15 1994/01/25 19:05:42 kardel Exp + * + * DCF77 100/200ms pulse synchronisation daemon program (via 50Baud serial line) + * +*************** +*** 733,740 **** + * assume that we convert timecode within the unix/UTC epoch - + * prolonges validity of 2 digit years + */ +! if (clock->year < 1900) +! clock->year += 100; /* XXX this will do it till <2092 */ + + /* + * must have been a really negative year code - drop it +--- 733,740 ---- + * assume that we convert timecode within the unix/UTC epoch - + * prolonges validity of 2 digit years + */ +! if (clock->year < 1994) +! clock->year += 100; /* XXX this will do it till <2094 */ + + /* + * must have been a really negative year code - drop it +diff -c parse/util/testdcf.c:1.1.1.5 parse/util/testdcf.c:3.9 +*** parse/util/testdcf.c:1.1.1.5 Wed Jan 26 21:51:35 1994 +--- parse/util/testdcf.c Wed Jan 26 21:51:35 1994 +*************** +*** 1,7 **** + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.8 1994/01/23 17:22:20 kardel Exp + * +! * testdcf.c,v 3.8 1994/01/23 17:22:20 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +--- 1,7 ---- + /* +! * /src/NTP/REPOSITORY/v3/parse/util/testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * +! * testdcf.c,v 3.9 1994/01/25 19:05:45 kardel Exp + * + * simple DCF77 100/200ms pulse test program (via 50Baud serial line) + * +diff -c scripts/Guess.sh:1.1.1.6 scripts/Guess.sh:1.11 +*** scripts/Guess.sh:1.1.1.6 Wed Jan 26 21:52:11 1994 +--- scripts/Guess.sh Wed Jan 26 21:52:12 1994 +*************** +*** 19,25 **** + sinix-m) + guess=sinix-m + ;; +! sunos) case "$3" in + 4.1*) guess="sunos4" ;; + 5.1) guess="sunos5.1" ;; + 5.*) guess="sunos5.2" ;; +--- 19,26 ---- + sinix-m) + guess=sinix-m + ;; +! sunos|solaris) +! case "$3" in + 4.1*) guess="sunos4" ;; + 5.1) guess="sunos5.1" ;; + 5.*) guess="sunos5.2" ;; +*************** +*** 59,65 **** + guess="netbsd" + ;; + # now the fun starts - there are vendors that +! # do not really identify their OS un uname. + # Fine - now I look at our version and hope + # that nobody else had this marvellous idea. + # I am not willing to mention the vendor explicitly +--- 60,66 ---- + guess="netbsd" + ;; + # now the fun starts - there are vendors that +! # do not really identify their OS in uname. + # Fine - now I look at our version and hope + # that nobody else had this marvellous idea. + # I am not willing to mention the vendor explicitly +diff -c xntpd/ntp_config.c:1.1.1.18 xntpd/ntp_config.c:3.21 +*** xntpd/ntp_config.c:1.1.1.18 Wed Jan 26 21:52:59 1994 +--- xntpd/ntp_config.c Wed Jan 26 21:53:00 1994 +*************** +*** 93,98 **** +--- 93,99 ---- + #define CONFIG_PPS 24 + #define CONFIG_PIDFILE 25 + #define CONFIG_LOGFILE 26 ++ #define CONFIG_SETVAR 27 + + #define CONF_MOD_VERSION 1 + #define CONF_MOD_KEY 2 +*************** +*** 177,182 **** +--- 178,184 ---- + { "statistics", CONFIG_STATISTICS }, + { "pidfile", CONFIG_PIDFILE }, + { "logfile", CONFIG_LOGFILE }, ++ { "setvar", CONFIG_SETVAR }, + { "", CONFIG_UNKNOWN } + }; + +*************** +*** 316,322 **** + #endif + extern char *FindConfig(); + char *progname; +! static char *xntp_options = "abc:de:f:k:l:p:r:s:t:"; + + static int gettokens P((FILE *, char *, char **, int *)); + static int matchkey P((char *, struct keyword *)); +--- 318,324 ---- + #endif + extern char *FindConfig(); + char *progname; +! static char *xntp_options = "abc:de:f:k:l:p:r:s:t:v:V:"; + + static int gettokens P((FILE *, char *, char **, int *)); + static int matchkey P((char *, struct keyword *)); +*************** +*** 374,381 **** + } + + if (errflg || optind != argc) { +! (void) fprintf(stderr, +! "usage: %s [ -bd ] [ -c config_file ]\n", progname); + exit(2); + } + optind = 0; /* reset optind to restart getopt_l */ +--- 376,385 ---- + } + + if (errflg || optind != argc) { +! (void) fprintf(stderr, "usage: %s [ -abd ] [ -c config_file ] [ -e encryption delay ]\n", progname); +! (void) fprintf(stderr, "\t\t[ -f frequency file ] [ -k key file ] [ -l log file ]\n"); +! (void) fprintf(stderr, "\t\t[ -p pid file ] [ -r broadcast delay ] [ -s status directory ]\n"); +! (void) fprintf(stderr, "\t\t[ -t trusted key ] [ -v sys variable ] [ -V default sys variable ]\n"); + exit(2); + } + optind = 0; /* reset optind to restart getopt_l */ +*************** +*** 428,433 **** +--- 432,438 ---- + char keyfile[MAXFILENAME]; + extern int optind; + extern char *optarg; ++ extern char *Version; + extern U_LONG info_auth_keyid; + FILEGEN *filegen; + +*************** +*** 443,448 **** +--- 448,459 ---- + res_fp = NULL; + have_resolver = have_keyfile = 0; + ++ /* ++ * install a non default variable with this daemon version ++ */ ++ (void) sprintf(line, "daemon_version=\"%s\"", Version); ++ set_sys_var(line, strlen(line)+1, RO); ++ + #ifdef RESOLVE_INTERNAL + resolve_internal = 1; + #endif +*************** +*** 546,551 **** +--- 557,566 ---- + } while (0); + break; + ++ case 'v': ++ case 'V': ++ set_sys_var(optarg, strlen(optarg)+1, RW | ((c == 'V') ? DEF : 0)); ++ break; + + default: + errflg++; +*************** +*** 1386,1392 **** + (u_char)peerkey, (u_char)peerflags); + } + break; +! + } + } + (void) fclose(fp); +--- 1401,1419 ---- + (u_char)peerkey, (u_char)peerflags); + } + break; +! +! case CONFIG_SETVAR: +! if (ntokens < 2) +! { +! syslog(LOG_ERR, +! "no value for setvar command - line ignored"); +! } +! else +! { +! set_sys_var(tokens[1], strlen(tokens[1])+1, RW | +! ((((ntokens > 2) && !strcmp(tokens[2], "default"))) ? DEF : 0)); +! } +! break; + } + } + (void) fclose(fp); +*************** +*** 1445,1450 **** +--- 1472,1478 ---- + register char *cp; + register int eol; + register int ntok; ++ register int quoted = 0; + + /* + * Find start of first token +*************** +*** 1469,1476 **** + ntok = 0; + while (!eol) { + tokenlist[ntok++] = cp; +! while (!ISEOL(*cp) && !ISSPACE(*cp)) +! cp++; + if (ISEOL(*cp)) { + *cp = '\0'; + eol = 1; +--- 1497,1505 ---- + ntok = 0; + while (!eol) { + tokenlist[ntok++] = cp; +! while (!ISEOL(*cp) && (!ISSPACE(*cp) || quoted)) +! quoted ^= (*cp++ == '"'); +! + if (ISEOL(*cp)) { + *cp = '\0'; + eol = 1; +diff -c xntpd/ntp_control.c:1.1.1.15 xntpd/ntp_control.c:3.21 +*** xntpd/ntp_control.c:1.1.1.15 Wed Jan 26 21:53:01 1994 +--- xntpd/ntp_control.c Wed Jan 26 21:53:02 1994 +*************** +*** 1,4 **** +! /* ntp_control.c,v 3.1 1993/07/06 01:11:13 jbj Exp + * ntp_control.c - respond to control messages and send async traps + */ + #include <stdio.h> +--- 1,4 ---- +! /* + * ntp_control.c - respond to control messages and send async traps + */ + #include <stdio.h> +*************** +*** 61,66 **** +--- 61,67 ---- + static void ctl_putclock P((int, struct refclockstat *, int)); + #endif /* REFCLOCK */ + static struct ctl_var *ctl_getitem P((struct ctl_var *, char **)); ++ static unsigned long count_var P((struct ctl_var *)); + static void control_unspec P((struct recvbuf *, int)); + static void read_status P((struct recvbuf *, int)); + static void read_variables P((struct recvbuf *, int)); +*************** +*** 83,113 **** + { NO_REQUEST, 0 } + }; + +- +- /* +- * Structure for translation tables between internal system +- * variable indices and text format. +- */ +- struct ctl_var { +- u_short code; +- u_short flags; +- char *text; +- }; +- + /* +- * Flag values +- */ +- #define CAN_READ 0x1 +- #define CAN_WRITE 0x2 +- #define PADDING 0x80 +- #define EOV 0x40 +- +- #define RO (CAN_READ) +- #define WO (CAN_WRITE) +- #define RW (CAN_READ|CAN_WRITE) +- +- +- /* + * System variable values. The array can be indexed by + * the variable index to find the textual name. + */ +--- 84,90 ---- +*************** +*** 132,141 **** + { CS_SYSTEM, RO, "system" }, /* 17 */ + { CS_KEYID, RO, "keyid" }, /* 18 */ + { CS_REFSKEW, RO, "refskew" }, /* 19 */ +! { CS_VERSION, RO, "daemon_version" }, /* 20 */ + { 0, EOV, "" } + }; + + /* + * System variables we print by default (in fuzzball order, more-or-less) + */ +--- 109,120 ---- + { CS_SYSTEM, RO, "system" }, /* 17 */ + { CS_KEYID, RO, "keyid" }, /* 18 */ + { CS_REFSKEW, RO, "refskew" }, /* 19 */ +! { CS_VARLIST, RO, "sys_var_list" },/* 20 */ + { 0, EOV, "" } + }; + ++ static struct ctl_var *ext_sys_var = (struct ctl_var *)0; ++ + /* + * System variables we print by default (in fuzzball order, more-or-less) + */ +*************** +*** 153,159 **** + CS_OFFSET, + CS_DRIFT, + CS_COMPLIANCE, +- CS_VERSION, + 0 + }; + +--- 132,137 ---- +*************** +*** 197,202 **** +--- 175,181 ---- + { CP_SENT, RO, "sent" }, /* 32 */ + { CP_FILTERROR, RO, "filterror" }, /* 33 */ + { CP_FLASH, RO, "flash" }, /* 34 */ ++ { CP_VARLIST, RO, "peer_var_list" }, /* 35 */ + { 0, EOV, "" } + }; + +*************** +*** 255,260 **** +--- 234,240 ---- + { CC_FUDGEVAL2, RO, "fudgeval2" }, /* 10 */ + { CC_FLAGS, RO, "flags" }, /* 11 */ + { CC_DEVICE, RO, "device" }, /* 12 */ ++ { CC_VARLIST, RO, "clock_var_list" },/* 13 */ + { 0, EOV, "" } + }; + +*************** +*** 283,290 **** +--- 263,277 ---- + /* + * System and processor definitions. These will change for the gizmo board. + */ ++ #ifndef STR_SYSTEM + #define STR_SYSTEM "UNIX" ++ #endif ++ #ifndef STR_PROCESSOR + #define STR_PROCESSOR "unknown" ++ #endif ++ ++ static char str_system[] = STR_SYSTEM; ++ static char str_processor[] = STR_PROCESSOR; + + /* + * Trap structures. We only allow a few of these, and send +*************** +*** 1221,1227 **** + ctl_putsys(varid) + int varid; + { +- extern char *Version; + l_fp tmp; + + switch (varid) { +--- 1208,1213 ---- +*************** +*** 1280,1291 **** + ctl_putuint(sys_var[CS_LEAPWARNING].text, (U_LONG)leap_warning); + break; + case CS_PROCESSOR: +! ctl_putstr(sys_var[CS_PROCESSOR].text, STR_PROCESSOR, +! sizeof(STR_PROCESSOR) - 1); + break; + case CS_SYSTEM: +! ctl_putstr(sys_var[CS_SYSTEM].text, STR_SYSTEM, +! sizeof(STR_SYSTEM) - 1); + break; + case CS_KEYID: + ctl_putuint(sys_var[CS_KEYID].text, (U_LONG)0); +--- 1266,1277 ---- + ctl_putuint(sys_var[CS_LEAPWARNING].text, (U_LONG)leap_warning); + break; + case CS_PROCESSOR: +! ctl_putstr(sys_var[CS_PROCESSOR].text, str_processor, +! sizeof(str_processor) - 1); + break; + case CS_SYSTEM: +! ctl_putstr(sys_var[CS_SYSTEM].text, str_system, +! sizeof(str_system) - 1); + break; + case CS_KEYID: + ctl_putuint(sys_var[CS_KEYID].text, (U_LONG)0); +*************** +*** 1293,1301 **** + case CS_REFSKEW: + ctl_putlfp(sys_var[CS_REFSKEW].text, &sys_refskew); + break; +! case CS_VERSION: +! ctl_putstr(sys_var[CS_VERSION].text, Version, +! strlen(Version)); + break; + } + } +--- 1279,1338 ---- + case CS_REFSKEW: + ctl_putlfp(sys_var[CS_REFSKEW].text, &sys_refskew); + break; +! case CS_VARLIST: +! { +! char buf[CTL_MAX_DATA_LEN]; +! register char *s, *ss, *t, *be; +! register int i; +! register struct ctl_var *k; +! +! s = buf; +! be = buf + sizeof(buf) - strlen(sys_var[CS_VARLIST].text) - 4; +! if (s > be) +! break; /* really long var name 8-( - Killer */ +! +! strcpy(s, sys_var[CS_VARLIST].text); +! strcat(s, "=\""); +! s += strlen(s); +! t = s; +! +! for (k = sys_var; !(k->flags &EOV); k++) +! { +! i = strlen(k->text); +! if (s+i+1 >= be) +! break; +! if (s != t) +! *s++ = ','; +! strcpy(s, k->text); +! s += i; +! } +! +! for (k = ext_sys_var; k && !(k->flags &EOV); k++) +! { +! ss = k->text; +! if (!ss) +! continue; +! +! while (*ss && *ss != '=') +! ss++; +! +! i = ss - k->text; +! if (s+i+1 >= be) +! break; +! if (s != t) +! *s++ = ','; +! strncpy(s, k->text, i); +! s += i; +! } +! +! if (s+2 >= be) +! break; +! +! *s++ = '"'; +! *s = '\0'; +! +! ctl_putdata(buf, s - buf, 0); +! } + break; + } + } +*************** +*** 1428,1433 **** +--- 1465,1507 ---- + case CP_SENT: + ctl_putuint(peer_var[CP_SENT].text, peer->sent); + break; ++ case CP_VARLIST: ++ { ++ char buf[CTL_MAX_DATA_LEN]; ++ register char *s, *t, *be; ++ register int i; ++ register struct ctl_var *k; ++ ++ s = buf; ++ be = buf + sizeof(buf) - strlen(peer_var[CP_VARLIST].text) - 4; ++ if (s > be) ++ break; /* really long var name 8-( - Killer */ ++ ++ strcpy(s, peer_var[CP_VARLIST].text); ++ strcat(s, "=\""); ++ s += strlen(s); ++ t = s; ++ ++ for (k = peer_var; !(k->flags &EOV); k++) ++ { ++ i = strlen(k->text); ++ if (s+i+1 >= be) ++ break; ++ if (s != t) ++ *s++ = ','; ++ strcpy(s, k->text); ++ s += i; ++ } ++ ++ if (s+2 >= be) ++ break; ++ ++ *s++ = '"'; ++ *s = '\0'; ++ ++ ctl_putdata(buf, s - buf, 0); ++ } ++ break; + } + } + +*************** +*** 1501,1506 **** +--- 1575,1636 ---- + strlen(clock->clockdesc)); + } + break; ++ case CC_VARLIST: ++ { ++ char buf[CTL_MAX_DATA_LEN]; ++ register char *s, *ss, *t, *be; ++ register int i; ++ register struct ctl_var *k; ++ ++ s = buf; ++ be = buf + sizeof(buf) - strlen(clock_var[CC_VARLIST].text) - 4; ++ if (s > be) ++ break; /* really long var name 8-( - Killer */ ++ ++ strcpy(s, clock_var[CC_VARLIST].text); ++ strcat(s, "=\""); ++ s += strlen(s); ++ t = s; ++ ++ for (k = clock_var; !(k->flags &EOV); k++) ++ { ++ i = strlen(k->text); ++ if (s+i+1 >= be) ++ break; ++ if (s != t) ++ *s++ = ','; ++ strcpy(s, k->text); ++ s += i; ++ } ++ ++ for (k = clock->kv_list; k && !(k->flags &EOV); k++) ++ { ++ ss = k->text; ++ if (!ss) ++ continue; ++ ++ while (*ss && *ss != '=') ++ ss++; ++ ++ i = ss - k->text; ++ if (s+i+1 >= be) ++ break; ++ if (s != t) ++ *s++ = ','; ++ strncpy(s, k->text, i); ++ s += i; ++ *s = '\0'; ++ } ++ ++ if (s+2 >= be) ++ break; ++ ++ *s++ = '"'; ++ *s = '\0'; ++ ++ ctl_putdata(buf, s - buf, 0); ++ } ++ break; + } + } + #endif +*************** +*** 1517,1522 **** +--- 1647,1653 ---- + { + register struct ctl_var *v; + register char *cp, *tp; ++ static struct ctl_var eol = { 0, EOV, }; + static char buf[128]; + + /* +*************** +*** 1528,1533 **** +--- 1659,1667 ---- + + if (reqpt >= reqend) + return 0; ++ ++ if (var_list == (struct ctl_var *)0) ++ return &eol; + + /* + * Look for a first character match on the tag. If we find +*************** +*** 1538,1548 **** + while (!(v->flags & EOV)) { + if (!(v->flags & PADDING) && *cp == *(v->text)) { + tp = v->text; +! while (*tp != '\0' && cp < reqend && *cp == *tp) { + cp++; + tp++; + } +! if (*tp == '\0') { + while (cp < reqend && isspace(*cp)) + cp++; + if (cp == reqend || *cp == ',') { +--- 1672,1682 ---- + while (!(v->flags & EOV)) { + if (!(v->flags & PADDING) && *cp == *(v->text)) { + tp = v->text; +! while (*tp != '\0' && *tp != '=' && cp < reqend && *cp == *tp) { + cp++; + tp++; + } +! if ((*tp == '\0') || (*tp == '=')) { + while (cp < reqend && isspace(*cp)) + cp++; + if (cp == reqend || *cp == ',') { +*************** +*** 1685,1692 **** + register struct ctl_var *v; + register int i; + char *valuep; +! u_char wants[(CS_MAXCODE>CP_MAXCODE) ? (CS_MAXCODE+1) : (CP_MAXCODE+1)]; +! int gotvar; + + if (res_associd == 0) { + /* +--- 1819,1826 ---- + register struct ctl_var *v; + register int i; + char *valuep; +! u_char *wants; +! int gotvar = (CS_MAXCODE>CP_MAXCODE) ? (CS_MAXCODE+1) : (CP_MAXCODE+1); + + if (res_associd == 0) { + /* +*************** +*** 1696,1707 **** + rpkt.status = htons(ctlsysstatus()); + if (res_authokay) + ctl_sys_num_events = 0; +! bzero((char *)wants, CS_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! return; + } + wants[v->code] = 1; + gotvar = 1; +--- 1830,1853 ---- + rpkt.status = htons(ctlsysstatus()); + if (res_authokay) + ctl_sys_num_events = 0; +! gotvar += count_var(ext_sys_var); +! wants = (u_char *)emalloc(gotvar); +! bzero((char *)wants, gotvar); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +! if ((v = ctl_getitem(ext_sys_var, &valuep)) != 0) { +! if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! free((char *)wants); +! return; +! } +! wants[CS_MAXCODE+1+v->code] = 1; +! gotvar = 1; +! continue; +! } else { +! break; /* shouldn't happen ! */ +! } + } + wants[v->code] = 1; + gotvar = 1; +*************** +*** 1710,1721 **** + for (i = 1; i <= CS_MAXCODE; i++) + if (wants[i]) + ctl_putsys(i); + } else { + register u_char *cs; + + for (cs = def_sys_var; *cs != 0; cs++) +! ctl_putsys((int)*cs); + } + } else { + register struct peer *peer; + +--- 1856,1876 ---- + for (i = 1; i <= CS_MAXCODE; i++) + if (wants[i]) + ctl_putsys(i); ++ for (i = 0; ext_sys_var && !(ext_sys_var[i].flags & EOV); i++) ++ if (wants[i+CS_MAXCODE+1]) ++ ctl_putdata(ext_sys_var[i].text, ++ strlen(ext_sys_var[i].text), 0); + } else { + register u_char *cs; ++ register struct ctl_var *kv; + + for (cs = def_sys_var; *cs != 0; cs++) +! ctl_putsys((int)*cs); +! for (kv = ext_sys_var; kv && !(kv->flags & EOV); kv++) +! if (kv->flags & DEF) +! ctl_putdata(kv->text, strlen(kv->text), 0); + } ++ free((char *)wants); + } else { + register struct peer *peer; + +*************** +*** 1732,1742 **** + rpkt.status = htons(ctlpeerstatus(peer)); + if (res_authokay) + peer->num_events = 0; +! bzero((char*)wants, CP_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { + if (v->flags & EOV) { + ctl_error(CERR_UNKNOWNVAR); + return; + } + wants[v->code] = 1; +--- 1887,1899 ---- + rpkt.status = htons(ctlpeerstatus(peer)); + if (res_authokay) + peer->num_events = 0; +! wants = (u_char *)emalloc(gotvar); +! bzero((char*)wants, gotvar); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { + if (v->flags & EOV) { + ctl_error(CERR_UNKNOWNVAR); ++ free((char *)wants); + return; + } + wants[v->code] = 1; +*************** +*** 1752,1757 **** +--- 1909,1915 ---- + for (cp = def_peer_var; *cp != 0; cp++) + ctl_putpeer((int)*cp, peer); + } ++ free((char *)wants); + } + ctl_flushpkt(0); + } +*************** +*** 1768,1773 **** +--- 1926,1932 ---- + int restrict; + { + register struct ctl_var *v; ++ register int ext_var; + char *valuep; + LONG val; + u_char leapind, leapwarn; +*************** +*** 1795,1831 **** + * Look through the variables. Dump out at the first sign of trouble. + */ + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! return; + } + if (!(v->flags & CAN_WRITE)) { + ctl_error(CERR_PERMISSION); + return; + } +! if (*valuep == '\0' || !atoint(valuep, &val)) { + ctl_error(CERR_BADFMT); + return; + } +! if ((val & ~LEAP_NOTINSYNC) != 0) { + ctl_error(CERR_BADVALUE); + return; + } + +! /* +! * This one seems sane. Save it. +! */ +! switch(v->code) { +! case CS_LEAP: +! case CS_LEAPIND: +! leapind = (u_char)val; +! break; +! case CS_LEAPWARNING: +! leapwarn = (u_char)val; +! break; +! default: +! ctl_error(CERR_UNSPEC); /* our fault, really */ +! return; + } + } + +--- 1954,2013 ---- + * Look through the variables. Dump out at the first sign of trouble. + */ + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { ++ ext_var = 0; + if (v->flags & EOV) { +! if ((v = ctl_getitem(ext_sys_var, &valuep)) != 0) { +! if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! return; +! } +! ext_var = 1; +! } else { +! break; +! } + } + if (!(v->flags & CAN_WRITE)) { + ctl_error(CERR_PERMISSION); + return; + } +! if (!ext_var && (*valuep == '\0' || !atoint(valuep, &val))) { + ctl_error(CERR_BADFMT); + return; + } +! if (!ext_var && (val & ~LEAP_NOTINSYNC) != 0) { + ctl_error(CERR_BADVALUE); + return; + } + +! if (ext_var) { +! char *s = emalloc(strlen(v->text)+strlen(valuep)+2); +! char *t, *tt = s; +! +! t = v->text; +! while (*t && *t != '=') +! *tt++ = *t++; +! +! *tt++ = '='; +! strcat(tt, valuep); +! +! set_sys_var(s, strlen(s)+1, v->flags); +! free(s); +! } else { +! /* +! * This one seems sane. Save it. +! */ +! switch(v->code) { +! case CS_LEAP: +! case CS_LEAPIND: +! leapind = (u_char)val; +! break; +! case CS_LEAPWARNING: +! leapwarn = (u_char)val; +! break; +! default: +! ctl_error(CERR_UNSPEC); /* our fault, really */ +! return; +! } + } + } + +*************** +*** 1861,1867 **** + register int i; + register struct peer *peer; + char *valuep; +! u_char wants[CC_MAXCODE+1]; + int gotvar; + struct refclockstat clock; + +--- 2043,2049 ---- + register int i; + register struct peer *peer; + char *valuep; +! u_char *wants; + int gotvar; + struct refclockstat clock; + +*************** +*** 1898,1915 **** + /* + * If we got here we have a peer which is a clock. Get his status. + */ + refclock_control(&peer->srcadr, (struct refclockstat *)0, &clock); + + /* + * Look for variables in the packet. + */ + rpkt.status = htons(ctlclkstatus(&clock)); + gotvar = 0; +! bzero((char*)wants, CC_MAXCODE+1); +! while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! return; + } + wants[v->code] = 1; + gotvar = 1; +--- 2080,2112 ---- + /* + * If we got here we have a peer which is a clock. Get his status. + */ ++ clock.kv_list = (struct ctl_var *)0; ++ + refclock_control(&peer->srcadr, (struct refclockstat *)0, &clock); + + /* + * Look for variables in the packet. + */ + rpkt.status = htons(ctlclkstatus(&clock)); ++ gotvar = CC_MAXCODE+1+count_var(clock.kv_list); ++ wants = (u_char *)emalloc(gotvar); ++ bzero((char*)wants, gotvar); + gotvar = 0; +! while ((v = ctl_getitem(clock_var, &valuep)) != 0) { + if (v->flags & EOV) { +! if ((v = ctl_getitem(clock.kv_list, &valuep)) != 0) { +! if (v->flags & EOV) { +! ctl_error(CERR_UNKNOWNVAR); +! free((char*)wants); +! free_varlist(clock.kv_list); +! return; +! } +! wants[CC_MAXCODE+1+v->code] = 1; +! gotvar = 1; +! continue; +! } else { +! break; /* shouldn't happen ! */ +! } + } + wants[v->code] = 1; + gotvar = 1; +*************** +*** 1919,1930 **** +--- 2116,2139 ---- + for (i = 1; i <= CC_MAXCODE; i++) + if (wants[i]) + ctl_putclock(i, &clock, 1); ++ for (i = 0; !(clock.kv_list[i].flags & EOV); i++) ++ if (wants[i+CC_MAXCODE+1]) ++ ctl_putdata(clock.kv_list[i].text, ++ strlen(clock.kv_list[i].text), 0); + } else { + register u_char *cc; ++ register struct ctl_var *kv; + + for (cc = def_clock_var; *cc != 0; cc++) + ctl_putclock((int)*cc, &clock, 0); ++ for (kv = clock.kv_list; kv && !(kv->flags & EOV); kv++) ++ if (kv->flags & DEF) ++ ctl_putdata(kv->text, strlen(kv->text), 0); + } ++ ++ free((char*)wants); ++ free_varlist(clock.kv_list); ++ + ctl_flushpkt(0); + #endif + } +*************** +*** 2237,2249 **** + */ + if (err == EVNT_CLOCKEXCPT) { + struct refclockstat clock; +! refclock_control(&peer->srcadr, + (struct refclockstat *)0, + &clock); + ctl_puthex("refclockstatus", + (U_LONG)ctlclkstatus(&clock)); + for (i = 1; i <= CC_MAXCODE; i++) + ctl_putclock(i, &clock, 0); + } + #endif /*REFCLOCK*/ + } else { +--- 2446,2468 ---- + */ + if (err == EVNT_CLOCKEXCPT) { + struct refclockstat clock; +! struct ctl_var *kv; +! +! clock.kv_list = (struct ctl_var *)0; +! +! refclock_control(&peer->srcadr, + (struct refclockstat *)0, + &clock); + ctl_puthex("refclockstatus", + (U_LONG)ctlclkstatus(&clock)); ++ + for (i = 1; i <= CC_MAXCODE; i++) + ctl_putclock(i, &clock, 0); ++ for (kv = clock.kv_list; kv && !(kv->flags & EOV); kv++) ++ if (kv->flags & DEF) ++ ctl_putdata(kv->text, strlen(kv->text), 0); ++ ++ free_varlist(clock.kv_list); + } + #endif /*REFCLOCK*/ + } else { +*************** +*** 2262,2274 **** +--- 2481,2504 ---- + */ + if (err == EVNT_PEERCLOCK) { + struct refclockstat clock; ++ struct ctl_var *kv; ++ ++ clock.kv_list = (struct ctl_var *)0; ++ + refclock_control(&peer->srcadr, + (struct refclockstat *)0, + &clock); ++ + ctl_puthex("refclockstatus", + (U_LONG)ctlclkstatus(&clock)); ++ + for (i = 1; i <= CC_MAXCODE; i++) + ctl_putclock(i, &clock, 0); ++ for (kv = clock.kv_list; kv && !(kv->flags & EOV); kv++) ++ if (kv->flags & DEF) ++ ctl_putdata(kv->text, strlen(kv->text), 0); ++ ++ free_varlist(clock.kv_list); + } + #endif /*REFCLOCK*/ + } +*************** +*** 2303,2305 **** +--- 2533,2647 ---- + numctlbadop = 0; + numasyncmsgs = 0; + } ++ ++ static unsigned long ++ count_var(k) ++ struct ctl_var *k; ++ { ++ register unsigned long c; ++ ++ c = 0; ++ while (k && !(k++->flags & EOV)) ++ c++; ++ ++ return c; ++ } ++ ++ char * ++ add_var(kv, size, def) ++ struct ctl_var **kv; ++ unsigned long size; ++ int def; ++ { ++ register unsigned long c; ++ register struct ctl_var *k; ++ ++ c = count_var(*kv); ++ ++ k = *kv; ++ *kv = (struct ctl_var *)emalloc((c+2)*sizeof(struct ctl_var)); ++ if (k) ++ { ++ bcopy((char *)k, (char *)*kv, sizeof(struct ctl_var)*c); ++ free((char *)k); ++ } ++ ++ (*kv)[c].code = c; ++ (*kv)[c].text = (char *)emalloc(size); ++ (*kv)[c].flags = def; ++ (*kv)[c+1].code = 0; ++ (*kv)[c+1].text = (char *)0; ++ (*kv)[c+1].flags = EOV; ++ return (*kv)[c].text; ++ } ++ ++ void ++ set_var(kv, data, size, def) ++ struct ctl_var **kv; ++ char *data; ++ unsigned long size; ++ int def; ++ { ++ register struct ctl_var *k; ++ register char *s, *t; ++ ++ if (!data || !size) ++ return; ++ ++ if ((k = *kv)) ++ { ++ while (!(k->flags & EOV)) ++ { ++ s = data; ++ t = k->text; ++ if (t) ++ { ++ while (*t != '=' && *s - *t == 0) ++ { ++ s++; ++ t++; ++ } ++ if (*s == *t && ((*t == '=') || !*t)) ++ { ++ free(k->text); ++ k->text = (char *)emalloc(size); ++ bcopy(data, k->text, size); ++ k->flags = def; ++ return; ++ } ++ } ++ else ++ { ++ k->text = (char *)emalloc(size); ++ bcopy(data, k->text, size); ++ k->flags = def; ++ return; ++ } ++ k++; ++ } ++ } ++ t = add_var(kv, size, def); ++ bcopy(data, t, size); ++ } ++ ++ void ++ set_sys_var(data, size, def) ++ char *data; ++ unsigned long size; ++ int def; ++ { ++ set_var(&ext_sys_var, data, size, def); ++ } ++ ++ void ++ free_varlist(kv) ++ struct ctl_var *kv; ++ { ++ struct ctl_var *k; ++ if (kv) ++ { ++ for (k = kv; !(k->flags & EOV); k++) ++ free(k->text); ++ free((char *)kv); ++ } ++ } +diff -c xntpd/ntp_filegen.c:1.1.1.5 xntpd/ntp_filegen.c:3.12 +*** xntpd/ntp_filegen.c:1.1.1.5 Wed Jan 26 21:53:04 1994 +--- xntpd/ntp_filegen.c Wed Jan 26 21:53:04 1994 +*************** +*** 1,5 **** + /* +! * ntp_filegen.c,v 3.10 1993/12/03 03:55:35 pruy Exp + * + * implements file generations support for NTP + * logfiles and statistic files +--- 1,5 ---- + /* +! * ntp_filegen.c,v 3.12 1994/01/25 19:06:11 kardel Exp + * + * implements file generations support for NTP + * logfiles and statistic files +diff -c xntpd/ntp_request.c:1.1.1.13 xntpd/ntp_request.c:3.13 +*** xntpd/ntp_request.c:1.1.1.13 Wed Jan 26 21:53:18 1994 +--- xntpd/ntp_request.c Wed Jan 26 21:53:18 1994 +*************** +*** 2111,2116 **** +--- 2111,2119 ---- + req_ack(srcadr, inter, inpkt, INFO_ERR_NODATA); + return; + } ++ ++ clock.kv_list = (struct ctl_var *)0; ++ + refclock_control(&addr, (struct refclockstat *)0, &clock); + + ic->clockadr = addr.sin_addr.s_addr; +*************** +*** 2128,2133 **** +--- 2131,2138 ---- + ic->fudgeval1 = htonl(clock.fudgeval1); + ic->fudgeval2 = htonl(clock.fudgeval2); + ++ free_varlist(clock.kv_list); ++ + ic = (struct info_clock *)more_pkt(); + } + flush_pkt(); +diff -c xntpd/refclock_parse.c:1.1.1.9 xntpd/refclock_parse.c:3.45 +*** xntpd/refclock_parse.c:1.1.1.9 Wed Jan 26 21:53:39 1994 +--- xntpd/refclock_parse.c Wed Jan 26 21:53:39 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.43 1994/01/23 16:28:39 kardel Exp + * +! * refclock_parse.c,v 3.43 1994/01/23 16:28:39 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp + * +! * refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 129,135 **** + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.43 1994/01/23 16:28:39 kardel Exp"; + #endif + + /**=========================================================================== +--- 129,135 ---- + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp"; + #endif + + /**=========================================================================== +*************** +*** 243,248 **** +--- 243,249 ---- + * clock specific configuration + */ + l_fp basedelay; /* clock local phase offset */ ++ l_fp ppsdelay; /* clock local pps phase offset */ + + /* + * clock state handling/reporting +*************** +*** 295,300 **** +--- 296,302 ---- + #define NO_END (void (*)())0 + #define NO_DATA (void *)0 + #define NO_FORMAT "" ++ #define NO_PPSDELAY 0 + + #define DCF_ID "DCF" /* generic DCF */ + #define DCF_A_ID "DCFa" /* AM demodulation */ +*************** +*** 497,502 **** +--- 499,505 ---- + void *cl_data; /* local data area for "poll" mechanism */ + u_fp cl_rootdelay; /* rootdelay */ + U_LONG cl_basedelay; /* current offset - unsigned l_fp fractional part */ ++ U_LONG cl_ppsdelay; /* current PPS offset - unsigned l_fp fractional part */ + char *cl_id; /* ID code (usually "DCF") */ + char *cl_description; /* device name */ + char *cl_format; /* fixed format */ +*************** +*** 516,521 **** +--- 519,525 ---- + NO_DATA, + DCFPZF535_ROOTDELAY, + DCFPZF535_BASEDELAY, ++ NO_PPSDELAY, + DCF_P_ID, + DCFPZF535_DESCRIPTION, + NO_FORMAT, +*************** +*** 534,539 **** +--- 538,544 ---- + NO_DATA, + DCFPZF535OCXO_ROOTDELAY, + DCFPZF535OCXO_BASEDELAY, ++ NO_PPSDELAY, + DCF_P_ID, + DCFPZF535OCXO_DESCRIPTION, + NO_FORMAT, +*************** +*** 552,557 **** +--- 557,563 ---- + NO_DATA, + DCFUA31_ROOTDELAY, + DCFUA31_BASEDELAY, ++ NO_PPSDELAY, + DCF_A_ID, + DCFUA31_DESCRIPTION, + NO_FORMAT, +*************** +*** 570,575 **** +--- 576,582 ---- + NO_DATA, + DCF7000_ROOTDELAY, + DCF7000_BASEDELAY, ++ NO_PPSDELAY, + DCF_A_ID, + DCF7000_DESCRIPTION, + NO_FORMAT, +*************** +*** 588,593 **** +--- 595,601 ---- + WSDCF_DATA, + WSDCF_ROOTDELAY, + WSDCF_BASEDELAY, ++ NO_PPSDELAY, + DCF_A_ID, + WSDCF_DESCRIPTION, + WSDCF_FORMAT, +*************** +*** 606,611 **** +--- 614,620 ---- + NO_DATA, + RAWDCF_ROOTDELAY, + CONRAD_BASEDELAY, ++ NO_PPSDELAY, + DCF_A_ID, + CONRAD_DESCRIPTION, + RAWDCF_FORMAT, +*************** +*** 624,629 **** +--- 633,639 ---- + NO_DATA, + RAWDCF_ROOTDELAY, + TIMEBRICK_BASEDELAY, ++ NO_PPSDELAY, + DCF_A_ID, + TIMEBRICK_DESCRIPTION, + RAWDCF_FORMAT, +*************** +*** 642,647 **** +--- 652,658 ---- + GPS166_DATA, + GPS166_ROOTDELAY, + GPS166_BASEDELAY, ++ NO_PPSDELAY, + GPS166_ID, + GPS166_DESCRIPTION, + GPS166_FORMAT, +*************** +*** 660,665 **** +--- 671,677 ---- + TRIMBLESV6_DATA, + TRIMBLESV6_ROOTDELAY, + TRIMBLESV6_BASEDELAY, ++ NO_PPSDELAY, + TRIMBLESV6_ID, + TRIMBLESV6_DESCRIPTION, + TRIMBLESV6_FORMAT, +*************** +*** 2198,2203 **** +--- 2210,2218 ---- + parse->basedelay.l_ui = 0; /* we can only pre-configure delays less than 1 second */ + parse->basedelay.l_uf = parse->parse_type->cl_basedelay; + ++ parse->ppsdelay.l_ui = 0; /* we can only pre-configure delays less than 1 second */ ++ parse->ppsdelay.l_uf = parse->parse_type->cl_ppsdelay; ++ + peer->rootdelay = parse->parse_type->cl_rootdelay; + peer->sstclktype = parse->parse_type->cl_type; + peer->precision = sys_precision; +*************** +*** 2554,2559 **** +--- 2569,2575 ---- + out->badformat = out->baddata = 0; + out->timereset = 0; + out->currentstatus = out->lastevent = CEVNT_NOMINAL; ++ out->kv_list = (struct ctl_var *)0; + } + + if (unit >= MAXUNITS) +*************** +*** 2579,2585 **** + + if (in->haveflags & CLK_HAVETIME2) + { +! /* not USED */ + } + + if (in->haveflags & CLK_HAVEVAL1) +--- 2595,2601 ---- + + if (in->haveflags & CLK_HAVETIME2) + { +! parse->ppsdelay = in->fudgetime2; + } + + if (in->haveflags & CLK_HAVEVAL1) +*************** +*** 2619,2637 **** + if (out) + { + register unsigned LONG sum = 0; +! register char *t; + register struct tm *tm; + register short utcoff; + register char sign; + register int i; + time_t tim; + +! out->haveflags = CLK_HAVETIME1|CLK_HAVEVAL1|CLK_HAVEFLAG1|CLK_HAVEFLAG2|CLK_HAVEFLAG3; + out->clockdesc = parse->parse_type->cl_description; + + out->fudgetime1 = parse->basedelay; + +! L_CLR(&out->fudgetime2); + + out->fudgeval1 = (LONG)parse->peer->stratum; + +--- 2635,2655 ---- + if (out) + { + register unsigned LONG sum = 0; +! register char *t, *tt; + register struct tm *tm; + register short utcoff; + register char sign; + register int i; + time_t tim; + +! outstatus[0] = '\0'; +! +! out->haveflags = CLK_HAVETIME1|CLK_HAVETIME2|CLK_HAVEVAL1|CLK_HAVEFLAG1|CLK_HAVEFLAG2|CLK_HAVEFLAG3; + out->clockdesc = parse->parse_type->cl_description; + + out->fudgetime1 = parse->basedelay; + +! out->fudgetime2 = parse->ppsdelay; + + out->fudgeval1 = (LONG)parse->peer->stratum; + +*************** +*** 2657,2667 **** + */ + off = parse->time.parse_stime.fp; + L_SUB(&off, &parse->time.parse_ptime.fp); /* true offset */ +! out->fudgetime2 = off; +! out->haveflags |= CLK_HAVETIME2; + } + } + + /* + * all this for just finding out the +-xxxx part (there are always + * new and changing fields in the standards 8-(). +--- 2675,2691 ---- + */ + off = parse->time.parse_stime.fp; + L_SUB(&off, &parse->time.parse_ptime.fp); /* true offset */ +! tt = add_var(&out->kv_list, 40, RO); +! sprintf(tt, "refclock_ppsskew=%s", lfptoms(&off, 6)); + } + } + ++ if (PARSE_PPS(parse->time.parse_state)) ++ { ++ tt = add_var(&out->kv_list, 80, RO|DEF); ++ sprintf(tt, "refclock_ppstime=\"%s\"", prettydate(&parse->time.parse_ptime.fp)); ++ } ++ + /* + * all this for just finding out the +-xxxx part (there are always + * new and changing fields in the standards 8-(). +*************** +*** 2686,2702 **** + sign = '+'; + } + +! tim = parse->time.parse_time.fp.l_ui - JAN_1970; +! strcpy(outstatus, ctime(&tim)); +! t = strrchr(outstatus, '\n'); +! if (!t) + { +! t = outstatus + strlen(outstatus); +! } + else + { +! sprintf(t, " %c%02d%02d", sign, utcoff / 60, utcoff % 60); +! t += strlen(t); + } + + if (!PARSE_GETTIMECODE(parse, &tmpctl)) +--- 2710,2729 ---- + sign = '+'; + } + +! tt = add_var(&out->kv_list, 128, RO|DEF); +! sprintf(tt, "refclock_time=\""); +! tt += strlen(tt); +! +! if (parse->time.parse_time.fp.l_ui == 0) + { +! strcpy(tt, "<UNDEFINED>\""); +! } + else + { +! strcpy(tt, prettydate(&parse->time.parse_time.fp)); +! t = tt + strlen(tt); +! +! sprintf(t, " (%c%02d%02d)\"", sign, utcoff / 60, utcoff % 60); + } + + if (!PARSE_GETTIMECODE(parse, &tmpctl)) +*************** +*** 2705,2731 **** + } + else + { + /* + * copy PPS flags from last read transaction (informational only) + */ + tmpctl.parsegettc.parse_state |= parse->time.parse_state & + (PARSEB_PPS|PARSEB_S_PPS); + +! if (t) +! { +! *t = ' '; +! (void) parsestate(tmpctl.parsegettc.parse_state, t+1); +! } +! else +! { +! strcat(outstatus, " "); +! (void) parsestate(tmpctl.parsegettc.parse_state, outstatus + strlen(outstatus)); +! } +! strcat(outstatus," <"); + if (tmpctl.parsegettc.parse_count) +! mkascii(outstatus+strlen(outstatus), sizeof(outstatus) - strlen(outstatus) - 1, + tmpctl.parsegettc.parse_buffer, tmpctl.parsegettc.parse_count - 1); +! strcat(outstatus,">"); + parse->badformat += tmpctl.parsegettc.parse_badformat; + } + +--- 2732,2755 ---- + } + else + { ++ tt = add_var(&out->kv_list, 128, RO|DEF); ++ sprintf(tt, "refclock_status=\""); ++ tt += strlen(tt); ++ + /* + * copy PPS flags from last read transaction (informational only) + */ + tmpctl.parsegettc.parse_state |= parse->time.parse_state & + (PARSEB_PPS|PARSEB_S_PPS); + +! (void) parsestate(tmpctl.parsegettc.parse_state, tt); +! +! strcat(tt, "\""); +! + if (tmpctl.parsegettc.parse_count) +! mkascii(outstatus+strlen(outstatus), sizeof(outstatus)- strlen(outstatus) - 1, + tmpctl.parsegettc.parse_buffer, tmpctl.parsegettc.parse_count - 1); +! + parse->badformat += tmpctl.parsegettc.parse_badformat; + } + +*************** +*** 2737,2752 **** + } + else + { +! strcat(outstatus," ("); +! strncat(outstatus, tmpctl.parseformat.parse_buffer, tmpctl.parseformat.parse_count); +! strcat(outstatus,")"); + } + + /* + * gather state statistics + */ + +! t = outstatus + strlen(outstatus); + + for (i = 0; i <= CEVNT_MAX; i++) + { +--- 2761,2780 ---- + } + else + { +! tt = add_var(&out->kv_list, 80, RO|DEF); +! sprintf(tt, "refclock_format=\""); +! +! strncat(tt, tmpctl.parseformat.parse_buffer, tmpctl.parseformat.parse_count); +! strcat(tt,"\""); + } + + /* + * gather state statistics + */ + +! tt = add_var(&out->kv_list, 200, RO|DEF); +! strcpy(tt, "refclock_states=\""); +! tt += strlen(tt); + + for (i = 0; i <= CEVNT_MAX; i++) + { +*************** +*** 2769,2787 **** + + if (stime) + { +! sprintf(t, "%s%s%s: %s (%d.%02d%%)", +! sum ? "; " : " [", + (parse->status == i) ? "*" : "", + clockstatus(i), + l_mktime(stime), + percent / 100, percent % 100); + sum += stime; +! t += strlen(t); + } + } + +! sprintf(t, "; running time: %s]", l_mktime(sum)); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; + out->timereset = parse->timestarted; +--- 2797,2824 ---- + + if (stime) + { +! sprintf(tt, "%s%s%s: %s (%d.%02d%%)", +! sum ? "; " : "", + (parse->status == i) ? "*" : "", + clockstatus(i), + l_mktime(stime), + percent / 100, percent % 100); + sum += stime; +! tt += strlen(tt); + } + } + +! sprintf(tt, "; running time: %s\"", l_mktime(sum)); +! +! tt = add_var(&out->kv_list, 32, RO); +! sprintf(tt, "refclock_id=\"%s\"", parse->parse_type->cl_id); + ++ tt = add_var(&out->kv_list, 80, RO); ++ sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); ++ ++ tt = add_var(&out->kv_list, 128, RO); ++ sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.45 1994/01/25 19:06:27 kardel Exp\""); ++ + out->lencode = strlen(outstatus); + out->lastcode = outstatus; + out->timereset = parse->timestarted; +*************** +*** 3086,3091 **** +--- 3123,3130 ---- + */ + offset = parsetime->parse_ptime.fp; + ++ L_ADD(&offset, &parse->ppsdelay); ++ + if (PARSE_TIMECODE(parsetime->parse_state)) + { + if (M_ISGEQ(off.l_i, off.l_f, -1, 0x80000000) && +*************** +*** 3353,3358 **** +--- 3392,3403 ---- + * History: + * + * refclock_parse.c,v ++ * Revision 3.45 1994/01/25 19:06:27 kardel ++ * 94/01/23 reconcilation ++ * ++ * Revision 3.44 1994/01/25 17:32:23 kardel ++ * settable extended variables ++ * + * Revision 3.43 1994/01/23 16:28:39 kardel + * HAVE_TERMIOS introduced + * +diff -c -r1.1.1.8 lib/numtohost.c +*** lib/numtohost.c:1.1.1.8 1994/01/26 20:12:51 +--- lib/numtohost.c 1994/01/26 21:17:01 +*************** +*** 1,6 **** +--- 1,7 ---- + /* numtohost.c,v 3.1 1993/07/06 01:08:40 jbj Exp + * numtohost - convert network number to host name. + */ ++ #include "ntp_types.h" + #include "ntp_string.h" + #include <netdb.h> + diff --git a/usr.sbin/xntpd/patches/patch.30 b/usr.sbin/xntpd/patches/patch.30 new file mode 100644 index 0000000..55897f9 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.30 @@ -0,0 +1,73 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa14619; 22 Mar 94 11:53 EST +Received: from jagubox.gsfc.nasa.gov by louie.udel.edu id aa24926; + 22 Mar 94 11:48 EST +Received: by jagubox.gsfc.nasa.gov (Smail3.1.28.1 #2) + id m0pj9dD-000C8UC; Tue, 22 Mar 94 11:48 EST +Message-Id: <m0pj9dD-000C8UC@jagubox.gsfc.nasa.gov> +From: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +Subject: Small patch for xntpd 3.3p and A/UX (tickadj) +To: Mills@udel.edu +Date: Tue, 22 Mar 1994 11:48:42 -0500 (EST) +Reply-To: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +In-Reply-To: <9308051324.aa24396@huey.udel.edu> from "Mills@udel.edu" at Aug 5, 93 01:24:24 pm +X-Mailer: ELM [version 2.4 PL23] +Content-Type: text +Content-Length: 1355 + +This little patch streamlines things a bit for tickadj and A/UX: + +----------->8 cut here -------------------------------- + +*** tickadj.c.orig Mon Mar 14 02:47:28 1994 +--- tickadj.c Tue Mar 22 11:41:19 1994 +*************** +*** 333,342 **** + + #if defined(SYS_AUX3) || defined(SYS_AUX2) + #define X_TICKADJ 0 +! #define X_V 1 +! #define X_TICK 2 + #define X_DEF +! static struct nlist nl[4]; + #endif + + #ifdef NeXT +--- 333,345 ---- + + #if defined(SYS_AUX3) || defined(SYS_AUX2) + #define X_TICKADJ 0 +! #define X_TICK 1 + #define X_DEF +! static struct nlist nl[] = +! { {"tickadj"}, +! {"tick"}, +! {""}, +! }; + #endif + + #ifdef NeXT +*************** +*** 428,440 **** + NULL + }; + struct stat stbuf; +- +- #if defined(SYS_AUX3) || defined(SYS_AUX2) +- strcpy (nl[X_TICKADJ].n_name, "tickadj"); +- strcpy (nl[X_V].n_name, "v"); +- strcpy (nl[X_TICK].n_name, "tick"); +- nl[3].n_name[0] = '\0'; +- #endif + + for (kname = kernels; *kname != NULL; kname++) { + if (stat(*kname, &stbuf) == -1) +--- 431,436 ---- +----------->8 cut here -------------------------------- +-- +#include <std/disclaimer.h> + Jim Jagielski | + jim@jagubox.gsfc.nasa.gov | "Dead or alive, you're coming with me." + NASA/GSFC, Code 734.4 | RoboCop + Greenbelt, MD 20771 | + diff --git a/usr.sbin/xntpd/patches/patch.31 b/usr.sbin/xntpd/patches/patch.31 new file mode 100644 index 0000000..33048f9 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.31 @@ -0,0 +1,83 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa12734; 27 Mar 94 8:52 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa20329; + 27 Mar 94 8:48 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA05771 (5.65c-6/7.3v-FAU); Sun, 27 Mar 1994 15:48:38 +0200 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA01229 (5.65c-6/7.3m-FAU); Sun, 27 Mar 1994 14:48:37 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403271348.AA01229@faui43.informatik.uni-erlangen.de> +Subject: minor patches +To: mills@udel.edu +Date: Sun, 27 Mar 94 15:48:32 MET DST +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave, + +I just got through manually read news (in the spool area 8-( - when +will they ever fix our news installation). + +In order to avoid ptx being picked up in AT&T machine i added hope-fully +an additional check. Why do vendor have to make machine look the +same when they aren't ? I though uname was supposed to find out - I +guess I was wrong - every vendor seems to have his own ideas about +uname and they all do not mix very well. + +The fix to numtohost allows it to compile on ptx - I hope it still +compiles on all others (should though). + +diff -c lib/numtohost.c:1.1.1.9 lib/numtohost.c:3.7 +*** lib/numtohost.c:1.1.1.9 Sun Mar 27 15:36:54 1994 +--- lib/numtohost.c Sun Mar 27 15:36:54 1994 +*************** +*** 1,12 **** +! /* numtohost.c,v 3.1 1993/07/06 01:08:40 jbj Exp + * numtohost - convert network number to host name. + */ +- #include "ntp_types.h" + #include <netdb.h> + + #include "ntp_fp.h" +- #include "lib_strbuf.h" + #include "ntp_stdlib.h" + + #define LOOPBACKNET 0x7f000000 + #define LOOPBACKHOST 0x7f000001 +--- 1,11 ---- +! /* + * numtohost - convert network number to host name. + */ + #include <netdb.h> + + #include "ntp_fp.h" + #include "ntp_stdlib.h" ++ #include "lib_strbuf.h" + + #define LOOPBACKNET 0x7f000000 + #define LOOPBACKHOST 0x7f000001 +diff -c scripts/Guess.sh:1.1.1.8 scripts/Guess.sh:1.13 +*** scripts/Guess.sh:1.1.1.8 Sun Mar 27 15:38:53 1994 +--- scripts/Guess.sh Sun Mar 27 15:38:53 1994 +*************** +*** 78,84 **** + 3.2.*) + case "$4" in + v*) +! (i386) >/dev/null 2>&1 && guess=ptx;; + esac + esac + fi +--- 78,84 ---- + 3.2.*) + case "$4" in + v*) +! (i386) >/dev/null 2>&1 && [ -f /usr/lib/libseq.a ] && guess=ptx;; + esac + esac + fi +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.32 b/usr.sbin/xntpd/patches/patch.32 new file mode 100644 index 0000000..2e951cb --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.32 @@ -0,0 +1,89 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa12910; 27 Mar 94 10:06 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa22473; + 27 Mar 94 10:05 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA09307 (5.65c-6/7.3v-FAU); Sun, 27 Mar 1994 17:05:03 +0200 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA05359 (5.65c-6/7.3m-FAU); Sun, 27 Mar 1994 16:05:01 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403271505.AA05359@faui43.informatik.uni-erlangen.de> +Subject: more PTX related patches... +To: mills@udel.edu +Date: Sun, 27 Mar 94 17:04:56 MET DST +X-Mailer: ELM [version 2.3 PL11] + +Hi, Dave ! + +And another patche to make parse compile on PTX (Sequents +SysVR2 version). + +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/parse/parse.c,v +retrieving revision 3.23 +retrieving revision 3.24 +diff -c -r3.23 -r3.24 +*** parse/parse.c:3.23 1994/03/25 13:09:02 +--- parse/parse.c 1994/03/27 15:01:36 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.23 1994/03/25 13:09:02 kardel Exp + * +! * parse.c,v 3.23 1994/03/25 13:09:02 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.24 1994/03/27 15:01:36 kardel Exp + * +! * parse.c,v 3.24 1994/03/27 15:01:36 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 29,34 **** +--- 29,38 ---- + #include "sys/time.h" + #include "sys/errno.h" + ++ #include "ntp_fp.h" ++ #include "ntp_unixtime.h" ++ #include "ntp_calendar.h" ++ + #include "ntp_machine.h" + + #if defined(PARSESTREAM) && (defined(SYS_SUNOS4) || defined(SYS_SOLARIS)) && defined(STREAM) +*************** +*** 49,58 **** + #endif + #endif + +- #include "ntp_fp.h" +- #include "ntp_unixtime.h" +- #include "ntp_calendar.h" +- + #include "parse.h" + + #include "ntp_stdlib.h" +--- 53,58 ---- +*************** +*** 1162,1167 **** +--- 1162,1170 ---- + * History: + * + * parse.c,v ++ * Revision 3.24 1994/03/27 15:01:36 kardel ++ * reorder include file to cope with PTX ++ * + * Revision 3.23 1994/03/25 13:09:02 kardel + * considering FIXEDONLY entries only in FIXEDONLY mode + * +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.33 b/usr.sbin/xntpd/patches/patch.33 new file mode 100644 index 0000000..e7d1934 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.33 @@ -0,0 +1,75 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa13737; 27 Mar 94 15:27 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa29101; + 27 Mar 94 15:23 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA24270 (5.65c-6/7.3v-FAU); Sun, 27 Mar 1994 22:23:35 +0200 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA07515 (5.65c-6/7.3m-FAU); Sun, 27 Mar 1994 21:23:34 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403272023.AA07515@faui43.informatik.uni-erlangen.de> +Subject: and for patch 33? +To: mills@udel.edu +Date: Sun, 27 Mar 94 22:23:30 MET DST +X-Mailer: ELM [version 2.3 PL11] + +This should get you to Patch 33. or higher. + - gcc 2.5.8 (from Per Hedeland - gcc 2.5.8 is just + causing to many poeple to complain 8-()_ + - a an note what one can do in Config.local in HACKermode. + +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/RELNOTES,v +retrieving revision 1.1.1.11 +diff -c -r1.1.1.11 RELNOTES +*** 1.1.1.11 1994/01/30 17:08:20 +--- RELNOTES 1994/03/27 19:40:27 +*************** +*** 31,36 **** +--- 31,40 ---- + For custom tailored configuration copying Config.local.dist to Config.local + and editing Config.local to suit the local needs is neccessary (at most + 3 lines to change), or use one of the make's above and then tweak it. ++ Config.local can also be used to override common settings from the ++ machines/* files like the AUTHDEFS= to select very specific configurations. ++ Please use this feature with care and don't be disappointed if it doesn't ++ work the way you expect. + + (2) Type "make" to compile everything of general interest. Expect few or + no warnings using cc and a moderate level of warnings using gcc. +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/include/l_stdlib.h,v +retrieving revision 1.1.1.6 +diff -c -r1.1.1.6 l_stdlib.h +*** include/l_stdlib.h:1.1.1.6 1994/01/28 13:07:49 +--- include/l_stdlib.h 1994/03/27 19:34:40 +*************** +*** 70,80 **** + + extern int close P((int)); + extern int ioctl P((int, int, char *)); +! extern int read P((int, char *, unsigned)); + extern int rename P((char *, char *)); +! extern int write P((int, char *, int)); +! extern int unlink P((char *)); +! extern int link P((char *, char *)); + + #ifdef FILE + extern int fclose P((FILE *)); +--- 70,80 ---- + + extern int close P((int)); + extern int ioctl P((int, int, char *)); +! extern int read P((int, void *, unsigned)); + extern int rename P((char *, char *)); +! extern int write P((int, const void *, unsigned)); +! extern int unlink P((const char *)); +! extern int link P((const char *, const char *)); + + #ifdef FILE + extern int fclose P((FILE *)); +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.34 b/usr.sbin/xntpd/patches/patch.34 new file mode 100644 index 0000000..a382889 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.34 @@ -0,0 +1,303 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa02155; 25 Mar 94 8:47 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa05544; + 25 Mar 94 8:45 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA27199 (5.65c-6/7.3v-FAU); Fri, 25 Mar 1994 14:45:13 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA06935 (5.65c-6/7.3m-FAU); Fri, 25 Mar 1994 14:45:11 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199403251345.AA06935@faui43.informatik.uni-erlangen.de> +Subject: bugfixes for parse & ntpq enhancements +To: mills@udel.edu +Date: Fri, 25 Mar 94 14:45:05 MET +X-Mailer: ELM [version 2.3 PL11] + +Hi Dave, + +I have a 2 bug fixes and an ntpq enhancement: + - parse bitmap initialisation fixed + - allow for large offsets in refclock_parse (>4 min 8-() + - decode the flash bits in cooked mode + +diff -c ntpq/ntpq.c:1.1.1.21 ntpq/ntpq.c:3.22 +*** ntpq/ntpq.c:1.1.1.21 Fri Mar 25 14:32:38 1994 +--- ntpq/ntpq.c Fri Mar 25 14:32:38 1994 +*************** +*** 75,80 **** +--- 75,81 ---- + #define OC 12 /* integer, print in octal */ + #define MD 13 /* mode */ + #define AR 14 /* array of times */ ++ #define TST 15 /* test flags */ + #define EOV 255 /* end of table */ + + +*************** +*** 145,151 **** + { CP_RECEIVED, UI, "received" }, /* 31 */ + { CP_SENT, UI, "sent" }, /* 32 */ + { CP_FILTERROR, AR, "filterror" }, /* 33 */ +! { CP_FLASH, ST, "flash"}, /* 34 */ + { CP_DISP, AR, "disp" }, /* 35 */ + /* + * These are duplicate entires so that we can +--- 146,152 ---- + { CP_RECEIVED, UI, "received" }, /* 31 */ + { CP_SENT, UI, "sent" }, /* 32 */ + { CP_FILTERROR, AR, "filterror" }, /* 33 */ +! { CP_FLASH, TST, "flash"}, /* 34 */ + { CP_DISP, AR, "disp" }, /* 35 */ + /* + * These are duplicate entires so that we can +*************** +*** 189,194 **** +--- 190,209 ---- + }; + + /* ++ * flasher bits ++ */ ++ static char *tstflagnames[] = { ++ "DUPLICATE PKT", ++ "BOGUS PKT", ++ "PROTO UNSYNC", ++ "PEER BOUNDS", ++ "BAD AUTH", ++ "PEER CLOCK UNSYNC", ++ "BAD STRATUM", ++ "ROOT BOUNDS" ++ }; ++ ++ /* + * Leap values + */ + struct codestring leap_codes[] = { +*************** +*** 2836,2842 **** + output(fp, name, buf); + } + +! + + /* + * cookedprint - output variables in cooked mode +--- 2851,2895 ---- + output(fp, name, buf); + } + +! static char * +! tstflags(val) +! U_LONG val; +! { +! register char *cb, *s; +! register int i; +! register char *sep; +! +! sep = ""; +! i = 0; +! s = cb = &circ_buf[nextcb][0]; +! if (++nextcb >= NUMCB) +! nextcb = 0; +! +! sprintf(cb, "0x%x", val); +! cb += strlen(cb); +! if (val <= ((1<<8)-1)) { +! if (!val) { +! strcat(cb, "<OK>"); +! cb += strlen(cb); +! } else { +! *cb++ = '<'; +! while (val) { +! if (val & 0x1) { +! sprintf(cb, "%s%s", sep, tstflagnames[i]); +! sep = ";"; +! cb += strlen(cb); +! } +! i++; +! val >>= 1; +! } +! *cb++ = '>'; +! } +! } else { +! *cb++ = '?'; +! } +! *cb = '\0'; +! return s; +! } + + /* + * cookedprint - output variables in cooked mode +*************** +*** 2994,2999 **** +--- 3047,3059 ---- + outputarr(fp, name, narr, lfparr); + break; + ++ case TST: ++ if (!decodeuint(value, &uval)) ++ output_raw = '?'; ++ else ++ output(fp, name, tstflags(uval)); ++ break; ++ + default: + (void) fprintf(stderr, + "Internal error in cookedprint, %s=%s, fmt %d\n", +diff -c parse/parse.c:1.1.1.10 parse/parse.c:3.23 +*** parse/parse.c:1.1.1.10 Fri Mar 25 14:33:02 1994 +--- parse/parse.c Fri Mar 25 14:33:02 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * +! * parse.c,v 3.22 1994/02/25 12:34:49 kardel Exp + * + * Parser module for reference clock + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/parse/parse.c,v 3.23 1994/03/25 13:09:02 kardel Exp + * +! * parse.c,v 3.23 1994/03/25 13:09:02 kardel Exp + * + * Parser module for reference clock + * +*************** +*** 178,183 **** +--- 178,187 ---- + { + fmt = clockformats[i]; + ++ if (!(parseio->parse_flags & PARSE_FIXED_FMT) && ++ (fmt->flags & CVT_FIXEDONLY)) ++ continue; ++ + if (fmt->flags & F_START) + { + index = fmt->startsym / 8; +*************** +*** 1158,1163 **** +--- 1162,1170 ---- + * History: + * + * parse.c,v ++ * Revision 3.23 1994/03/25 13:09:02 kardel ++ * considering FIXEDONLY entries only in FIXEDONLY mode ++ * + * Revision 3.22 1994/02/25 12:34:49 kardel + * allow for converter generated utc times + * +diff -c xntpd/refclock_parse.c:1.1.1.13 xntpd/refclock_parse.c:3.53 +*** xntpd/refclock_parse.c:1.1.1.13 Fri Mar 25 14:35:07 1994 +--- xntpd/refclock_parse.c Fri Mar 25 14:35:08 1994 +*************** +*** 1,8 **** + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * +! * refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp + * + * generic reference clock driver for receivers + * +--- 1,8 ---- + #if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) + /* +! * /src/NTP/REPOSITORY/v3/xntpd/refclock_parse.c,v 3.53 1994/03/25 13:07:39 kardel Exp + * +! * refclock_parse.c,v 3.53 1994/03/25 13:07:39 kardel Exp + * + * generic reference clock driver for receivers + * +*************** +*** 129,135 **** + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp"; + #endif + + /**=========================================================================== +--- 129,135 ---- + #include "parse.h" + + #if !defined(NO_SCCSID) && !defined(lint) && !defined(__GNUC__) +! static char rcsid[]="refclock_parse.c,v 3.53 1994/03/25 13:07:39 kardel Exp"; + #endif + + /**=========================================================================== +*************** +*** 2824,2830 **** + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.51 1994/03/03 09:49:54 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +--- 2824,2830 ---- + sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description); + + tt = add_var(&out->kv_list, 128, RO); +! sprintf(tt, "refclock_driver_version=\"refclock_parse.c,v 3.53 1994/03/25 13:07:39 kardel Exp\""); + + out->lencode = strlen(outstatus); + out->lastcode = outstatus; +*************** +*** 3103,3109 **** + L_ADD(&off, &offset); + rectime = off; /* this makes org time and xmt time somewhat artificial */ + +! if (parse->flags & PARSE_STAT_FILTER) + { + struct timeval usecerror; + /* +--- 3103,3113 ---- + L_ADD(&off, &offset); + rectime = off; /* this makes org time and xmt time somewhat artificial */ + +! L_SUB(&off, &parsetime->parse_stime.fp); +! +! if ((parse->flags & PARSE_STAT_FILTER) && +! (off.l_i > -60) && +! (off.l_i < 60)) /* take usec error only if within +- 60 secs */ + { + struct timeval usecerror; + /* +*************** +*** 3115,3124 **** + sTVTOTS(&usecerror, &off); + L_ADD(&off, &offset); + } +- else +- { +- L_SUB(&off, &parsetime->parse_stime.fp); +- } + } + + if (PARSE_PPS(parsetime->parse_state) && CL_PPS(parse->unit)) +--- 3119,3124 ---- +*************** +*** 3409,3414 **** +--- 3409,3420 ---- + * History: + * + * refclock_parse.c,v ++ * Revision 3.53 1994/03/25 13:07:39 kardel ++ * fixed offset calculation for large (>4 Min) offsets ++ * ++ * Revision 3.52 1994/03/03 09:58:00 kardel ++ * stick -kv in cvs is no fun ++ * + * Revision 3.49 1994/02/20 13:26:00 kardel + * rcs id cleanup + * +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.35 b/usr.sbin/xntpd/patches/patch.35 new file mode 100644 index 0000000..e6b1ea4 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.35 @@ -0,0 +1,914 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa25410; 3 Apr 94 18:04 EDT +Received: from adrastea.lcs.mit.edu by louie.udel.edu id aa09227; + 3 Apr 94 17:56 EDT +Received: by adrastea.lcs.mit.edu; id AA26407; Sun, 3 Apr 1994 17:56:48 -0400 +Date: Sun, 3 Apr 1994 17:56:48 -0400 +From: Garrett Wollman <wollman@adrastea.lcs.mit.edu> +Message-Id: <9404032156.AA26407@adrastea.lcs.mit.edu> +To: Dave Mills <Mills@udel.edu> +Subject: xntpd 3.3p changes for FreeBSD + +This still doesn't solve the 18-second discrepancy. However, the +patch file below shows the current differences between xntp3.3p and +the FreeBSD version of same, deleted files not included. I have also +included the Makefiles that we use to provide some idea of our build +structure. (Thankfully, xntp---unlike some other popular pieces of +software---has a sane directory structure to begin with, so it isn't +nearly as difficult to handle this sort of thing than it is with, say, +GCC.) + +diff -c /dev/null 386BSD/src/contrib/xntpd/Makefile.inc:1.3 +*** /dev/null Sun Apr 3 13:42:15 1994 +--- 386BSD/src/contrib/xntpd/Makefile.inc Sun Apr 3 13:42:15 1994 +*************** +*** 0 **** +--- 1,7 ---- ++ DEFS_LOCAL=-DREFCLOCK -DPARSE ++ NTPDEFS= -DSYS_FREEBSD -DSYS_386BSD -DHAVE_TERMIOS ++ AUTHDEFS= -DMD5 ++ CLOCKDEFS= -DLOCAL_CLOCK -DPST -DWWVB -DAS2201 -DGOES -DGPSTM -DOMEGA \ ++ -DLEITCH -DTRAK ++ CFLAGS+= ${NTPDEFS} ${DEFS_LOCAL} ${AUTHDEFS} ${CLOCKDEFS} ${COPTS} ++ BINDIR?= /usr/sbin +diff -c /dev/null 386BSD/src/contrib/xntpd/README.FreeBSD:1.5 +*** /dev/null Sun Apr 3 13:42:15 1994 +--- 386BSD/src/contrib/xntpd/README.FreeBSD Sun Apr 3 13:42:15 1994 +*************** +*** 0 **** +--- 1,78 ---- ++ This version of NTP was converted to the BSD-style Makefile system by ++ Garrett Wollman (wollman@freefall.cdrom.com); it is based on version ++ 3.3p (late beta) from the University of Delaware. ++ ++ Besides the Makefile changes, the DES code has been completely removed ++ in order to make this code exportable. If you have a legal copy of ++ `authdes.c', you can just add it to the lib/ directory and add `-DDES' ++ to the AUTHDEFS in Makefile.inc. ++ ++ You can change CLOCKDEFS in the same file to add other reference clocks. ++ ++ ---------------------------------------------------- ++ Support for Conrad electronic's "DCF-77 Uhr, Mobil". ++ ---------------------------------------------------- ++ Conrad electronic in Germany,, Phone (+49) 962230111 (?), sells a gadget ++ called "DCF77 Uhr, mobil", which is a DCF77 timecode receiver with a ++ rs-232 interface. The price is around DM130. ++ 9-pin interface is Order# 97 94 57 66 ++ 25-pin interface is Order# 97 94 81 66 ++ ++ You must define ++ -DDCF77 -DPPS -DFREEBSD_CONRAD -DDEBUG ++ when you compile xntpd. You can later remove -DDEBUG, if you feel like it. ++ ++ You must also have ++ options COM_BIDIR ++ defined in your kernel, and finally the ttyport you intend to use must ++ have special interrupt vector: ++ device sio1 at isa? port "IO_COM2" tty irq 3 vector siointrts ++ ^^^^^^^^^^^^ ++ connect the radio-clock to the tty port and link it to /dev/refclock-0: ++ ++ cd /dev ++ sh MAKEDEV cua1 ++ ln -s /dev/cua01 /dev/refclock-0 ++ ++ make a directory to gather statistics in: ++ mkdir /var/tmp/ntp ++ ++ Create a /etc/ntp.conf along these lines: ++ ++ # DCF77 without PPS ++ server 127.127.8.20 ++ # DCF77 with PPS ++ #server 127.127.8.148 prefer ++ ++ driftfile /var/tmp/ntp/ntp.drift ++ statsdir /var/tmp/ntp ++ statistics loopstats ++ statistics peerstats ++ statistics clockstats ++ filegen peerstats file peerstats type day enable ++ filegen loopstats file loopstats type day enable ++ filegen clockstats file clockstats type day enable ++ ++ Try to start it: ++ comcontrol ttyd1 bidir ++ tickadj -A ++ xntpd -d -d -d ++ ++ You should see the red LED flash on the receiver every second now. You ++ may have to experiment a bit with the location, and possibly adjust the ++ minute variable resistor inside to get a good signal. Be aware, that just ++ because you see the light flash, is not the same as the signal being ++ received by the computer. The chip doing the work in the reciver uses ++ less than 1 micro-ampere, so even if RTS isn't pulled low, it will happily ++ receive, but be unable to buffer the signal to the rs-232 levels needed. ++ ++ You can see what's going on in /var/log/messages, and query the ++ daemon using xntpdc and ntpq, in particular the "clockvar" command ++ of ntpq will tell about the clocks healt. ++ ++ I live in Slagelse, Denmark, which is ~1000 Km from Mainflingen, yet ++ I have +/- 2 ms precision from this cheap gadget. If you have a very ++ stable signal, you can use the 'pps' address instead to improve your ++ timing. ++ ++ Have fun... Poul-Henning Kamp <phk@login.dkuug.dk> +diff -c /dev/null 386BSD/src/contrib/xntpd/authstuff/Makefile:1.2 +*** /dev/null Sun Apr 3 13:42:19 1994 +--- 386BSD/src/contrib/xntpd/authstuff/Makefile Sun Apr 3 13:42:20 1994 +*************** +*** 0 **** +--- 1,27 ---- ++ # ++ # $Id: Makefile,v 1.2 1993/12/22 11:32:10 rgrimes Exp $ ++ # ++ # Most of the programs in this directory are completely useless for the ++ # NTP configuration that we provide by default. ++ # We provide the `md5' program as a public service. ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= ${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= ${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= md5 ++ ++ SRCS= md5driver.c ++ NOMAN= ++ ++ install: ++ ++ .include <bsd.prog.mk> +diff -c 386BSD/src/contrib/xntpd/authstuff/md5driver.c:1.1.1.2 386BSD/src/contrib/xntpd/authstuff/md5driver.c:1.2 +*** 386BSD/src/contrib/xntpd/authstuff/md5driver.c:1.1.1.2 Sun Apr 3 13:42:20 1994 +--- 386BSD/src/contrib/xntpd/authstuff/md5driver.c Sun Apr 3 13:42:20 1994 +*************** +*** 30,36 **** +--- 30,38 ---- + #endif /* SYS_BSDI */ + #include "md5.h" + ++ #ifndef MD5 + #define MD5 ++ #endif + #include "ntp_string.h" + #include "ntp_stdlib.h" + +diff -c /dev/null 386BSD/src/contrib/xntpd/clockstuff/Makefile:1.1 +*** /dev/null Sun Apr 3 13:42:21 1994 +--- 386BSD/src/contrib/xntpd/clockstuff/Makefile Sun Apr 3 13:42:21 1994 +*************** +*** 0 **** +--- 1,16 ---- ++ # ++ # $Id: Makefile,v 1.1 1993/12/21 21:06:24 wollman Exp $ ++ # ++ ++ PROG= propdelay ++ LIBADD= -L${.CURDIR}/../lib -lntp -lm ++ DPADD= ${.CURDIR}/../lib/libntp.a ++ ++ SRCS= propdelay.c ++ NOMAN= ++ ++ install: ++ ++ CLEANFILES+= chutest clktest chutest.o clktest.o ++ ++ .include <bsd.prog.mk> +diff -c /dev/null 386BSD/src/contrib/xntpd/lib/Makefile:1.5 +*** /dev/null Sun Apr 3 13:43:01 1994 +--- 386BSD/src/contrib/xntpd/lib/Makefile Sun Apr 3 13:43:01 1994 +*************** +*** 0 **** +--- 1,30 ---- ++ # ++ # $Id: Makefile,v 1.5 1994/04/03 20:37:05 wollman Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ SRCS= atoint.c atolfp.c atouint.c auth12crypt.c authdecrypt.c authdes.c \ ++ authencrypt.c authkeys.c authparity.c authreadkeys.c authusekey.c \ ++ buftvtots.c caljulian.c calleapwhen.c caltontp.c calyearstart.c \ ++ clocktime.c dofptoa.c dolfptoa.c emalloc.c fptoa.c fptoms.c \ ++ gettstamp.c hextoint.c hextolfp.c humandate.c inttoa.c \ ++ lib_strbuf.c mfptoa.c mfptoms.c modetoa.c mstolfp.c \ ++ msutotsf.c netof.c numtoa.c refnumtoa.c numtohost.c octtoint.c \ ++ prettydate.c ranny.c tsftomsu.c tstotv.c tvtoa.c tvtots.c \ ++ uglydate.c uinttoa.c utvtoa.c clocktypes.c \ ++ md5.c a_md5encrypt.c a_md5decrypt.c \ ++ a_md512crypt.c decodenetnum.c systime.c msyslog.c syssignal.c \ ++ findconfig.c getopt.c ++ ++ NOMAN= ++ NOPROFILE= ++ LIB= ntp ++ CLEANFILES+=authdes.c ++ ++ install: ++ ++ authdes.c: authdes.c.export ++ cp ${.CURDIR}/authdes.c.export authdes.c ++ ++ .include <bsd.lib.mk> +diff -c /dev/null 386BSD/src/contrib/xntpd/ntpdate/Makefile:1.3 +*** /dev/null Sun Apr 3 13:43:27 1994 +--- 386BSD/src/contrib/xntpd/ntpdate/Makefile Sun Apr 3 13:43:27 1994 +*************** +*** 0 **** +--- 1,28 ---- ++ # ++ # $Id: Makefile,v 1.3 1993/12/22 11:32:56 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= ntpdate ++ MAN8= ${.CURDIR}/../doc/ntpdate.8 ++ CLEANFILES+= .version version.c ++ ++ SRCS= ntpdate.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion ntpdate ++ ++ .include <bsd.prog.mk> +diff -c /dev/null 386BSD/src/contrib/xntpd/ntpq/Makefile:1.3 +*** /dev/null Sun Apr 3 13:43:28 1994 +--- 386BSD/src/contrib/xntpd/ntpq/Makefile Sun Apr 3 13:43:29 1994 +*************** +*** 0 **** +--- 1,29 ---- ++ # ++ # $Id: Makefile,v 1.3 1993/12/22 11:33:07 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= ntpq ++ MAN8= ${.CURDIR}/../doc/ntpq.8 ++ CLEANFILES+= .version version.c ++ BINDIR= /usr/bin ++ ++ SRCS= ntpq.c ntpq_ops.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion ntpq ++ ++ .include <bsd.prog.mk> +diff -c 386BSD/src/contrib/xntpd/ntpq/ntpq.c:1.1.1.2 386BSD/src/contrib/xntpd/ntpq/ntpq.c:1.2 +*** 386BSD/src/contrib/xntpd/ntpq/ntpq.c:1.1.1.2 Sun Apr 3 13:43:30 1994 +--- 386BSD/src/contrib/xntpd/ntpq/ntpq.c Sun Apr 3 13:43:30 1994 +*************** +*** 301,307 **** + static int decodearr P((char *, int *, l_fp *)); + static char * getcode P((int, struct codestring *)); + static void help P((struct parse *, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) + static int helpsort P((const void *, const void *)); + #else + static int helpsort P((char **, char **)); +--- 301,307 ---- + static int decodearr P((char *, int *, l_fp *)); + static char * getcode P((int, struct codestring *)); + static void help P((struct parse *, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + static int helpsort P((const void *, const void *)); + #else + static int helpsort P((char **, char **)); +*************** +*** 335,341 **** + static void endoutput P((FILE *)); + static void outputarr P((FILE *, char *, int, l_fp *)); + static void cookedprint P((int, int, char *, int, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) + static int assoccmp P((const void *, const void *)); + #else + static int assoccmp P((struct association *, struct association *)); +--- 335,341 ---- + static void endoutput P((FILE *)); + static void outputarr P((FILE *, char *, int, l_fp *)); + static void cookedprint P((int, int, char *, int, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + static int assoccmp P((const void *, const void *)); + #else + static int assoccmp P((struct association *, struct association *)); +*************** +*** 1888,1894 **** + for (xcp = opcmds; xcp->keyword != 0; xcp++) + cmdsort[n++] = xcp->keyword; + +! #if defined(sgi) || defined(SYS_BSDI) + qsort((void *)cmdsort, n, sizeof(char *), helpsort); + #else + qsort((char *)cmdsort, n, sizeof(char *), helpsort); +--- 1888,1894 ---- + for (xcp = opcmds; xcp->keyword != 0; xcp++) + cmdsort[n++] = xcp->keyword; + +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + qsort((void *)cmdsort, n, sizeof(char *), helpsort); + #else + qsort((char *)cmdsort, n, sizeof(char *), helpsort); +*************** +*** 1934,1940 **** + * helpsort - do hostname qsort comparisons + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) + helpsort(t1, t2) + const void *t1; + const void *t2; +--- 1934,1940 ---- + * helpsort - do hostname qsort comparisons + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + helpsort(t1, t2) + const void *t1; + const void *t2; +*************** +*** 3028,3034 **** + sortassoc() + { + if (numassoc > 1) +! #if defined(sgi) || defined(SYS_BSDI) + qsort((void *)assoc_cache, numassoc, + sizeof(struct association), assoccmp); + #else +--- 3028,3034 ---- + sortassoc() + { + if (numassoc > 1) +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + qsort((void *)assoc_cache, numassoc, + sizeof(struct association), assoccmp); + #else +*************** +*** 3042,3048 **** + * assoccmp - compare two associations + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) + assoccmp(t1, t2) + const void *t1; + const void *t2; +--- 3042,3048 ---- + * assoccmp - compare two associations + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + assoccmp(t1, t2) + const void *t1; + const void *t2; +diff -c /dev/null 386BSD/src/contrib/xntpd/ntptrace/Makefile:1.2 +*** /dev/null Sun Apr 3 13:43:31 1994 +--- 386BSD/src/contrib/xntpd/ntptrace/Makefile Sun Apr 3 13:43:31 1994 +*************** +*** 0 **** +--- 1,28 ---- ++ # ++ # $Id: Makefile,v 1.2 1993/12/22 11:33:14 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= ntptrace ++ MAN8= ${.CURDIR}/../doc/ntptrace.8 ++ CLEANFILES+= .version version.c ++ ++ SRCS= ntptrace.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion ntptrace ++ ++ .include <bsd.prog.mk> +diff -c /dev/null 386BSD/src/contrib/xntpd/parse/Makefile:1.1 +*** /dev/null Sun Apr 3 13:43:32 1994 +--- 386BSD/src/contrib/xntpd/parse/Makefile Sun Apr 3 13:43:32 1994 +*************** +*** 0 **** +--- 1,19 ---- ++ # ++ # $Id: Makefile,v 1.1 1993/12/21 20:04:14 wollman Exp $ ++ # ++ ++ PARSEFLAGS= -DCLOCK_SCHMID -DCLOCK_DCF7000 -DCLOCK_MEINBERG \ ++ -DCLOCK_RAWDCF -DCLOCK_TRIMSV6 ++ ++ CFLAGS+= -I${.CURDIR}/../include ${PARSEFLAGS} ++ ++ SRCS= parse.c parse_conf.c clk_meinberg.c clk_schmid.c clk_rawdcf.c \ ++ clk_dcf7000.c clk_trimble.c ++ ++ NOMAN= ++ NOPROFILE= ++ LIB= parse ++ ++ install: ++ ++ .include <bsd.lib.mk> +diff -c 386BSD/src/contrib/xntpd/scripts/mkversion:1.1.1.1 386BSD/src/contrib/xntpd/scripts/mkversion:1.2 +*** 386BSD/src/contrib/xntpd/scripts/mkversion:1.1.1.1 Sun Apr 3 13:43:49 1994 +--- 386BSD/src/contrib/xntpd/scripts/mkversion Sun Apr 3 13:43:49 1994 +*************** +*** 9,20 **** + echo $RUN > .version + + DATE="`date`" + + if [ -r VERSION ]; then + VERSION=VERSION + else + VERSION=../VERSION +! fi + + if [ -f "$VERSION" ]; then + FLAGS="`egrep '^[0-9a-zA-Z_]+=' "$VERSION" | tr '\012' ';'` " +--- 9,23 ---- + echo $RUN > .version + + DATE="`date`" ++ TOPDIR=`echo $0 | sed -e 's;mkversion;..;'` + + if [ -r VERSION ]; then + VERSION=VERSION ++ else if [ -r ${TOPDIR}/VERSION ]; then ++ VERSION=${TOPDIR}/VERSION + else + VERSION=../VERSION +! fi; fi + + if [ -f "$VERSION" ]; then + FLAGS="`egrep '^[0-9a-zA-Z_]+=' "$VERSION" | tr '\012' ';'` " +diff -c /dev/null 386BSD/src/contrib/xntpd/util/Makefile:1.2 +*** /dev/null Sun Apr 3 13:43:53 1994 +--- 386BSD/src/contrib/xntpd/util/Makefile Sun Apr 3 13:43:54 1994 +*************** +*** 0 **** +--- 1,28 ---- ++ # ++ # $Id: Makefile,v 1.2 1993/12/22 11:33:28 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= tickadj ++ MAN8= ${.CURDIR}/../doc/tickadj.8 ++ CLEANFILES+= .version version.c ++ ++ SRCS= tickadj.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion tickadj ++ ++ .include <bsd.prog.mk> +diff -c /dev/null 386BSD/src/contrib/xntpd/xntpd/Makefile:1.5 +*** /dev/null Sun Apr 3 13:43:56 1994 +--- 386BSD/src/contrib/xntpd/xntpd/Makefile Sun Apr 3 13:43:56 1994 +*************** +*** 0 **** +--- 1,45 ---- ++ # ++ # $Id: Makefile,v 1.5 1994/04/03 20:37:26 wollman Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= ${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= ${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ .if exists(${.CURDIR}/../parse/obj) ++ LDADD+= -L${.CURDIR}/../parse/obj ++ DPADD+= ${.CURDIR}/../parse/obj/libparse.a ++ .else ++ LDADD+= -L${.CURDIR}/../parse ++ DPADD+= ${.CURDIR}/../parse/libparse.a ++ .endif ++ ++ LDADD+= -lntp -lparse ++ ++ PROG= xntpd ++ MAN8= ${.CURDIR}/../doc/xntpd.8 ++ CLEANFILES+= .version version.c ++ ++ SRCS= ntp_config.c ntp_control.c ntp_io.c ntp_leap.c \ ++ ntp_loopfilter.c ntp_monitor.c ntp_peer.c ntp_proto.c \ ++ ntp_refclock.c ntp_request.c ntp_restrict.c ntp_timer.c \ ++ ntp_unixclock.c ntp_util.c ntpd.c refclock_chu.c \ ++ refclock_conf.c refclock_local.c refclock_pst.c \ ++ refclock_wwvb.c refclock_goes.c refclock_mx4200.c \ ++ refclock_parse.c refclock_as2201.c refclock_omega.c \ ++ refclock_tpro.c refclock_leitch.c refclock_irig.c \ ++ refclock_msfees.c refclock_gpstm.c refclock_trak.c ntp_intres.c \ ++ ntp_filegen.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion xntpd ++ ++ .include <bsd.prog.mk> +diff -c 386BSD/src/contrib/xntpd/xntpd/ntp_control.c:1.1.1.3 386BSD/src/contrib/xntpd/xntpd/ntp_control.c:1.3 +*** 386BSD/src/contrib/xntpd/xntpd/ntp_control.c:1.1.1.3 Sun Apr 3 13:43:59 1994 +--- 386BSD/src/contrib/xntpd/xntpd/ntp_control.c Sun Apr 3 13:44:00 1994 +*************** +*** 264,278 **** + /* + * System and processor definitions. These will change for the gizmo board. + */ +! #ifndef STR_SYSTEM +! #define STR_SYSTEM "UNIX" +! #endif +! #ifndef STR_PROCESSOR +! #define STR_PROCESSOR "unknown" +! #endif +! +! static char str_system[] = STR_SYSTEM; +! static char str_processor[] = STR_PROCESSOR; + + /* + * Trap structures. We only allow a few of these, and send +--- 264,271 ---- + /* + * System and processor definitions. These will change for the gizmo board. + */ +! #include <sys/utsname.h> +! static struct utsname utsname; + + /* + * Trap structures. We only allow a few of these, and send +*************** +*** 433,438 **** +--- 426,433 ---- + { + int i; + ++ uname(&utsname); ++ + ctl_clr_stats(); + + ctl_auth_keyid = 0; +*************** +*** 1267,1278 **** + ctl_putuint(sys_var[CS_LEAPWARNING].text, (U_LONG)leap_warning); + break; + case CS_PROCESSOR: +! ctl_putstr(sys_var[CS_PROCESSOR].text, str_processor, +! sizeof(str_processor) - 1); + break; + case CS_SYSTEM: +! ctl_putstr(sys_var[CS_SYSTEM].text, str_system, +! sizeof(str_system) - 1); + break; + case CS_KEYID: + ctl_putuint(sys_var[CS_KEYID].text, (U_LONG)0); +--- 1262,1273 ---- + ctl_putuint(sys_var[CS_LEAPWARNING].text, (U_LONG)leap_warning); + break; + case CS_PROCESSOR: +! ctl_putstr(sys_var[CS_PROCESSOR].text, utsname.machine, +! strlen(utsname.machine)); + break; + case CS_SYSTEM: +! ctl_putstr(sys_var[CS_SYSTEM].text, utsname.sysname, +! strlen(utsname.sysname)); + break; + case CS_KEYID: + ctl_putuint(sys_var[CS_KEYID].text, (U_LONG)0); +diff -c 386BSD/src/contrib/xntpd/xntpd/refclock_parse.c:1.1.1.3 386BSD/src/contrib/xntpd/xntpd/refclock_parse.c:1.3 +*** 386BSD/src/contrib/xntpd/xntpd/refclock_parse.c:1.1.1.3 Sun Apr 3 13:44:01 1994 +--- 386BSD/src/contrib/xntpd/xntpd/refclock_parse.c Sun Apr 3 13:44:01 1994 +*************** +*** 30,35 **** +--- 30,37 ---- + * PPS - supply loopfilter with PPS samples (if configured) + * PPSPPS - notify loopfilter of PPS file descriptor + * ++ * FREEBSD_CONRAD - Make very cheap "Conrad DCF77 RS-232" gadget work ++ * with FreeBSD. + * TTY defines: + * HAVE_BSD_TTYS - currently unsupported + * HAVE_SYSV_TTYS - will use termio.h +*************** +*** 82,87 **** +--- 84,92 ---- + #include <time.h> + + #include <sys/errno.h> ++ #ifdef FREEBSD_CONRAD ++ #include <sys/ioctl.h> ++ #endif + extern int errno; + + #if !defined(STREAM) && !defined(HAVE_SYSV_TTYS) && !defined(HAVE_BSD_TTYS) && !defined(HAVE_TERMIOS) +*************** +*** 440,446 **** +--- 445,456 ---- + #define RAWDCF_ROOTDELAY 0x00000364 /* 13 ms */ + #define RAWDCF_FORMAT "RAW DCF77 Timecode" + #define RAWDCF_MAXUNSYNC (0) /* sorry - its a true receiver - no signal - no time */ ++ ++ #ifdef FREEBSD_CONRAD ++ #define RAWDCF_CFLAG (CS8|CREAD|CLOCAL) ++ #else + #define RAWDCF_CFLAG (B50|CS8|CREAD|CLOCAL) ++ #endif + #define RAWDCF_IFLAG 0 + #define RAWDCF_OFLAG 0 + #define RAWDCF_LFLAG 0 +*************** +*** 1482,1492 **** +--- 1492,1513 ---- + struct parseunit *parse = (struct parseunit *)rbufp->recv_srcclock; + register int count; + register char *s; ++ #ifdef FREEBSD_CONRAD ++ struct timeval foo; ++ #endif ++ + /* + * eat all characters, parsing then and feeding complete samples + */ + count = rbufp->recv_length; + s = rbufp->recv_buffer; ++ #ifdef FREEBSD_CONRAD ++ ioctl(parse->fd,TIOCTIMESTAMP,&foo); ++ TVTOTS(&foo, &rbufp->recv_time); ++ rbufp->recv_time.l_uf += TS_ROUNDBIT; ++ rbufp->recv_time.l_ui += JAN_1970; ++ rbufp->recv_time.l_uf &= TS_MASK; ++ #endif + + while (count--) + { +*************** +*** 2271,2277 **** + tm.c_iflag = clockinfo[type].cl_iflag; + tm.c_oflag = clockinfo[type].cl_oflag; + tm.c_lflag = clockinfo[type].cl_lflag; +! + if (TTY_SETATTR(fd232, &tm) == -1) + { + syslog(LOG_ERR, "PARSE receiver #%d: parse_start: tcsetattr(%d, &tm): %m", unit, fd232); +--- 2292,2301 ---- + tm.c_iflag = clockinfo[type].cl_iflag; + tm.c_oflag = clockinfo[type].cl_oflag; + tm.c_lflag = clockinfo[type].cl_lflag; +! #ifdef FREEBSD_CONRAD +! tm.c_ispeed = 50; +! tm.c_ospeed = 50; +! #endif + if (TTY_SETATTR(fd232, &tm) == -1) + { + syslog(LOG_ERR, "PARSE receiver #%d: parse_start: tcsetattr(%d, &tm): %m", unit, fd232); +*************** +*** 2314,2319 **** +--- 2338,2358 ---- + return 0; /* well, ok - special initialisation broke */ + } + ++ #ifdef FREEBSD_CONRAD ++ { ++ int i,j; ++ struct timeval tv; ++ ioctl(parse->fd,TIOCTIMESTAMP,&tv); ++ j = TIOCM_RTS; ++ i = ioctl(fd232, TIOCMBIC, &j); ++ if (i < 0) { ++ syslog(LOG_ERR, ++ "PARSE receiver #%d: lowrts_poll: failed to lower RTS: %m", ++ CL_UNIT(parse->unit)); ++ } ++ } ++ #endif ++ + strcpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format); + tmp_ctl.parseformat.parse_count = strlen(tmp_ctl.parseformat.parse_buffer); + +diff -c 386BSD/src/contrib/xntpd/xntpd/refclock_trak.c:1.1.1.1 386BSD/src/contrib/xntpd/xntpd/refclock_trak.c:1.2 +*** 386BSD/src/contrib/xntpd/xntpd/refclock_trak.c:1.1.1.1 Sun Apr 3 13:44:02 1994 +--- 386BSD/src/contrib/xntpd/xntpd/refclock_trak.c Sun Apr 3 13:44:02 1994 +*************** +*** 14,19 **** +--- 14,21 ---- + #include "ntp_refclock.h" + #include "ntp_unixtime.h" + ++ static void gps_send(); ++ + #if defined(HAVE_BSD_TTYS) + #include <sgtty.h> + #endif /* HAVE_BSD_TTYS */ +*************** +*** 841,847 **** + /* + * usually trak_receive can get a timestamp every second + */ +! #ifndef TRAKPPS && TRAKCLK + gettstamp(&gps->lastrec); + #endif + gps->polls++; +--- 843,849 ---- + /* + * usually trak_receive can get a timestamp every second + */ +! #if !defined(TRAKPPS) && !defined(TRAKCLK) + gettstamp(&gps->lastrec); + #endif + gps->polls++; +diff -c /dev/null 386BSD/src/contrib/xntpd/xntpdc/Makefile:1.2 +*** /dev/null Sun Apr 3 13:44:03 1994 +--- 386BSD/src/contrib/xntpd/xntpdc/Makefile Sun Apr 3 13:44:03 1994 +*************** +*** 0 **** +--- 1,28 ---- ++ # ++ # $Id: Makefile,v 1.2 1993/12/22 11:34:00 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= xntpdc ++ MAN8= ${.CURDIR}/../doc/xntpdc.8 ++ CLEANFILES+= .version version.c ++ ++ SRCS= ntpdc.c ntpdc_ops.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion xntpdc ++ ++ .include <bsd.prog.mk> +diff -c 386BSD/src/contrib/xntpd/xntpdc/ntpdc.c:1.1.1.3 386BSD/src/contrib/xntpd/xntpdc/ntpdc.c:1.2 +*** 386BSD/src/contrib/xntpd/xntpdc/ntpdc.c:1.1.1.3 Sun Apr 3 13:44:04 1994 +--- 386BSD/src/contrib/xntpd/xntpdc/ntpdc.c Sun Apr 3 13:44:04 1994 +*************** +*** 53,59 **** + static int getarg P((char *, int, arg_v *)); + static int getnetnum P((char *, U_LONG *, char *)); + static void help P((struct parse *, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) + static int helpsort P((const void *, const void *)); + #else + static int helpsort P((char **, char **)); +--- 53,59 ---- + static int getarg P((char *, int, arg_v *)); + static int getnetnum P((char *, U_LONG *, char *)); + static void help P((struct parse *, FILE *)); +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + static int helpsort P((const void *, const void *)); + #else + static int helpsort P((char **, char **)); +*************** +*** 1153,1159 **** + for (xcp = opcmds; xcp->keyword != 0; xcp++) + cmdsort[n++] = xcp->keyword; + +! #if defined(sgi) || defined(SYS_BSDI) + qsort((void *)cmdsort, n, sizeof(char *), helpsort); + #else + qsort((char *)cmdsort, n, sizeof(char *), helpsort); +--- 1153,1159 ---- + for (xcp = opcmds; xcp->keyword != 0; xcp++) + cmdsort[n++] = xcp->keyword; + +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + qsort((void *)cmdsort, n, sizeof(char *), helpsort); + #else + qsort((char *)cmdsort, n, sizeof(char *), helpsort); +*************** +*** 1199,1205 **** + * helpsort - do hostname qsort comparisons + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) + helpsort(t1, t2) + const void *t1; + const void *t2; +--- 1199,1205 ---- + * helpsort - do hostname qsort comparisons + */ + static int +! #if defined(sgi) || defined(SYS_BSDI) || defined(__STDC__) + helpsort(t1, t2) + const void *t1; + const void *t2; +diff -c /dev/null 386BSD/src/contrib/xntpd/xntpres/Makefile:1.2 +*** /dev/null Sun Apr 3 13:44:05 1994 +--- 386BSD/src/contrib/xntpd/xntpres/Makefile Sun Apr 3 13:44:05 1994 +*************** +*** 0 **** +--- 1,28 ---- ++ # ++ # $Id: Makefile,v 1.2 1993/12/22 11:34:09 rgrimes Exp $ ++ # ++ ++ CFLAGS+= -I${.CURDIR}/../include ++ ++ .if exists(${.CURDIR}/../lib/obj) ++ LDADD+= -L${.CURDIR}/../lib/obj ++ DPADD+= -L${.CURDIR}/../lib/obj/libntp.a ++ .else ++ LDADD+= -L${.CURDIR}/../lib ++ DPADD+= -L${.CURDIR}/../lib/libntp.a ++ .endif ++ ++ LDADD+= -lntp ++ ++ PROG= xntpres ++ NOMAN= ++ CLEANFILES+= .version version.c ++ ++ SRCS= xntpres.c version.c ++ ++ beforedepend: version.c ++ ++ version.c: ${.CURDIR}/../VERSION ++ ${.CURDIR}/../scripts/mkversion xntpres ++ ++ .include <bsd.prog.mk> + +-GAWollman + +-- +Garrett A. Wollman | Shashish is simple, it's discreet, it's brief. ... +wollman@lcs.mit.edu | Shashish is the bonding of hearts in spite of distance. +formerly known as | It is a bond more powerful than absence. We like people +wollman@emba.uvm.edu | who like Shashish. - Claude McKenzie + Florent Vollant +[no save] + diff --git a/usr.sbin/xntpd/patches/patch.36 b/usr.sbin/xntpd/patches/patch.36 new file mode 100644 index 0000000..b90df0d --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.36 @@ -0,0 +1,42 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa18708; 7 Apr 94 14:50 EDT +Received: from mudshark.artisoft.com by louie.udel.edu id aa16541; + 7 Apr 94 14:46 EDT +Received: by mudshark.artisoft.com id AA11987 + (5.67b/IDA-1.5 for mills@udel.edu); Thu, 7 Apr 1994 11:46:32 -0700 +Date: Thu, 7 Apr 1994 11:46:32 -0700 +From: Matt Day <mday@artisoft.com> +Message-Id: <199404071846.AA11987@mudshark.artisoft.com> +To: mills@udel.edu +Subject: XNTP bug on Linux + +adjtime() on Linux fails if you try to adjust more than 131072 +microseconds. This causes `ntpdate' to fail on Linux when the system +clock is off by more than 131072 microseconds but less than +NTPDATE_THRESHOLD (500 ms). + +Reducing NTPDATE_THRESHOLD to less than 131072 microseconds fixed the +problem. + +From the comments in the code for Linux's adjtime(), it looks like this +problem might go away someday. + +Thanks! + +*** ntpdate.h- Tue Aug 24 14:29:30 1993 +--- ntpdate.h Thu Apr 7 11:33:53 1994 +*************** +*** 54,60 **** +--- 54,64 ---- + * are close, or step the time if the times are farther apart. The + * following defines what is "close". + */ ++ #ifdef linux ++ #define NTPDATE_THRESHOLD (FP_SECOND / 8) /* 1/8 second */ ++ #else + #define NTPDATE_THRESHOLD (FP_SECOND >> 1) /* 1/2 second */ ++ #endif + + /* + * When doing adjustments, ntpdate actually overadjusts (currently + diff --git a/usr.sbin/xntpd/patches/patch.37 b/usr.sbin/xntpd/patches/patch.37 new file mode 100644 index 0000000..e17267f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.37 @@ -0,0 +1,204 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa25219; 8 Apr 94 17:07 EDT +Received: from ni.umd.edu by louie.udel.edu id aa03359; 8 Apr 94 16:58 EDT +Received: by ni.umd.edu id AA18341 + (5.65c/IDA-1.4.4 for ntp-list); Fri, 8 Apr 1994 16:55:09 -0400 +Received: from RUTGERS.EDU by ni.umd.edu with SMTP id AA18337 + (5.65c/IDA-1.4.4 for <ntp@ni.umd.edu>); Fri, 8 Apr 1994 16:55:02 -0400 +Received: from unipress-link.rutgers.edu by rutgers.edu (5.59/SMI4.0/RU1.5/3.08) + id AA16356; Fri, 8 Apr 94 16:54:44 EDT +Received: from huh.unipress.com by repo.unipress.com (4.1/SMI-4.1/UniPress022294.2) + id AA10459; Fri, 8 Apr 94 16:54:36 EDT via +Message-Id: <9404082054.AA10459@repo.unipress.com> +To: ntp@ni.umd.edu +Subject: Re: xntp for univel/unix-ware on x86 +Date: Fri, 08 Apr 94 16:54:31 -0400 +From: Ray Schnitzler <ras@unipress.com> + + +I am happy (but not particularly proud - it's more than a + little rough around the edges) to report a working + xntpd for Univel. + +It wound up being a hack on solaris, svr4, and (for the lack + of kernel tickadj) irix. + +util/tickadj does *not* work, even for controlling 'tick'. + I'm not sure what the right behavior should be. + +Most of the changes are signalled by SYS_UNIVEL, as + initiated by OS=univel. + +There are many additional loose ends, which are not terribly + important to me to clean up, since the univel is a + very low usage machine, here, and my because + employer expects me to be working on other things, + altogether. + +Nevertheless, it seems to work. + +Special thanks go to Denton Gentry for advice along the way. + + +Enjoy. + + +Here are the changes I made. First, the (new) + machines/univel file, and then the (rest of the) + context diffs: + +*** /dev/null Fri Apr 8 16:49:24 1994 +--- machines/univel Fri Apr 8 12:38:20 1994 +*************** +*** 0 **** +--- 1,10 ---- ++ SHELL= /bin/sh ++ RANLIB= ls # ar does the work of ranlib under System V ++ DEFS= -DSYS_UNIVEL -DSTREAMS_TLI -DHAVE_TERMIOS ++ AUTHDEFS= -DDES -DMD5 ++ CLOCKDEFS= ++ DAEMONLIBS= -lnsl -lsocket -lelf ++ RESLIB= -lnsl -lsocket -lelf ++ INSTALL=$(TOP)scripts/install.sh ++ SHELL= /bin/sh ++ RANLIB= ls # ar does the work of ranlib under System V +*** authstuff/authspeed.c.orig Thu Jan 27 09:03:12 1994 +--- authstuff/authspeed.c Fri Apr 8 14:19:35 1994 +*************** +*** 2,8 **** + * authspeed - figure out how LONG it takes to do an NTP encryption + */ + +! #if defined(SYS_HPUX) || defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SOLARIS) || defined(SYS_SVR4) || defined(SYS_PTX) + #define FAKE_RUSAGE + #endif + +--- 2,8 ---- + * authspeed - figure out how LONG it takes to do an NTP encryption + */ + +! #if defined(SYS_HPUX) || defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SOLARIS) || defined(SYS_SVR4) || defined(SYS_PTX) || defined(SYS_UNIVEL) + #define FAKE_RUSAGE + #endif +*** include/ntp_if.h.orig Mon Nov 15 16:21:29 1993 +--- include/ntp_if.h Fri Apr 8 14:51:49 1994 +*************** +*** 16,21 **** +--- 16,25 ---- + #include <sys/sockio.h> + #endif + ++ #if defined(SYS_UNIVEL) ++ #include <sys/sockio.h> ++ #endif ++ + #if defined(SYS_PTX) || defined(SYS_SINIXM) + #include <sys/stream.h> + #include <sys/stropts.h> +*** include/ntp_machine.h.orig Mon Mar 14 02:47:02 1994 +--- include/ntp_machine.h Fri Apr 8 14:45:42 1994 +*************** +*** 526,531 **** +--- 526,563 ---- + #endif + + /* ++ * Univel SVR4 on intel x86 processor ++ */ ++ #if defined(SYS_UNIVEL) ++ /* #define _POSIX_SOURCE */ ++ #define NTP_POSIX_SOURCE ++ #define HAVE_ATT_NICE ++ #define HAVE_READKMEM ++ #define USE_PROTOTYPES ++ #undef HAVE_ATT_SETPGRP ++ #define UDP_WILDCARD_DELIVERY ++ #define HAVE_SIGNALED_IO ++ #define USE_TTY_SIGPOLL ++ #define USE_UDP_SIGPOLL ++ #define STREAM ++ #define STREAMS ++ #ifndef STREAMS_TLI ++ /*#define STREAMS_TLI*/ ++ #endif ++ /* #define USE_STREAMS_DEVICE_FOR_IF_CONFIG */ ++ #undef STEP_SLEW /* TWO step */ ++ #define LOCK_PROCESS ++ #undef SYSV_TIMEOFDAY ++ #define SIZE_RETURNED_IN_BUFFER ++ #define RETSIGTYPE void ++ #include <sys/types.h> ++ #include <netinet/in_systm.h> ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Univel" ++ #endif ++ #endif ++ ++ /* + * DomainOS + */ + #if defined(SYS_DOMAINOS) +*** xntpd/ntp_unixclock.c.orig Thu Feb 3 00:20:20 1994 +--- xntpd/ntp_unixclock.c Fri Apr 8 14:40:55 1994 +*************** +*** 255,260 **** +--- 255,277 ---- + /* Define the following to be what the tick and tickadj variables are + * called in your kernel. + */ ++ #if defined(SYS_UNIVEL) ++ /* ++ * clock_parms - return the local clock tickadj and tick parameters ++ * ++ * The values set here were determined experimentally on a 486 system ++ * I'm not confident in them. - RAS ++ * ++ */ ++ static void ++ clock_parms(tickadj, tick) ++ U_LONG *tickadj; ++ U_LONG *tick; ++ { ++ *tick = 10000; /* microseconds */ ++ *tickadj = 80; /* microseconds */ ++ } ++ #else /* SYS_UNIVEL */ + + #if defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SYS_SVR4) || defined(SYS_PTX) + #define K_TICKADJ_NAME "tickadj" +*************** +*** 421,427 **** + } + #endif /* sgi */ + +- + #ifdef NOKMEM + + #ifndef HZ +--- 438,443 ---- +*************** +*** 571,573 **** +--- 587,590 ---- + *tick = (U_LONG)txc.tick; + } + #endif /* SYS_LINUX */ ++ #endif /* SYS_UNIVEL */ +*** xntpd/ntpd.c.orig Wed Feb 16 22:09:35 1994 +--- xntpd/ntpd.c Fri Apr 8 16:35:57 1994 +*************** +*** 14,20 **** + #include <sys/rtprio.h> + #endif + +! #if defined(SYS_SVR4) + #include <termios.h> + #endif + +--- 14,20 ---- + #include <sys/rtprio.h> + #endif + +! #if defined(SYS_SVR4) || defined (SYS_UNIVEL) + #include <termios.h> + #endif + diff --git a/usr.sbin/xntpd/patches/patch.38 b/usr.sbin/xntpd/patches/patch.38 new file mode 100644 index 0000000..dddba69 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.38 @@ -0,0 +1,226 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa09565; 11 Apr 94 13:04 EDT +Received: from ni.umd.edu by louie.udel.edu id aa10661; 11 Apr 94 12:57 EDT +Received: by ni.umd.edu id AA00787 + (5.65c/IDA-1.4.4 for ntp-list); Mon, 11 Apr 1994 12:50:20 -0400 +Received: from RUTGERS.EDU by ni.umd.edu with SMTP id AA00783 + (5.65c/IDA-1.4.4 for <ntp@ni.umd.edu>); Mon, 11 Apr 1994 12:50:13 -0400 +Received: from unipress-link.rutgers.edu by rutgers.edu (5.59/SMI4.0/RU1.5/3.08) + id AA26905; Mon, 11 Apr 94 12:49:43 EDT +Received: from huh.unipress.com by repo.unipress.com (4.1/SMI-4.1/UniPress022294.2) + id AA03031; Mon, 11 Apr 94 12:49:27 EDT via +Message-Id: <9404111649.AA03031@repo.unipress.com> +To: ntp@ni.umd.edu +Subject: Re: xntp for univel/unix-ware on x86 +Date: Mon, 11 Apr 94 12:49:25 -0400 +From: Ray Schnitzler <ras@unipress.com> + + +As seems usual, every patch is followed by a re-patch. This + is a (modified) re-posting of patches to make xntp + work on unixware svr4. It now uses + machines/unixware1 and SYS_UNIXWARE1 (instead of + univel, as suggested by J J Farrell), and now + includes some RELNOTES and COPYRIGHT text (as + suggested by Dave) + +It is still rough, but it still works. The tickadj utility + still does *not* work, even for controlling 'tick'. + I'm not sure what the right behavior should be since + there is no 'tickadj' kernel var. + +In addition to the credits I mentioned above, special thanks + go to Denton Gentry for advice along the way. + + +Enjoy. + +Ray Schnitzler +UniPress Software, Inc. +------------------------------------------------------------ +Here are the changes I made. First, the (new) + machines/univel file, and then the (rest of the) + context diffs: + +*** machines/unixware1.3.3p Fri Apr 8 16:48:35 1994 +--- machines/unixware1 Mon Apr 11 11:08:10 1994 +*************** +*** 0 **** +--- 1,10 ---- ++ SHELL= /bin/sh ++ RANLIB= ls # ar does the work of ranlib under System V ++ DEFS= -DSYS_UNIXWARE1 -DSTREAMS_TLI -DHAVE_TERMIOS -DCONFIG_FILE=\\"/usr/local/etc/ntp.conf\\" ++ AUTHDEFS= -DDES -DMD5 ++ CLOCKDEFS= ++ DAEMONLIBS= -lnsl -lsocket -lelf ++ RESLIB= -lnsl -lsocket -lelf ++ INSTALL=$(TOP)scripts/install.sh ++ SHELL= /bin/sh ++ RANLIB= ls # ar does the work of ranlib under System V +*** COPYRIGHT.3.3p Thu Feb 3 00:20:07 1994 +--- COPYRIGHT Mon Apr 11 10:47:24 1994 +*************** +*** 55,58 **** +--- 55,59 ---- + * Torsten Duwe <duwe@immd4.informatik.uni-erlangen.de> (Linux Port) + * Paul A Vixie <vixie@vix.com> (TrueTime GPS driver) + * Jim Jagielski <jim@jagubox.gsfc.nasa.gov> (A/UX port) ++ * Ray Schnitzler <schnitz@unipress.com> (First pass at a Unixware1 port.) + */ +*** RELNOTES.3.3p Thu Jan 27 09:33:09 1994 +--- RELNOTES Mon Apr 11 11:14:35 1994 +*************** +*** 140,145 **** +--- 140,146 ---- + PC BSD/386 1.0 gcc LOCAL_CLOCK possibly see "build problems" + PC Linux (pl14) gcc LOCAL_CLOCK (dw 93/10/30) + PC Dell SVR4 v2.2 gcc ? (tl 93/12/30) ++ PC Unixware1/SVR4 cc no tickadj, ? (ras 93/04/11) + NCR3445 NCR SVR4 cc LOCAL_CLOCK (tm 93/11/29) + + pb: Piete Brooks +*************** +*** 149,154 **** +--- 150,156 ---- + tl: Tony Lill <ajlill@tlill.hookup.net> + tm: Tom Moore <Tom.Moore@DaytonOH.NCR.COM> + jmj: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> ++ ras: Ray Schnitzler <schnitz@unipress.com> + + Build Problems (and workaround): + +*** authstuff/authspeed.c.3.3p Thu Jan 27 09:03:12 1994 +--- authstuff/authspeed.c Mon Apr 11 10:29:47 1994 +*************** +*** 2,8 **** + * authspeed - figure out how LONG it takes to do an NTP encryption + */ + +! #if defined(SYS_HPUX) || defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SOLARIS) || defined(SYS_SVR4) || defined(SYS_PTX) + #define FAKE_RUSAGE + #endif + +--- 2,8 ---- + * authspeed - figure out how LONG it takes to do an NTP encryption + */ + +! #if defined(SYS_HPUX) || defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SOLARIS) || defined(SYS_SVR4) || defined(SYS_PTX) || defined(SYS_UNIXWARE1) + #define FAKE_RUSAGE + #endif + +*** include/ntp_if.h.3.3p Mon Nov 15 16:21:29 1993 +--- include/ntp_if.h Mon Apr 11 10:30:21 1994 +*************** +*** 16,21 **** +--- 16,25 ---- + #include <sys/sockio.h> + #endif + ++ #if defined(SYS_UNIXWARE1) ++ #include <sys/sockio.h> ++ #endif ++ + #if defined(SYS_PTX) || defined(SYS_SINIXM) + #include <sys/stream.h> + #include <sys/stropts.h> +*** include/ntp_machine.h.3.3p Mon Mar 14 02:47:02 1994 +--- include/ntp_machine.h Mon Apr 11 10:31:11 1994 +*************** +*** 526,531 **** +--- 526,565 ---- + #endif + + /* ++ * (Univel/Novell) Unixware1 SVR4 on intel x86 processor ++ */ ++ #if defined(SYS_UNIXWARE1) ++ /* #define _POSIX_SOURCE */ ++ #undef HAVE_ATT_SETPGRP ++ #define USE_PROTOTYPES ++ #define NTP_POSIX_SOURCE ++ #define HAVE_ATT_NICE ++ #define HAVE_READKMEM ++ #define USE_TTY_SIGPOLL ++ #define USE_UDP_SIGPOLL ++ #define UDP_WILDCARD_DELIVERY ++ #undef HAVE_SIGNALED_IO ++ #define STREAM ++ #define STREAMS ++ #ifndef STREAMS_TLI ++ /*#define STREAMS_TLI*/ ++ #endif ++ /* #define USE_STREAMS_DEVICE_FOR_IF_CONFIG */ ++ #undef STEP_SLEW /* TWO step */ ++ #define LOCK_PROCESS ++ #define NO_SIGNED_CHAR_DECL ++ #undef SYSV_TIMEOFDAY ++ #define SIZE_RETURNED_IN_BUFFER ++ #define RETSIGTYPE void ++ #include <sys/sockio.h> ++ #include <sys/types.h> ++ #include <netinet/in_systm.h> ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX/Unixware1" ++ #endif ++ #endif ++ ++ /* + * DomainOS + */ + #if defined(SYS_DOMAINOS) +*** xntpd/ntp_unixclock.c.3.3p Thu Feb 3 00:20:20 1994 +--- xntpd/ntp_unixclock.c Mon Apr 11 10:33:23 1994 +*************** +*** 255,260 **** +--- 255,277 ---- + /* Define the following to be what the tick and tickadj variables are + * called in your kernel. + */ ++ #if defined(SYS_UNIXWARE1) ++ /* ++ * clock_parms - return the local clock tickadj and tick parameters ++ * ++ * The values set here were determined experimentally on a 486 system ++ * I'm not confident in them. - RAS ++ * ++ */ ++ static void ++ clock_parms(tickadj, tick) ++ U_LONG *tickadj; ++ U_LONG *tick; ++ { ++ *tick = 10000; /* microseconds */ ++ *tickadj = 80; /* microseconds */ ++ } ++ #else /* SYS_UNIXWARE1 */ + + #if defined(SYS_AUX3) || defined(SYS_AUX2) || defined(SYS_SVR4) || defined(SYS_PTX) + #define K_TICKADJ_NAME "tickadj" +*************** +*** 571,573 **** +--- 587,590 ---- + *tick = (U_LONG)txc.tick; + } + #endif /* SYS_LINUX */ ++ #endif /* SYS_UNIXWARE1 */ +*** xntpd/ntpd.c.3.3p Wed Feb 16 22:09:35 1994 +--- xntpd/ntpd.c Mon Apr 11 10:33:58 1994 +*************** +*** 14,20 **** + #include <sys/rtprio.h> + #endif + +! #if defined(SYS_SVR4) + #include <termios.h> + #endif + +--- 14,21 ---- + #include <sys/rtprio.h> + #endif + +! /* Shouldn't this test for HAVE_TERMIOS - RAS */ +! #if defined(SYS_SVR4) || defined (SYS_UNIXWARE1) + #include <termios.h> + #endif + + diff --git a/usr.sbin/xntpd/patches/patch.39 b/usr.sbin/xntpd/patches/patch.39 new file mode 100644 index 0000000..12e09fe --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.39 @@ -0,0 +1,78 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa21593; 13 Apr 94 8:23 EDT +Received: from jagubox.gsfc.nasa.gov by louie.udel.edu id aa20245; + 13 Apr 94 8:15 EDT +Received: by jagubox.gsfc.nasa.gov (Smail3.1.28.1 #2) + id m0pr3rH-0005s0C; Wed, 13 Apr 94 08:15 EDT +Message-Id: <m0pr3rH-0005s0C@jagubox.gsfc.nasa.gov> +From: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +Subject: Minor change for ntp_loopfilter (and loop.c) in 3.3q +To: Mills@udel.edu +Date: Wed, 13 Apr 1994 08:15:55 -0400 (EDT) +Reply-To: Jim Jagielski <jim@jagubox.gsfc.nasa.gov> +In-Reply-To: <9308051324.aa24396@huey.udel.edu> from "Mills@udel.edu" at Aug 5, 93 01:24:24 pm +X-Mailer: ELM [version 2.4 PL23] +Content-Type: text +Content-Length: 1738 + +One of the changes between 3.3p and 3.3q was the format change of the syslog +message when the clock is reset when xntpd sees a "large" offset. This change +is nice, but it would be "better" is the notice also made mention of whether +the reset was a step or slew (as defined by SLEWALWAYS). + +This patch adds that: +*** xntpd/Oloop.c Wed Apr 13 08:05:09 1994 +--- xntpd/loop.c Wed Apr 13 08:06:32 1994 +*************** +*** 458,464 **** + lfptoa(fp_offset, 6)); + return (0); + } +! syslog(LOG_NOTICE, "clock reset %s\n", + lfptoa(fp_offset, 6)); + step_systime(fp_offset); + clock_adjust = 0; +--- 458,469 ---- + lfptoa(fp_offset, 6)); + return (0); + } +! syslog(LOG_NOTICE, "clock reset (%s) %s\n", +! #ifdef SLEWALWAYS +! "slew", +! #else +! "step", +! #endif + lfptoa(fp_offset, 6)); + step_systime(fp_offset); + clock_adjust = 0; +*** xntpd/Ontp_loopfilter.c Wed Apr 13 08:05:23 1994 +--- xntpd/ntp_loopfilter.c Wed Apr 13 08:07:03 1994 +*************** +*** 458,464 **** + lfptoa(fp_offset, 6)); + return (0); + } +! syslog(LOG_NOTICE, "clock reset %s\n", + lfptoa(fp_offset, 6)); + step_systime(fp_offset); + clock_adjust = 0; +--- 458,469 ---- + lfptoa(fp_offset, 6)); + return (0); + } +! syslog(LOG_NOTICE, "clock reset (%s) %s\n", +! #ifdef SLEWALWAYS +! "slew", +! #else +! "step", +! #endif + lfptoa(fp_offset, 6)); + step_systime(fp_offset); + clock_adjust = 0; +-- +#include <std/disclaimer.h> + Jim Jagielski | "Is this something you can share with + jim@jagubox.gsfc.nasa.gov | the rest of us Amazing Larry!!??" + NASA/GSFC, Code 734.4 | Pee Wee + Greenbelt, MD 20771 | + diff --git a/usr.sbin/xntpd/patches/patch.4 b/usr.sbin/xntpd/patches/patch.4 new file mode 100644 index 0000000..ef06ee9 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.4 @@ -0,0 +1,4719 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa12898; 26 Jan 94 21:06 EST +Received: from sony.com by louie.udel.edu id aa05924; 26 Jan 94 21:01 EST +Received: by sony.com id AA18168; Wed, 26 Jan 94 18:00:44 -0800 +X-Btw: sony.com is also sonygate.sony.com +Received: by mail1.gw.in.sel.sony.com id AA25072; Wed, 26 Jan 94 18:00:43 -0800 +Received: by mail1.sjc.in.sel.sony.com id AA13634; Wed, 26 Jan 94 18:00:41 -0800 +Received: by morality.sjc.hw.sony.com; id AA23624; Wed, 26 Jan 94 18:00:40 -0800 +Date: Wed, 26 Jan 94 18:00:40 -0800 +From: Paul Vixie <Paul_Vixie@corpmis.sjc.hw.sony.com> +Message-Id: <9401270200.AA23624@morality.sjc.hw.sony.com> +To: mills@udel.edu +Subject: diffs against 3.3c (26-jan 11:36) +Cc: paul@vix.com + +These have been tested on BSD/386 1.0 and on HP-UX 8.??. I have more to do, +but this is the last I'm going to do before 3.3d (or whatever) comes out with +the other patches you're expecting. I need to have a day with just me and NTP +and everybody else with their mits outa the code while I finish the portability +stuff. + +*** /tmp/RCSA023397 Wed Jan 26 17:56:22 1994 +--- adjtime/adjtimed.c Wed Jan 26 16:33:27 1994 +*************** +*** 42,47 **** + + double atof(); +! extern int optind; +! extern char *optarg; + + int InitClockRate(); +--- 42,47 ---- + + double atof(); +! extern int ntp_optind; +! extern char *ntp_optarg; + + int InitClockRate(); +*************** +*** 84,88 **** + openlog("adjtimed", LOG_PID, LOG_LOCAL6); + +! while ((ch = getopt(argc, argv, "hkrvdfp:")) != EOF) { + switch (ch) { + case 'k': +--- 84,88 ---- + openlog("adjtimed", LOG_PID, LOG_LOCAL6); + +! while ((ch = ntp_getopt(argc, argv, "hkrvdfp:")) != EOF) { + switch (ch) { + case 'k': +*************** +*** 114,118 **** + + case 'p': +! if ((RATE = atof(optarg)) <= 0.0 || RATE >= 100.0) { + fputs("adjtimed: percentage must be between 0.0 and 100.0\n", stderr); + exit(1); +--- 114,118 ---- + + case 'p': +! if ((RATE = atof(ntp_optarg)) <= 0.0 || RATE >= 100.0) { + fputs("adjtimed: percentage must be between 0.0 and 100.0\n", stderr); + exit(1); +*** /tmp/RCSA023401 Wed Jan 26 17:56:23 1994 +--- authstuff/authspeed.c Wed Jan 26 16:33:28 1994 +*************** +*** 66,75 **** + int i; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; + loops = DEFLOOPS; +! while ((c = getopt_l(argc, argv, "cdmn:")) != EOF) + switch (c) { + case 'c': +--- 66,75 ---- + int i; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; + loops = DEFLOOPS; +! while ((c = ntp_getopt(argc, argv, "cdmn:")) != EOF) + switch (c) { + case 'c': +*************** +*** 83,91 **** + break; + case 'n': +! loops = atoi(optarg); + if (loops <= 0) { + (void) fprintf(stderr, + "%s: %s is unlikely to be a useful number of loops\n", +! progname, optarg); + errflg++; + } +--- 83,91 ---- + break; + case 'n': +! loops = atoi(ntp_optarg); + if (loops <= 0) { + (void) fprintf(stderr, + "%s: %s is unlikely to be a useful number of loops\n", +! progname, ntp_optarg); + errflg++; + } +*************** +*** 95,99 **** + break; + } +! if (errflg || optind == argc) { + (void) fprintf(stderr, + "usage: %s [-d] [-n loops] [ -c ] auth.samplekeys\n", +--- 95,99 ---- + break; + } +! if (errflg || ntp_optind == argc) { + (void) fprintf(stderr, + "usage: %s [-d] [-n loops] [ -c ] auth.samplekeys\n", +*************** +*** 109,113 **** + + init_auth(); +! authreadkeys(argv[optind]); + for (i = 0; i < 16; i++) { + if (!auth_havekey(i + domd5)) { +--- 109,113 ---- + + init_auth(); +! authreadkeys(argv[ntp_optind]); + for (i = 0; i < 16; i++) { + if (!auth_havekey(i + domd5)) { +*** /tmp/RCSA023401 Wed Jan 26 17:56:23 1994 +--- authstuff/keyparity.c Wed Jan 26 16:33:28 1994 +*************** +*** 50,58 **** + int keytype; + U_LONG key[2]; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "adno:s")) != EOF) + switch (c) { + case 'a': +--- 50,58 ---- + int keytype; + U_LONG key[2]; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "adno:s")) != EOF) + switch (c) { + case 'a': +*************** +*** 69,76 **** + break; + case 'o': +! if (*optarg == 'n') { + ntpoutflag = 1; + gotoopt = 1; +! } else if (*optarg == 's') { + ntpoutflag = 0; + gotoopt = 1; +--- 69,76 ---- + break; + case 'o': +! if (*ntp_optarg == 'n') { + ntpoutflag = 1; + gotoopt = 1; +! } else if (*ntp_optarg == 's') { + ntpoutflag = 0; + gotoopt = 1; +*************** +*** 86,90 **** + break; + } +! if (errflg || optind == argc) { + (void) fprintf(stderr, + "usage: %s -n|-s [-a] [-o n|s] key [...]\n", +--- 86,90 ---- + break; + } +! if (errflg || ntp_optind == argc) { + (void) fprintf(stderr, + "usage: %s -n|-s [-a] [-o n|s] key [...]\n", +*************** +*** 119,127 **** + keytype = KEY_TYPE_STD; + +! for (; optind < argc; optind++) { +! if (!decodekey(keytype, argv[optind], key)) { + (void) fprintf(stderr, + "%s: format of key %s invalid\n", +! progname, argv[optind]); + exit(1); + } +--- 119,127 ---- + keytype = KEY_TYPE_STD; + +! for (; ntp_optind < argc; ntp_optind++) { +! if (!decodekey(keytype, argv[ntp_optind], key)) { + (void) fprintf(stderr, + "%s: format of key %s invalid\n", +! progname, argv[ntp_optind]); + exit(1); + } +*************** +*** 243,247 **** + * Make up key from ascii representation + */ +! bzero(keybytes, sizeof(keybytes)); + for (i = 0; i < 8 && i < len; i++) + keybytes[i] = *cp++ << 1; +--- 243,247 ---- + * Make up key from ascii representation + */ +! memset(keybytes, 0, sizeof(keybytes)); + for (i = 0; i < 8 && i < len; i++) + keybytes[i] = *cp++ << 1; +*** /tmp/RCSA023401 Wed Jan 26 17:56:23 1994 +--- authstuff/makeIPFP.c Wed Jan 26 16:33:28 1994 +*************** +*** 29,37 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +--- 29,37 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +*************** +*** 184,188 **** + int octbits; + +! bzero((char *)bits, sizeof bits); + + /* +--- 184,188 ---- + int octbits; + +! memset((char *)bits, 0, sizeof bits); + + /* +*** /tmp/RCSA023401 Wed Jan 26 17:56:23 1994 +--- authstuff/makePC1.c Wed Jan 26 16:33:28 1994 +*************** +*** 26,34 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +--- 26,34 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +*************** +*** 83,88 **** + u_char d[28]; + +! bzero((char *)c, sizeof c); +! bzero((char *)d, sizeof d); + + for (i = 0; i < 28; i++) { +--- 83,88 ---- + u_char d[28]; + +! memset((char *)c, 0, sizeof c); +! memset((char *)d, 0, sizeof d); + + for (i = 0; i < 28; i++) { +*************** +*** 141,145 **** + u_char bits[64]; + +! bzero((char *)bits, sizeof bits); + + printf("static U_LONG PC1_CL[8] = {"); +--- 141,145 ---- + u_char bits[64]; + +! memset((char *)bits, 0, sizeof bits); + + printf("static U_LONG PC1_CL[8] = {"); +*** /tmp/RCSA023401 Wed Jan 26 17:56:24 1994 +--- authstuff/makePC2.c Wed Jan 26 16:33:28 1994 +*************** +*** 27,35 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +--- 27,35 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +*************** +*** 88,92 **** + u_char res[24]; + +! bzero((char *)res, sizeof res); + + for (i = 0; i < 24; i++) { +--- 88,92 ---- + u_char res[24]; + +! memset((char *)res, 0, sizeof res); + + for (i = 0; i < 24; i++) { +*************** +*** 118,122 **** + u_char res[24]; + +! bzero((char *)res, sizeof res); + + for (i = 0; i < 24; i++) { +--- 118,122 ---- + u_char res[24]; + +! memset((char *)res, 0, sizeof res); + + for (i = 0; i < 24; i++) { +*************** +*** 169,173 **** + u_char bits[28]; + +! bzero((char *)bits, sizeof bits); + + printf("static U_LONG PC2_C[4][64] = {"); +--- 169,173 ---- + u_char bits[28]; + +! memset((char *)bits, 0, sizeof bits); + + printf("static U_LONG PC2_C[4][64] = {"); +*** /tmp/RCSA023401 Wed Jan 26 17:56:24 1994 +--- authstuff/makeSP.c Wed Jan 26 16:33:28 1994 +*************** +*** 26,34 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +--- 26,34 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +*************** +*** 166,170 **** + int sixbits; + +! bzero((char *)bits, sizeof bits); + printf("static U_LONG SP[8][64] = {"); + for (selno = 0; selno < 8; selno++) { +--- 166,170 ---- + int sixbits; + +! memset((char *)bits, 0, sizeof bits); + printf("static U_LONG SP[8][64] = {"); + for (selno = 0; selno < 8; selno++) { +*** /tmp/RCSA023401 Wed Jan 26 17:56:24 1994 +--- authstuff/mkrandkeys.c Wed Jan 26 16:33:28 1994 +*************** +*** 35,40 **** + U_LONG tmp; + char *passwd; +! extern int optind; +! extern char *optarg; + extern char *getpass(); + +--- 35,40 ---- + U_LONG tmp; + char *passwd; +! extern int ntp_optind; +! extern char *ntp_optarg; + extern char *getpass(); + +*************** +*** 42,46 **** + progname = argv[0]; + passwd = NULL; +! while ((c = getopt_l(argc, argv, "dnp:s")) != EOF) + switch (c) { + case 'd': +--- 42,46 ---- + progname = argv[0]; + passwd = NULL; +! while ((c = ntp_getopt(argc, argv, "dnp:s")) != EOF) + switch (c) { + case 'd': +*************** +*** 51,55 **** + break; + case 'p': +! passwd = optarg; + break; + case 's': +--- 51,55 ---- + break; + case 'p': +! passwd = ntp_optarg; + break; + case 's': +*************** +*** 62,70 **** + + numkeys = 0; +! for (; !errflg && optind < argc; optind++) { +! c = atoi(argv[optind]); + if (c <= 0 || c > 15) { + (void) fprintf(stderr, "%s: invalid key number `%s'\n", +! progname, argv[optind]); + exit(2); + } +--- 62,70 ---- + + numkeys = 0; +! for (; !errflg && ntp_optind < argc; ntp_optind++) { +! c = atoi(argv[ntp_optind]); + if (c <= 0 || c > 15) { + (void) fprintf(stderr, "%s: invalid key number `%s'\n", +! progname, argv[ntp_optind]); + exit(2); + } +*** /tmp/RCSA023401 Wed Jan 26 17:56:24 1994 +--- authstuff/omakeIPFP.c Wed Jan 26 16:33:29 1994 +*************** +*** 35,43 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +--- 35,43 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "d")) != EOF) + switch (c) { + case 'd': +*************** +*** 189,193 **** + int quadbits; + +! bzero((char *)bits, sizeof bits); + + /* +--- 189,193 ---- + int quadbits; + +! memset((char *)bits, 0, sizeof bits); + + /* +*** /tmp/RCSA023419 Wed Jan 26 17:56:25 1994 +--- clockstuff/chutest.c Wed Jan 26 16:33:29 1994 +*************** +*** 69,78 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + void init_chu(); + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "cdfpt")) != EOF) + switch (c) { + case 'c': +--- 69,78 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + void init_chu(); + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "cdfpt")) != EOF) + switch (c) { + case 'c': +*************** +*** 108,112 **** + break; + } +! if (errflg || optind+1 != argc) { + #ifdef STREAM + (void) fprintf(stderr, "usage: %s [-dft] tty_device\n", +--- 108,112 ---- + break; + } +! if (errflg || ntp_optind+1 != argc) { + #ifdef STREAM + (void) fprintf(stderr, "usage: %s [-dft] tty_device\n", +*************** +*** 127,131 **** + + (void) gettimeofday(&lasttv, (struct timezone *)0); +! c = openterm(argv[optind]); + init_chu(); + #ifdef STREAM +--- 127,131 ---- + + (void) gettimeofday(&lasttv, (struct timezone *)0); +! c = openterm(argv[ntp_optind]); + init_chu(); + #ifdef STREAM +*** /tmp/RCSA023419 Wed Jan 26 17:56:25 1994 +--- clockstuff/clktest.c Wed Jan 26 16:33:29 1994 +*************** +*** 106,111 **** + struct sgttyb ttyb; + struct itimerval itimer; +! extern int optind; +! extern char *optarg; + int alarming(); + int ioready(); +--- 106,111 ---- + struct sgttyb ttyb; + struct itimerval itimer; +! extern int ntp_optind; +! extern char *ntp_optarg; + int alarming(); + int ioready(); +*************** +*** 115,119 **** + magic[0] = 0; + #endif +! while ((c = getopt_l(argc, argv, "a:b:c:dfs:t:")) != EOF) + switch (c) { + #ifdef CLKLDISC +--- 115,119 ---- + magic[0] = 0; + #endif +! while ((c = ntp_getopt(argc, argv, "a:b:c:dfs:t:")) != EOF) + switch (c) { + #ifdef CLKLDISC +*************** +*** 121,125 **** + #endif + case 'c': +! if (!atouint(optarg, &tmp)) { + (void) fprintf(stderr, + "%s: argument for -%c must be integer\n", +--- 121,125 ---- + #endif + case 'c': +! if (!atouint(ntp_optarg, &tmp)) { + (void) fprintf(stderr, + "%s: argument for -%c must be integer\n", +*************** +*** 140,144 **** + break; + case 'b': +! if (!atouint(optarg, &tmp)) { + errflg++; + break; +--- 140,144 ---- + break; + case 'b': +! if (!atouint(ntp_optarg, &tmp)) { + errflg++; + break; +*************** +*** 164,175 **** + break; + case 's': +! cmdlen = strlen(optarg); + if (cmdlen == 0) + errflg++; + else +! cmd = optarg; + break; + case 't': +! if (!atouint(optarg, &tmp)) + errflg++; + else { +--- 164,175 ---- + break; + case 's': +! cmdlen = strlen(ntp_optarg); + if (cmdlen == 0) + errflg++; + else +! cmd = ntp_optarg; + break; + case 't': +! if (!atouint(ntp_optarg, &tmp)) + errflg++; + else { +*************** +*** 182,186 **** + break; + } +! if (errflg || optind+1 != argc) { + (void) fprintf(stderr, + #ifdef CLKLDISC +--- 182,186 ---- + break; + } +! if (errflg || ntp_optind+1 != argc) { + (void) fprintf(stderr, + #ifdef CLKLDISC +*************** +*** 200,209 **** + + if (docmd) +! fd = open(argv[optind], O_RDWR, 0777); + else +! fd = open(argv[optind], O_RDONLY, 0777); + if (fd == -1) { + (void) fprintf(stderr, "%s: open(%s): ", progname, +! argv[optind]); + perror(""); + exit(1); +--- 200,209 ---- + + if (docmd) +! fd = open(argv[ntp_optind], O_RDWR, 0777); + else +! fd = open(argv[ntp_optind], O_RDONLY, 0777); + if (fd == -1) { + (void) fprintf(stderr, "%s: open(%s): ", progname, +! argv[ntp_optind]); + perror(""); + exit(1); +*** /tmp/RCSA023419 Wed Jan 26 17:56:25 1994 +--- clockstuff/propdelay.c Wed Jan 26 16:33:29 1994 +*************** +*** 141,149 **** + double lat2, long2; + double lat3, long3; +! extern int optind; +! extern char *optarg; + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "dh:CWG")) != EOF) + switch (c) { + case 'd': +--- 141,149 ---- + double lat2, long2; + double lat3, long3; +! extern int ntp_optind; +! extern char *ntp_optarg; + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "dh:CWG")) != EOF) + switch (c) { + case 'd': +*************** +*** 152,159 **** + case 'h': + hflag++; +! height = atof(optarg); + if (height <= 0.0) { + (void) fprintf(stderr, "height %s unlikely\n", +! optarg); + errflg++; + } +--- 152,159 ---- + case 'h': + hflag++; +! height = atof(ntp_optarg); + if (height <= 0.0) { + (void) fprintf(stderr, "height %s unlikely\n", +! ntp_optarg); + errflg++; + } +*************** +*** 172,177 **** + break; + } +! if (errflg || (!(Cflag || Wflag || Gflag) && optind+4 != argc) || +! ((Cflag || Wflag || Gflag) && optind+2 != argc)) { + (void) fprintf(stderr, + "usage: %s [-d] [-h height] lat1 long1 lat2 long2\n", +--- 172,177 ---- + break; + } +! if (errflg || (!(Cflag || Wflag || Gflag) && ntp_optind+4 != argc) || +! ((Cflag || Wflag || Gflag) && ntp_optind+2 != argc)) { + (void) fprintf(stderr, + "usage: %s [-d] [-h height] lat1 long1 lat2 long2\n", +*************** +*** 186,193 **** + + if (!(Cflag || Wflag || Gflag)) { +! lat1 = latlong(argv[optind], 1); +! long1 = latlong(argv[optind + 1], 0); +! lat2 = latlong(argv[optind + 2], 1); +! long2 = latlong(argv[optind + 3], 0); + if (hflag) { + doit(lat1, long1, lat2, long2, height, ""); +--- 186,193 ---- + + if (!(Cflag || Wflag || Gflag)) { +! lat1 = latlong(argv[ntp_optind], 1); +! long1 = latlong(argv[ntp_optind + 1], 0); +! lat2 = latlong(argv[ntp_optind + 2], 1); +! long2 = latlong(argv[ntp_optind + 3], 0); + if (hflag) { + doit(lat1, long1, lat2, long2, height, ""); +*************** +*** 202,207 **** + * Compute delay from WWV + */ +! lat1 = latlong(argv[optind], 1); +! long1 = latlong(argv[optind + 1], 0); + lat2 = latlong(wwvlat, 1); + long2 = latlong(wwvlong, 0); +--- 202,207 ---- + * Compute delay from WWV + */ +! lat1 = latlong(argv[ntp_optind], 1); +! long1 = latlong(argv[ntp_optind + 1], 0); + lat2 = latlong(wwvlat, 1); + long2 = latlong(wwvlong, 0); +*************** +*** 229,234 **** + } + } else if (Cflag) { +! lat1 = latlong(argv[optind], 1); +! long1 = latlong(argv[optind + 1], 0); + lat2 = latlong(chulat, 1); + long2 = latlong(chulong, 0); +--- 229,234 ---- + } + } else if (Cflag) { +! lat1 = latlong(argv[ntp_optind], 1); +! long1 = latlong(argv[ntp_optind + 1], 0); + lat2 = latlong(chulat, 1); + long2 = latlong(chulong, 0); +*************** +*** 244,249 **** + lat1 = latlong(goes_up_lat, 1); + long1 = latlong(goes_up_long, 0); +! lat3 = latlong(argv[optind], 1); +! long3 = latlong(argv[optind + 1], 0); + + lat2 = latlong(goes_sat_lat, 1); +--- 244,249 ---- + lat1 = latlong(goes_up_lat, 1); + long1 = latlong(goes_up_long, 0); +! lat3 = latlong(argv[ntp_optind], 1); +! long3 = latlong(argv[ntp_optind + 1], 0); + + lat2 = latlong(goes_sat_lat, 1); +*** /tmp/RCSA023428 Wed Jan 26 17:56:27 1994 +--- conf/Config.CHATHAM Wed Jan 26 16:33:29 1994 +*************** +*** 90,96 **** + # CLOCKDEFS= line below. This flag affects xntpd only. + # +- # There is an occurance of a call to rindex() in the daemon. You may +- # have to include a -Drindex=strrchr to get this to load right. +- # + # To change the location of the configuration file, use a + # -DCONFIG_FILE=\\"/local/etc/ntp.conf\\" or something similar. +--- 90,93 ---- +*************** +*** 110,114 **** + # generated by the pps signal. Only one of these flags should be defined. + # +! DEFS= -DUSELIBKVM -DDEBUG -DSTREAM -DREFCLOCK -DNO_SIGNED_CHAR_DECL -DPPS -DPPSDEV -DXNTP_RETROFIT_STDLIB -DHAVE_UNISTD_H + + # +--- 107,111 ---- + # generated by the pps signal. Only one of these flags should be defined. + # +! DEFS= -DUSELIBKVM -DDEBUG -DSTREAM -DREFCLOCK -DNO_SIGNED_CHAR_DECL -DPPS -DPPSDEV -DXNTP_RETROFIT_STDLIB -DNTP_POSIX_SOURCE + + # +*** /tmp/RCSA023428 Wed Jan 26 17:56:27 1994 +--- conf/Config.MONOMOY Wed Jan 26 16:33:29 1994 +*************** +*** 85,91 **** + # CLOCKDEFS= line below. This flag affects xntpd only. + # +- # There is an occurance of a call to rindex() in the daemon. You may +- # have to include a -Drindex=strrchr to get this to load right. +- # + # To change the location of the configuration file, use a + # -DCONFIG_FILE=\\"/local/etc/ntp.conf\\" or something similar. +--- 85,88 ---- +*************** +*** 105,109 **** + # be used) + # +! DEFS= -DBSDI -DUSELIBKVM -DDEBUG -DREFCLOCK -DPPS -DCONFIG_FILE=\\"/usr/local/etc/xntp.conf\\" -DHAVE_UNISTD_H + + # +--- 102,106 ---- + # be used) + # +! DEFS= -DBSDI -DUSELIBKVM -DDEBUG -DREFCLOCK -DPPS -DCONFIG_FILE=\\"/usr/local/etc/xntp.conf\\" -DNTP_POSIX_SOURCE + + # +*** /tmp/RCSA023428 Wed Jan 26 17:56:27 1994 +--- conf/Config.TIGER Wed Jan 26 16:33:30 1994 +*************** +*** 81,87 **** + # CLOCKDEFS= line below. This flag affects xntpd only. + # +- # There is an occurance of a call to rindex() in the daemon. You may +- # have to include a -Drindex=strrchr to get this to load right. +- # + # To change the location of the configuration file, use a + # -DCONFIG_FILE=\\"/local/etc/ntp.conf\\" or something similar. +--- 81,84 ---- +*************** +*** 101,105 **** + # be used) + # +! DEFS= -DREFCLOCK -DS_CHAR_DEFINED -DREADKMEM -DDEBUG -DPLL -DXNTP_RETROFIT_STDLIB -DHAVE_UNISTD_H + + # +--- 98,102 ---- + # be used) + # +! DEFS= -DREFCLOCK -DS_CHAR_DEFINED -DREADKMEM -DDEBUG -DPLL -DXNTP_RETROFIT_STDLIB -DNTP_POSIX_SOURCE + + # +*** /tmp/RCSA023428 Wed Jan 26 17:56:27 1994 +--- conf/Config.TRURO Wed Jan 26 16:33:30 1994 +*************** +*** 87,93 **** + # CLOCKDEFS= line below. This flag affects xntpd only. + # +- # There is an occurance of a call to rindex() in the daemon. You may +- # have to include a -Drindex=strrchr to get this to load right. +- # + # To change the location of the configuration file, use a + # -DCONFIG_FILE=\\"/local/etc/ntp.conf\\" or something similar. +--- 87,90 ---- +*************** +*** 110,114 **** + # generated by the pps signal. Only one of these flags should be defined. + # +! DEFS= -DDEBUG -DSTREAM -DREFCLOCK -DNO_SIGNED_CHAR_DECL -DSLEWALWAYS -DSOLARIS -DPPS -DSTUPID_SIGNAL -DXNTP_RETROFIT_STDLIB -DHAVE_UNISTD_H + + # +--- 107,111 ---- + # generated by the pps signal. Only one of these flags should be defined. + # +! DEFS= -DDEBUG -DSTREAM -DREFCLOCK -DNO_SIGNED_CHAR_DECL -DSLEWALWAYS -DSOLARIS -DPPS -DSTUPID_SIGNAL -DXNTP_RETROFIT_STDLIB -DNTP_POSIX_SOURCE + + # +*** /tmp/RCSA023441 Wed Jan 26 17:56:29 1994 +--- include/l_stdlib.h Wed Jan 26 16:33:30 1994 +*************** +*** 39,43 **** + #if !defined(NTP_POSIX_SOURCE) + extern int atoi P((char *)); +- extern void bcopy P((char *, char *, int)); + extern int dup2 P((int, int)); + extern int execve P((char *, char **,char **)); +--- 39,42 ---- +*************** +*** 51,58 **** + #endif + +- #ifndef bzero /* XXX macro prototyping clash */ +- extern void bzero P((char *, int)); +- extern int bcmp P((char *, char *, int)); +- #endif + extern char *mktemp P((char *)); + +--- 50,53 ---- +*************** +*** 193,200 **** + #ifndef NTP_POSIX_SOURCE + extern int atoi P((char *)); +- extern void bcopy P((char *, char *, int)); +- extern void bzero P((char *, int)); +- extern int bcmp P((char *, char *, int)); +- extern void bcopy P((char *, char *, int)); + extern int execve P((char *, char **,char **)); + extern int fork P((void)); +--- 188,191 ---- +*** /tmp/RCSA023441 Wed Jan 26 17:56:29 1994 +--- include/ntp.h Wed Jan 26 16:33:30 1994 +*************** +*** 329,333 **** + + /* +! * Definitions for the clear() routine. We use bzero() to clear + * the parts of the peer structure which go to zero. These are + * used to calculate the start address and length of the area. +--- 329,333 ---- + + /* +! * Definitions for the clear() routine. We use memset() to clear + * the parts of the peer structure which go to zero. These are + * used to calculate the start address and length of the area. +*** /tmp/RCSA023441 Wed Jan 26 17:56:29 1994 +--- include/ntp_machine.h Wed Jan 26 16:33:31 1994 +*************** +*** 1,3 **** +! /* ntp_compat.h,v 3.1 1993/07/06 01:06:49 jbj Exp + * Collect all machine dependent idiosyncrasies in one place. + */ +--- 1,3 ---- +! /* ntp_machine.h,v 3.1 1993/07/06 01:06:49 jbj Exp + * Collect all machine dependent idiosyncrasies in one place. + */ +*************** +*** 53,61 **** + + THIS MAKES PORTS TO NEW SYSTEMS EASY - You only have to wory about +! kernal mucking. + + NTP_POSIX_SOURCE - Use POSIX functions over bsd functions and att functions. + This is NOT the same as _POSIX_SOURCE. +! It is much weeker! + + +--- 53,61 ---- + + THIS MAKES PORTS TO NEW SYSTEMS EASY - You only have to wory about +! kernel mucking. + + NTP_POSIX_SOURCE - Use POSIX functions over bsd functions and att functions. + This is NOT the same as _POSIX_SOURCE. +! It is much weaker! + + +*************** +*** 95,99 **** + UNIX V.4 machines implement a sockets library on top of streams. + When requesting the IP interface configuration with an ioctl(2) calll, +! an arrat of ifreq structures are placed in the provided buffer. Some + implementations also place the length of the buffer information in + the first integer position of the buffer. +--- 95,99 ---- + UNIX V.4 machines implement a sockets library on top of streams. + When requesting the IP interface configuration with an ioctl(2) calll, +! an array of ifreq structures are placed in the provided buffer. Some + implementations also place the length of the buffer information in + the first integer position of the buffer. +*************** +*** 115,121 **** + RETSIGTYPE - Define signal function type. + NO_SIGNED_CHAR_DECL - No "signed char" see include/ntp.h +! LOCK_PROCESS - Have plock. + UDP_WILDCARD_DELIVERY +! - these systems deliver broadcast pakets to the wildcard + port instead to a port bound to the interface bound + to the correct broadcast address - are these +--- 115,121 ---- + RETSIGTYPE - Define signal function type. + NO_SIGNED_CHAR_DECL - No "signed char" see include/ntp.h +! LOCK_PROCESS - Have plock. + UDP_WILDCARD_DELIVERY +! - these systems deliver broadcast packets to the wildcard + port instead to a port bound to the interface bound + to the correct broadcast address - are these +*************** +*** 122,133 **** + implementations broken or did the spec change ? + +- HAVE_UNISTD_H - Maybe should be part of NTP_POSIX_SOURCE ? +- + You could just put the defines on the DEFS line in machines/<os> file. +! I don't since there are lost of different types compiler that a systemm might +! have, some that can do proto typing and others that cannot on the saem system. +! I get a chanse to twiddle some of the configuration paramasters at compile +! time based on compler/machine combinatsions by using this include file. +! See convex, aix and sun configurations see how complex it get. + + */ +--- 122,135 ---- + implementations broken or did the spec change ? + + You could just put the defines on the DEFS line in machines/<os> file. +! I don't since there are lots of different types of compiler that a system might +! have, some that can do prototyping and others that cannot on the saem system. +! I get a chance to twiddle some of the configuration paramasters at compile +! time based on compler/machine combinations by using this include file. +! See convex, aix and sun configurations see how complex it gets. +! +! Note that it _is_ considered reasonable to add some system-specific defines +! to the machine/<os> file if it would be too inconvenient to puzzle them out +! in this file. + + */ +*************** +*** 145,152 **** + * Keep USE_PROTOTYPES and _NO_PROTO in step. + */ +! #if defined(_NO_PROTO)&&defined(USE_PROTOTYPES) + #undef USE_PROTOTYPES + #endif +! #if !defined(_NO_PROTO)&&!defined(USE_PROTOTYPES) + #define USE_PROTOTYPES + #endif +--- 147,154 ---- + * Keep USE_PROTOTYPES and _NO_PROTO in step. + */ +! #if defined(_NO_PROTO) && defined(USE_PROTOTYPES) + #undef USE_PROTOTYPES + #endif +! #if !defined(_NO_PROTO) && !defined(USE_PROTOTYPES) + #define USE_PROTOTYPES + #endif +*************** +*** 204,208 **** + * Convex + */ +! #if defined(SYS_CONVEXOS10)||defined(SYS_CONVEXOS9) + #define HAVE_SIGNALED_IO + #define HAVE_N_UN +--- 206,210 ---- + * Convex + */ +! #if defined(SYS_CONVEXOS10) || defined(SYS_CONVEXOS9) + #define HAVE_SIGNALED_IO + #define HAVE_N_UN +*************** +*** 213,221 **** + #define NO_SIGNED_CHAR_DECL + #else +! #if defined(__stdc__)&&!defined(USE_PROTOTYPES) + #define USE_PROTOTYPES + #endif +! #if !defined(__stdc__)&&defined(USE_PROTOTYPES) +! #undef USE_PROTOTYPES + #endif + #define NTP_POSIX_SOURCE +--- 215,223 ---- + #define NO_SIGNED_CHAR_DECL + #else +! #if defined(__stdc__) && !defined(USE_PROTOTYPES) + #define USE_PROTOTYPES + #endif +! #if !defined(__stdc__) && defined(USE_PROTOTYPES) +! #undef USE_PROTOTYPES + #endif + #define NTP_POSIX_SOURCE +*************** +*** 253,257 **** + * AUX + */ +! #if defined(SYS_AUX2)||defined(SYS_AUX3) + #define NO_SIGNED_CHAR_DECL + #define HAVE_READKMEM +--- 255,259 ---- + * AUX + */ +! #if defined(SYS_AUX2) || defined(SYS_AUX3) + #define NO_SIGNED_CHAR_DECL + #define HAVE_READKMEM +*************** +*** 292,296 **** + #define NTP_POSIX_SOURCE + #define HAVE_SIGNALED_IO +- #define HAVE_UNISTD_H + #define NO_SIGNED_CHAR_DECL + #define LOCK_PROCESS +--- 294,297 ---- +*************** +*** 302,305 **** +--- 303,308 ---- + #define HAVE_READKMEM + #endif ++ #define getdtablesize() sysconf(_SC_OPEN_MAX) ++ #define setlinebuf(f) setvbuf(f, NULL, _IOLBF, 0) + #endif + +*************** +*** 313,316 **** +--- 316,320 ---- + #define HAVE_BSD_NICE + #define HAVE_BSD_TTYS ++ #define HAVE_TERMIOS + #endif + +*************** +*** 342,346 **** + + /* +! * DECOSF1 + */ + #if defined(SYS_DECOSF1) +--- 346,350 ---- + + /* +! * DEC AXP OSF/1 + */ + #if defined(SYS_DECOSF1) +*************** +*** 354,357 **** +--- 358,362 ---- + /* + * I386 ++ * XXX - what OS? + */ + #if defined(SYS_I386) +*************** +*** 412,416 **** + + /* +! * Sony + */ + #if defined(SYS_SONY) +--- 417,421 ---- + + /* +! * Sony NEWS + */ + #if defined(SYS_SONY) +*************** +*** 422,425 **** +--- 427,431 ---- + /* + * VAX ++ * XXX - VMS? + */ + #if defined(SYS_VAX) +*************** +*** 435,439 **** + #define HAVE_ATT_SETPGRP + #define USE_PROTOTYPES +- #define HAVE_UNISTD_H + #define NTP_POSIX_SOURCE + #define HAVE_ATT_NICE +--- 441,444 ---- +*************** +*** 484,490 **** + #endif /* NTP_SYSCALLS_STD */ + +! #if !defined(HAVE_ATT_NICE) && !defined(HAVE_BSD_NICE) && !defined(HAVE_NO_NICE) + ERROR You_must_define_one_of_the_HAVE_xx_NICE_defines + #endif + + #endif /* __ntp_machine */ +--- 489,545 ---- + #endif /* NTP_SYSCALLS_STD */ + +! #if !defined(HAVE_ATT_NICE) \ +! && !defined(HAVE_BSD_NICE) \ +! && !defined(HAVE_NO_NICE) + ERROR You_must_define_one_of_the_HAVE_xx_NICE_defines + #endif ++ ++ ++ #if !defined(XNTP_BIG_ENDIAN) && !defined(XNTP_LITTLE_ENDIAN) ++ ++ # if defined(XNTP_AUTO_ENDIAN) ++ # include <netinet/in.h> ++ ++ # if BYTE_ORDER == BIG_ENDIAN ++ # define XNTP_BIG_ENDIAN ++ # endif ++ # if BYTE_ORDER == LITTLE_ENDIAN ++ # define XNTP_LITTLE_ENDIAN ++ # endif ++ ++ # else /* AUTO */ ++ ++ # ifdef WORDS_BIGENDIAN ++ # define XNTP_BIG_ENDIAN 1 ++ # else ++ # define XNTP_LITTLE_ENDIAN 1 ++ # endif ++ ++ # endif /* AUTO */ ++ ++ #endif /* !BIG && !LITTLE */ ++ ++ /* ++ * Byte order woes. The DES code is sensitive to byte order. This ++ * used to be resolved by calling ntohl() and htonl() to swap things ++ * around, but this turned out to be quite costly on Vaxes where those ++ * things are actual functions. The code now straightens out byte ++ * order troubles on its own, with no performance penalty for little ++ * end first machines, but at great expense to cleanliness. ++ */ ++ #if !defined(XNTP_BIG_ENDIAN) && !defined(XNTP_LITTLE_ENDIAN) ++ /* ++ * Pick one or the other. ++ */ ++ BYTE_ORDER_NOT_DEFINED_FOR_AUTHENTICATION ++ #endif ++ ++ #if defined(XNTP_BIG_ENDIAN) && defined(XNTP_LITTLE_ENDIAN) ++ /* ++ * Pick one or the other. ++ */ ++ BYTE_ORDER_NOT_DEFINED_FOR_AUTHENTICATION ++ #endif ++ + + #endif /* __ntp_machine */ +*** /tmp/RCSA023441 Wed Jan 26 17:56:30 1994 +--- include/ntp_select.h Wed Jan 26 16:33:31 1994 +*************** +*** 15,19 **** + #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) + #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) +! #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) + #endif + +--- 15,19 ---- + #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) + #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) +! #define FD_ZERO(p) memset((char *)(p), 0, sizeof(*(p))) + #endif + +*** /tmp/RCSA023441 Wed Jan 26 17:56:30 1994 +--- include/ntp_stdlib.h Wed Jan 26 16:33:31 1994 +*************** +*** 48,52 **** + extern int clocktime P((int, int, int, int, int, U_LONG, U_LONG *, U_LONG *)); + extern char * emalloc P((u_int)); +! extern int getopt_l P((int, char **, char *)); + extern void init_auth P((void)); + extern void init_lib P((void)); +--- 48,52 ---- + extern int clocktime P((int, int, int, int, int, U_LONG, U_LONG *, U_LONG *)); + extern char * emalloc P((u_int)); +! extern int ntp_getopt P((int, char **, char *)); + extern void init_auth P((void)); + extern void init_lib P((void)); +*** /tmp/RCSA023441 Wed Jan 26 17:56:30 1994 +--- include/ntp_string.h Wed Jan 26 16:33:31 1994 +*************** +*** 1,4 **** + /* +! * Define bcopy, bzero, and bcmp and string op's + */ + +--- 1,4 ---- + /* +! * Define string ops: strchr strrchr memcmp memmove memset + */ + +*************** +*** 8,27 **** + #ifdef NTP_POSIX_SOURCE + +! #if defined(HAVE_MEMORY_H) +! #include <memory.h> +! #endif +! +! #include <string.h> +! +! #define bcopy(s1,s2,n) memcpy(s2, s1, n) +! #define bzero(s,n) memset(s, 0, n) +! #define bcmp(s1,s2,n) memcmp(s1, s2, n) + + #else /* NTP_POSIX_SOURCE */ + +! #include <strings.h> + +! #define strrchr rindex +! #define strchr index + + #endif /* NTP_POSIX_SOURCE */ +--- 8,27 ---- + #ifdef NTP_POSIX_SOURCE + +! # if defined(HAVE_MEMORY_H) +! # include <memory.h> +! # endif + ++ # include <string.h> ++ + #else /* NTP_POSIX_SOURCE */ + +! # include <strings.h> + +! # define strchr(s,c) index(s,c) +! # define strrchr(s,c) rindex(s,c) +! # define memcmp(a,b,c) bcmp(a,b,c) +! # define memmove(t,f,c) bcopy(f,t,c) +! # define memset(a,x,c) if (x == 0x00) bzero(a,c) else ntp_memset((char*)a,x,c) +! void ntp_memset P((char *, int, int)); + + #endif /* NTP_POSIX_SOURCE */ +*** /tmp/RCSA023456 Wed Jan 26 17:56:31 1994 +--- kernel/tty_clk_STREAMS.c Wed Jan 26 16:33:31 1994 +*************** +*** 63,67 **** + + /* +! * God only knows why, but linking with strchr() and index() fail + * on my system, so here's a renamed copy. + */ +--- 63,67 ---- + + /* +! * God only knows why, but linking with strchr() fails + * on my system, so here's a renamed copy. + */ +*** /tmp/RCSA023460 Wed Jan 26 17:56:32 1994 +--- lib/a_md512crypt.c Wed Jan 26 16:33:31 1994 +*************** +*** 81,86 **** + MD5Final(&ctx); + +! bcopy((char *)ctx.digest, (char *) &pkt[NOCRYPT_LONGS + length/sizeof(U_LONG)], +! BLOCK_OCTETS); +! return 4 + BLOCK_OCTETS; + } +--- 81,87 ---- + MD5Final(&ctx); + +! memmove((char *) &pkt[NOCRYPT_LONGS + length/sizeof(U_LONG)], +! (char *) ctx.digest, +! BLOCK_OCTETS); +! return (4 + BLOCK_OCTETS); + } +*** /tmp/RCSA023460 Wed Jan 26 17:56:33 1994 +--- lib/a_md5decrypt.c Wed Jan 26 16:33:32 1994 +*************** +*** 55,58 **** + MD5Final(&ctx); + +! return (0 == bcmp((char *)ctx.digest, (char *)pkt + length + 4, BLOCK_OCTETS)); + } +--- 55,60 ---- + MD5Final(&ctx); + +! return (!memcmp((char *)ctx.digest, +! (char *)pkt + length + 4, +! BLOCK_OCTETS)); + } +*** /tmp/RCSA023460 Wed Jan 26 17:56:33 1994 +--- lib/a_md5encrypt.c Wed Jan 26 16:33:32 1994 +*************** +*** 64,68 **** + MD5Final(&ctx); + +! bcopy((char *)ctx.digest, (char *) &pkt[NOCRYPT_LONGS + len], BLOCK_OCTETS); +! return 4 + BLOCK_OCTETS; /* return size of key and MAC */ + } +--- 64,70 ---- + MD5Final(&ctx); + +! memmove((char *)&pkt[NOCRYPT_LONGS + len], +! (char *)ctx.digest, +! BLOCK_OCTETS); +! return (4 + BLOCK_OCTETS); /* return size of key and MAC */ + } +*** /tmp/RCSA023460 Wed Jan 26 17:56:33 1994 +--- lib/authdes.c Wed Jan 26 16:33:32 1994 +*************** +*** 4,31 **** + #include "ntp_stdlib.h" + +- #if !defined(XNTP_BIG_ENDIAN) && !defined(XNTP_LITTLE_ENDIAN) +- +- #if defined(XNTP_AUTO_ENDIAN) +- #include <netinet/in.h> +- +- #if BYTE_ORDER == BIG_ENDIAN +- #define XNTP_BIG_ENDIAN +- #endif +- #if BYTE_ORDER == LITTLE_ENDIAN +- #define XNTP_LITTLE_ENDIAN +- #endif +- +- #else /* AUTO */ +- +- #ifdef WORDS_BIGENDIAN +- #define XNTP_BIG_ENDIAN 1 +- #else +- #define XNTP_LITTLE_ENDIAN 1 +- #endif +- +- #endif /* AUTO */ +- +- #endif /* !BIG && !LITTLE */ +- + /* + * There are two entries in here. auth_subkeys() called to +--- 4,7 ---- +*************** +*** 33,58 **** + * auth_des() is called to do the actual encryption/decryption + */ +- +- /* +- * Byte order woes. The DES code is sensitive to byte order. This +- * used to be resolved by calling ntohl() and htonl() to swap things +- * around, but this turned out to be quite costly on Vaxes where those +- * things are actual functions. The code now straightens out byte +- * order troubles on its own, with no performance penalty for little +- * end first machines, but at great expense to cleanliness. +- */ +- #if !defined(XNTP_BIG_ENDIAN) && !defined(XNTP_LITTLE_ENDIAN) +- /* +- * Pick one or the other. +- */ +- BYTE_ORDER_NOT_DEFINED_FOR_AUTHENTICATION +- #endif +- +- #if defined(XNTP_BIG_ENDIAN) && defined(XNTP_LITTLE_ENDIAN) +- /* +- * Pick one or the other. +- */ +- BYTE_ORDER_NOT_DEFINED_FOR_AUTHENTICATION +- #endif + + /* +--- 9,12 ---- +*** /tmp/RCSA023460 Wed Jan 26 17:56:33 1994 +--- lib/authkeys.c Wed Jan 26 16:33:32 1994 +*************** +*** 110,114 **** + * Initialize hash table and free list + */ +! bzero((char *)key_hash, sizeof key_hash); + cache_flags = cache_keyid = 0; + +--- 110,114 ---- + * Initialize hash table and free list + */ +! memset((char *)key_hash, 0, sizeof key_hash); + cache_flags = cache_keyid = 0; + +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/authusekey.c Wed Jan 26 16:33:32 1994 +*************** +*** 97,101 **** + * Make up key from ascii representation + */ +! bzero((char *) keybytes, sizeof(keybytes)); + for (i = 0; i < 8 && i < len; i++) + keybytes[i] = *cp++ << 1; +--- 97,101 ---- + * Make up key from ascii representation + */ +! memset((char *) keybytes, 0, sizeof(keybytes)); + for (i = 0; i < 8 && i < len; i++) + keybytes[i] = *cp++ << 1; +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/dofptoa.c Wed Jan 26 16:33:33 1994 +*************** +*** 32,36 **** + * Zero out the buffer + */ +! bzero((char *)cbuf, sizeof cbuf); + + /* +--- 32,36 ---- + * Zero out the buffer + */ +! memset((char *)cbuf, 0, sizeof cbuf); + + /* +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/dolfptoa.c Wed Jan 26 16:33:33 1994 +*************** +*** 33,37 **** + * Zero the character buffer + */ +! bzero((char *) cbuf, sizeof(cbuf)); + + /* +--- 33,37 ---- + * Zero the character buffer + */ +! memset((char *) cbuf, 0, sizeof(cbuf)); + + /* +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/getopt.c Wed Jan 26 16:33:33 1994 +*************** +*** 5,9 **** + * Henry Spencer, changed for 4.3BSD compatibility (in addition to System V). + * It allows rescanning of an option list by setting optind to 0 before +! * calling. Thanks to Dennis Ferguson for the appropriate modifications. + * + * This file is in the Public Domain. +--- 5,11 ---- + * Henry Spencer, changed for 4.3BSD compatibility (in addition to System V). + * It allows rescanning of an option list by setting optind to 0 before +! * calling, which is why we use it even if the system has its own (in fact, +! * this one has a unique name so as not to conflict with the system's). +! * Thanks to Dennis Ferguson for the appropriate modifications. + * + * This file is in the Public Domain. +*************** +*** 21,57 **** + #endif /* lint */ + +! char *optarg; /* Global argument pointer. */ +! #ifndef __convex__ +! int optind = 0; /* Global argv index. */ +! #else /* __convex__ */ +! extern int optind; /* Global argv index. */ +! #endif /* __convex__ */ + +- /* +- * N.B. use following at own risk +- */ +- #ifndef __convex__ +- int opterr = 1; /* for compatibility, should error be printed? */ +- #else /* __convex__ */ +- extern int opterr; /* for compatibility, should error be printed? */ +- #endif /* __convex__ */ +- int optopt; /* for compatibility, option character checked */ +- + static char *scan = NULL; /* Private scan pointer. */ + + /* +! * Print message about a bad option. Watch this definition, it's +! * not a single statement. + */ +! #define BADOPT(mess, ch) if (opterr) { \ +! fputs(argv[0], stderr); \ +! fputs(mess, stderr); \ +! (void) putc(ch, stderr); \ +! (void) putc('\n', stderr); \ +! } \ +! return('?') + + int +! getopt_l(argc, argv, optstring) + int argc; + char *argv[]; +--- 23,53 ---- + #endif /* lint */ + +! char *ntp_optarg; /* Global argument pointer. */ +! int ntp_optind = 0; /* Global argv index. */ +! int ntp_opterr = 1; /* for compatibility, should error be printed? */ +! int ntp_optopt; /* for compatibility, option character checked */ + + static char *scan = NULL; /* Private scan pointer. */ ++ static char *prog = "amnesia"; + + /* +! * Print message about a bad option. + */ +! static int +! badopt(mess, ch) +! char *mess; +! int ch; +! { +! if (ntp_opterr) { +! fputs(prog, stderr); +! fputs(mess, stderr); +! (void) putc(ch, stderr); +! (void) putc('\n', stderr); +! } +! return ('?'); +! } + + int +! ntp_getopt(argc, argv, optstring) + int argc; + char *argv[]; +*************** +*** 61,85 **** + register char *place; + +! optarg = NULL; + +! if (optind == 0) { + scan = NULL; +! optind++; + } + + if (scan == NULL || *scan == '\0') { +! if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0') +! return EOF; +! if (argv[optind][1] == '-' && argv[optind][2] == '\0') { +! optind++; +! return EOF; + } + +! scan = argv[optind]+1; +! optind++; + } + + c = *scan++; +! optopt = c & 0377; + for (place = optstring; place != NULL && *place != '\0'; ++place) + if (*place == c) +--- 57,85 ---- + register char *place; + +! prog = argv[0]; +! ntp_optarg = NULL; + +! if (ntp_optind == 0) { + scan = NULL; +! ntp_optind++; + } + + if (scan == NULL || *scan == '\0') { +! if (ntp_optind >= argc +! || argv[ntp_optind][0] != '-' +! || argv[ntp_optind][1] == '\0') { +! return (EOF); +! } +! if (argv[ntp_optind][1] == '-' +! && argv[ntp_optind][2] == '\0') { +! ntp_optind++; +! return (EOF); + } + +! scan = argv[ntp_optind++]+1; + } + + c = *scan++; +! ntp_optopt = c & 0377; + for (place = optstring; place != NULL && *place != '\0'; ++place) + if (*place == c) +*************** +*** 87,91 **** + + if (place == NULL || *place == '\0' || c == ':' || c == '?') { +! BADOPT(": unknown option -", c); + } + +--- 87,91 ---- + + if (place == NULL || *place == '\0' || c == ':' || c == '?') { +! return (badopt(": unknown option -", c)); + } + +*************** +*** 93,106 **** + if (*place == ':') { + if (*scan != '\0') { +! optarg = scan; + scan = NULL; +! } else if (optind >= argc) { +! BADOPT(": option requires argument -", c); + } else { +! optarg = argv[optind]; +! optind++; + } + } + +! return c&0377; + } +--- 93,105 ---- + if (*place == ':') { + if (*scan != '\0') { +! ntp_optarg = scan; + scan = NULL; +! } else if (ntp_optind >= argc) { +! return (badopt(": option requires argument -", c)); + } else { +! ntp_optarg = argv[ntp_optind++]; + } + } + +! return (c & 0377); + } +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/machines.c Wed Jan 26 16:33:33 1994 +*************** +*** 1,18 **** +! /* +! * provide special support for peculiar architectures + * + * Real bummers unite ! + */ + + #ifdef SYS_PTX + #include <sys/types.h> + #include <sys/procstats.h> +! int settimeofday(tvp) + struct timeval *tvp; + { +! return stime(&tvp->tv_sec); /* lie as bad as SysVR4 */ + } + +! int gettimeofday(tvp) + struct timeval *tvp; + { +--- 1,24 ---- +! /* machines.c - provide special support for peculiar architectures + * + * Real bummers unite ! ++ * ++ * $Id:$ + */ + ++ #include "ntp_stdlib.h" ++ + #ifdef SYS_PTX + #include <sys/types.h> + #include <sys/procstats.h> +! +! int +! settimeofday(tvp) + struct timeval *tvp; + { +! return (stime(&tvp->tv_sec)); /* lie as bad as SysVR4 */ + } + +! int +! gettimeofday(tvp) + struct timeval *tvp; + { +*************** +*** 21,118 **** + * this is also the most logical syscall for such a function + */ +! return get_process_stats(tvp, PS_SELF, (struct procstats *) 0, +! (struct procstats *) 0); +! } +! #endif +! +! #ifdef SYS_HPUX +! /* hpux.c,v 3.1 1993/07/06 01:08:23 jbj Exp +! * hpux.c -- compatibility routines for HP-UX. +! * XXX many of these are not needed anymore. +! */ +! #include "ntp_machine.h" +! +! #ifdef HAVE_UNISTD_H +! #include <unistd.h> +! #endif +! #include <stdio.h> +! +! #include "ntp_stdlib.h" +! +! #if (SYS_HPUX < 8) +! char +! *index(s, c) +! register char *s; +! register int c; +! { +! return strchr (s, c); +! } +! +! +! char +! *rindex(s, c) +! register char *s; +! register int c; +! { +! return strrchr (s, c); +! } +! +! +! int +! bcmp(a, b, count) +! register char *a, *b; +! register int count; +! { +! return memcmp (a, b, count); +! } +! +! +! void +! bcopy(from, to, count) +! register char *from; +! register char *to; +! register int count; +! { +! if ((to == from) || (count <= 0)) +! return; +! +! if ((to > from) && (to <= (from + count))) { +! to += count; +! from += count; +! +! do { +! *--to = *--from; +! } while (--count); +! } +! else { +! do { +! *to++ = *from++; +! } while (--count); +! } +! } +! +! +! void +! bzero(area, count) +! register char *area; +! register int count; +! { +! memset(area, 0, count); + } + #endif + +! +! getdtablesize() +! { +! return(sysconf(_SC_OPEN_MAX)); +! } +! +! +! int +! setlinebuf(a_stream) +! FILE *a_stream; + { +! return setvbuf(a_stream, (char *) NULL, _IOLBF, 0); + } +! +! #endif +--- 27,43 ---- + * this is also the most logical syscall for such a function + */ +! return (get_process_stats(tvp, PS_SELF, (struct procstats *) 0, +! (struct procstats *) 0)); + } + #endif + +! #if !defined(NTP_POSIX_SOURCE) +! void +! ntp_memset(a, x, c) +! char *a; +! int x, c; + { +! while (c-- > 0) +! *a++ = x; + } +! #endif /*POSIX*/ +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/numtohost.c Wed Jan 26 16:37:59 1994 +*************** +*** 2,6 **** + * numtohost - convert network number to host name. + */ +- #include "ntp_string.h" + #include <netdb.h> + +--- 2,5 ---- +*** /tmp/RCSA023460 Wed Jan 26 17:56:34 1994 +--- lib/systime.c Wed Jan 26 16:33:33 1994 +*************** +*** 346,350 **** + */ + if (oldtime != timetv.tv_sec) { +! bzero((char *)&ut, sizeof(ut)); + ut.ut_type = OLD_TIME; + ut.ut_time = oldtime; +--- 346,350 ---- + */ + if (oldtime != timetv.tv_sec) { +! memset((char *)&ut, 0, sizeof(ut)); + ut.ut_type = OLD_TIME; + ut.ut_time = oldtime; +*** /tmp/RCSA023486 Wed Jan 26 17:56:35 1994 +--- machines/bsdi Wed Jan 26 16:33:33 1994 +*************** +*** 1,5 **** + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_BSDI -DHAVE_TERMIOS + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK +--- 1,5 ---- + RANLIB= ranlib + DEFS_LOCAL=-DREFCLOCK +! DEFS= -DSYS_BSDI + AUTHDEFS= -DDES -DMD5 + CLOCKDEFS= -DLOCAL_CLOCK +*** /tmp/RCSA023490 Wed Jan 26 17:56:36 1994 +--- ntpdate/ntpdate.c Wed Jan 26 16:33:34 1994 +*************** +*** 168,173 **** + int errflg; + int c; +! extern char *optarg; +! extern int optind; + extern char *Version; + +--- 168,173 ---- + int errflg; + int c; +! extern char *ntp_optarg; +! extern int ntp_optind; + extern char *Version; + +*************** +*** 179,186 **** + * Decode argument list + */ +! while ((c = getopt_l(argc, argv, "a:bde:k:o:p:qst:v")) != EOF) + switch (c) { + case 'a': +! c = atoi(optarg); + sys_authenticate = 1; + sys_authkey = (U_LONG)c; +--- 179,186 ---- + * Decode argument list + */ +! while ((c = ntp_getopt(argc, argv, "a:bde:k:o:p:qst:v")) != EOF) + switch (c) { + case 'a': +! c = atoi(ntp_optarg); + sys_authenticate = 1; + sys_authkey = (U_LONG)c; +*************** +*** 193,201 **** + break; + case 'e': +! if (!atolfp(optarg, &tmp) + || tmp.l_ui != 0) { + (void) fprintf(stderr, + "%s: encryption delay %s is unlikely\n", +! progname, optarg); + errflg++; + } else { +--- 193,201 ---- + break; + case 'e': +! if (!atolfp(ntp_optarg, &tmp) + || tmp.l_ui != 0) { + (void) fprintf(stderr, + "%s: encryption delay %s is unlikely\n", +! progname, ntp_optarg); + errflg++; + } else { +*************** +*** 204,214 **** + break; + case 'k': +! key_file = optarg; + break; + case 'o': +! sys_version = atoi(optarg); + break; + case 'p': +! c = atoi(optarg); + if (c <= 0 || c > NTP_SHIFT) { + (void) fprintf(stderr, +--- 204,214 ---- + break; + case 'k': +! key_file = ntp_optarg; + break; + case 'o': +! sys_version = atoi(ntp_optarg); + break; + case 'p': +! c = atoi(ntp_optarg); + if (c <= 0 || c > NTP_SHIFT) { + (void) fprintf(stderr, +*************** +*** 227,234 **** + break; + case 't': +! if (!atolfp(optarg, &tmp)) { + (void) fprintf(stderr, + "%s: timeout %s is undecodeable\n", +! progname, optarg); + errflg++; + } else { +--- 227,234 ---- + break; + case 't': +! if (!atolfp(ntp_optarg, &tmp)) { + (void) fprintf(stderr, + "%s: timeout %s is undecodeable\n", +! progname, ntp_optarg); + errflg++; + } else { +*************** +*** 249,253 **** + } + +! sys_maxservers = argc - optind; + if (errflg || sys_maxservers == 0) { + (void) fprintf(stderr, +--- 249,253 ---- + } + +! sys_maxservers = argc - ntp_optind; + if (errflg || sys_maxservers == 0) { + (void) fprintf(stderr, +*************** +*** 294,299 **** + * Add servers we are going to be polling + */ +! for ( ; optind < argc; optind++) +! addserver(argv[optind]); + + if (sys_numservers == 0) { +--- 294,299 ---- + * Add servers we are going to be polling + */ +! for ( ; ntp_optind < argc; ntp_optind++) +! addserver(argv[ntp_optind]); + + if (sys_numservers == 0) { +*************** +*** 1031,1035 **** + + server = (struct server *)emalloc(sizeof(struct server)); +! bzero((char *)server, sizeof(struct server)); + + server->srcadr.sin_family = AF_INET; +--- 1031,1035 ---- + + server = (struct server *)emalloc(sizeof(struct server)); +! memset((char *)server, 0, sizeof(struct server)); + + server->srcadr.sin_family = AF_INET; +*************** +*** 1189,1193 **** + struct sockaddr_in addr; + +! bzero((char *)&addr, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +--- 1189,1193 ---- + struct sockaddr_in addr; + +! memset((char *)&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +*************** +*** 1483,1490 **** + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! bcopy(hp->h_addr, (char *)num, sizeof(U_LONG)); +! return 1; + } +! return 0; + } + +--- 1483,1490 ---- + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! memmove((char *)num, hp->h_addr, sizeof(U_LONG)); +! return (1); + } +! return (0); + } + +*************** +*** 1520,1524 **** + if (pp->stratum == 1) { + junk[4] = 0; +! bcopy((char *)&pp->refid, junk, 4); + str = junk; + } else { +--- 1520,1524 ---- + if (pp->stratum == 1) { + junk[4] = 0; +! memmove(junk, (char *)&pp->refid, 4); + str = junk; + } else { +*** /tmp/RCSA023494 Wed Jan 26 17:56:37 1994 +--- ntpq/ntpq.c Wed Jan 26 16:33:34 1994 +*************** +*** 510,515 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + delay_time.l_ui = 0; +--- 510,515 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + delay_time.l_ui = 0; +*************** +*** 517,524 **** + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "c:dinp")) != EOF) + switch (c) { + case 'c': +! ADDCMD(optarg); + break; + case 'd': +--- 517,524 ---- + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "c:dinp")) != EOF) + switch (c) { + case 'c': +! ADDCMD(ntp_optarg); + break; + case 'd': +*************** +*** 544,552 **** + exit(2); + } +! if (optind == argc) { + ADDHOST(DEFHOST); + } else { +! for (; optind < argc; optind++) +! ADDHOST(argv[optind]); + } + +--- 544,552 ---- + exit(2); + } +! if (ntp_optind == argc) { + ADDHOST(DEFHOST); + } else { +! for (; ntp_optind < argc; ntp_optind++) +! ADDHOST(argv[ntp_optind]); + } + +*************** +*** 983,987 **** + * Copy the data into the data buffer. + */ +! bcopy((char *)rpkt.data, (char *)pktdata + offset, count); + + /* +--- 983,987 ---- + * Copy the data into the data buffer. + */ +! memmove((char *)pktdata + offset, (char *)rpkt.data, count); + + /* +*************** +*** 1051,1055 **** + */ + if (qsize > 0) { +! bcopy(qdata, (char *)qpkt.data, qsize); + pktsize = qsize + CTL_HEADER_LEN; + while (pktsize & (sizeof(U_LONG)-1)) { +--- 1051,1055 ---- + */ + if (qsize > 0) { +! memmove((char *)qpkt.data, qdata, qsize); + pktsize = qsize + CTL_HEADER_LEN; + while (pktsize & (sizeof(U_LONG)-1)) { +*************** +*** 1542,1546 **** + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! bcopy(hp->h_addr, (char *)num, sizeof(U_LONG)); + if (fullhost != 0) + (void) strcpy(fullhost, hp->h_name); +--- 1542,1546 ---- + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! memmove((char *)num, hp->h_addr, sizeof(U_LONG)); + if (fullhost != 0) + (void) strcpy(fullhost, hp->h_name); +*** /tmp/RCSA023494 Wed Jan 26 17:56:37 1994 +--- ntpq/ntpq_ops.c Wed Jan 26 16:33:34 1994 +*************** +*** 218,221 **** +--- 218,222 ---- + /* + * strsave - save a string ++ * XXX - should be in libntp.a + */ + static char * +*************** +*** 232,237 **** + } + +! bcopy(str, cp, len); +! return cp; + } + +--- 233,238 ---- + } + +! memmove(cp, str, len); +! return (cp); + } + +*************** +*** 373,381 **** + if (cp != data) + *cp++ = ','; +! bcopy(vl->name, cp, namelen); + cp += namelen; + if (valuelen != 0) { + *cp++ = '='; +! bcopy(vl->value, cp, valuelen); + cp += valuelen; + } +--- 374,382 ---- + if (cp != data) + *cp++ = ','; +! memmove(cp, vl->name, namelen); + cp += namelen; + if (valuelen != 0) { + *cp++ = '='; +! memmove(cp, vl->value, valuelen); + cp += valuelen; + } +*************** +*** 601,605 **** + return; + +! bzero((char *)tmplist, sizeof(tmplist)); + if (pcmd->nargs >= 2) + doaddvlist(tmplist, pcmd->argval[1].string); +--- 602,606 ---- + return; + +! memset((char *)tmplist, 0, sizeof(tmplist)); + if (pcmd->nargs >= 2) + doaddvlist(tmplist, pcmd->argval[1].string); +*************** +*** 632,636 **** + return; + +! bzero((char *)tmplist, sizeof(tmplist)); + doaddvlist(tmplist, pcmd->argval[1].string); + +--- 633,637 ---- + return; + +! memset((char *)tmplist, 0, sizeof(tmplist)); + doaddvlist(tmplist, pcmd->argval[1].string); + +*************** +*** 691,695 **** + return; + +! bzero((char *)tmplist, sizeof(tmplist)); + if (pcmd->nargs >= 2) + doaddvlist(tmplist, pcmd->argval[1].string); +--- 692,696 ---- + return; + +! memset((char *)tmplist, 0, sizeof(tmplist)); + if (pcmd->nargs >= 2) + doaddvlist(tmplist, pcmd->argval[1].string); +*************** +*** 803,807 **** + return; + +! bzero((char *)tmplist, sizeof(tmplist)); + if (pcmd->nargs >= 3) + doaddvlist(tmplist, pcmd->argval[2].string); +--- 804,808 ---- + return; + +! memset((char *)tmplist, 0, sizeof(tmplist)); + if (pcmd->nargs >= 3) + doaddvlist(tmplist, pcmd->argval[2].string); +*************** +*** 1283,1287 **** + extern struct ctl_var peer_var[]; + +! bzero((char *)havevar, sizeof(havevar)); + gettstamp(&ts); + +--- 1284,1288 ---- + extern struct ctl_var peer_var[]; + +! memset((char *)havevar, 0, sizeof(havevar)); + gettstamp(&ts); + +*** /tmp/RCSA023500 Wed Jan 26 17:56:38 1994 +--- ntptrace/ntptrace.c Wed Jan 26 16:33:35 1994 +*************** +*** 112,117 **** + int errflg; + int c; +! extern char *optarg; +! extern int optind; + extern char *Version; + +--- 112,117 ---- + int errflg; + int c; +! extern char *ntp_optarg; +! extern int ntp_optind; + extern char *Version; + +*************** +*** 122,126 **** + * Decode argument list + */ +! while ((c = getopt_l(argc, argv, "do:nr:t:v")) != EOF) + switch (c) { + case 'd': +--- 122,126 ---- + * Decode argument list + */ +! while ((c = ntp_getopt(argc, argv, "do:nr:t:v")) != EOF) + switch (c) { + case 'd': +*************** +*** 131,138 **** + break; + case 'o': +! sys_version = atoi(optarg); + break; + case 'r': +! sys_retries = atoi(optarg); + if (sys_retries < 1) { + (void)fprintf(stderr, +--- 131,138 ---- + break; + case 'o': +! sys_version = atoi(ntp_optarg); + break; + case 'r': +! sys_retries = atoi(ntp_optarg); + if (sys_retries < 1) { + (void)fprintf(stderr, +*************** +*** 143,147 **** + break; + case 't': +! sys_timeout = atoi(optarg); + if (sys_timeout < 1) { + (void)fprintf(stderr, +--- 143,147 ---- + break; + case 't': +! sys_timeout = atoi(ntp_optarg); + if (sys_timeout < 1) { + (void)fprintf(stderr, +*************** +*** 161,165 **** + } + +! if (errflg || (argc - optind) > 1) { + (void) fprintf(stderr, + "usage: %s [-vnd] [-r retries] [-t timeout] [server]\n", +--- 161,165 ---- + } + +! if (errflg || (argc - ntp_optind) > 1) { + (void) fprintf(stderr, + "usage: %s [-vnd] [-r retries] [-t timeout] [server]\n", +*************** +*** 183,188 **** + syslog(LOG_NOTICE, "%s", Version); + +! if ((argc - optind) == 1) +! firstserver = addservbyname(argv[optind]); + else + firstserver = addservbyname("localhost"); +--- 183,188 ---- + syslog(LOG_NOTICE, "%s", Version); + +! if ((argc - ntp_optind) == 1) +! firstserver = addservbyname(argv[ntp_optind]); + else + firstserver = addservbyname("localhost"); +*************** +*** 503,507 **** + + server = (struct server *)emalloc(sizeof(struct server)); +! bzero((char *)server, sizeof(struct server)); + + server->srcadr.sin_family = AF_INET; +--- 503,507 ---- + + server = (struct server *)emalloc(sizeof(struct server)); +! memset((char *)server, 0, sizeof(struct server)); + + server->srcadr.sin_family = AF_INET; +*************** +*** 617,621 **** + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! bcopy(hp->h_addr, (char *)num, sizeof(U_LONG)); + return 1; + } +--- 617,621 ---- + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! memmove((char *)num, hp->h_addr, sizeof(U_LONG)); + return 1; + } +*************** +*** 736,740 **** + if (pp->stratum == 1) { + junk[4] = 0; +! bcopy((char *)&pp->refid, junk, 4); + str = junk; + (void) fprintf(fp, "'%s'", str); +--- 736,740 ---- + if (pp->stratum == 1) { + junk[4] = 0; +! memmove(junk, (char *)&pp->refid, 4); + str = junk; + (void) fprintf(fp, "'%s'", str); +*** /tmp/RCSA023505 Wed Jan 26 17:56:39 1994 +--- parse/util/testdcf.c Wed Jan 26 16:33:35 1994 +*************** +*** 353,357 **** + } + +! bzero(term.c_cc, sizeof(term.c_cc)); + term.c_cc[VMIN] = 1; + term.c_cflag = B50|CS8|CREAD|CLOCAL; +--- 353,357 ---- + } + +! memset(term.c_cc, 0, sizeof(term.c_cc)); + term.c_cc[VMIN] = 1; + term.c_cflag = B50|CS8|CREAD|CLOCAL; +*** /tmp/RCSA023510 Wed Jan 26 17:56:40 1994 +--- ppsclock/ppstest/ppstest.c Wed Jan 26 16:33:35 1994 +*************** +*** 103,107 **** + speed_t speed = B4800; + +! bzero((char *)&termios, sizeof(termios)); + termios.c_cflag = CS8 | CREAD | CLOCAL; + termios.c_iflag = IGNCR; +--- 103,107 ---- + speed_t speed = B4800; + +! memset((char *)&termios, 0, sizeof(termios)); + termios.c_cflag = CS8 | CREAD | CLOCAL; + termios.c_iflag = IGNCR; +*** /tmp/RCSA023525 Wed Jan 26 17:56:43 1994 +--- scripts/autoconf Wed Jan 26 16:33:35 1994 +*************** +*** 324,329 **** + { + test -n "$verbose" && \ +! echo ' defining' HAVE_UNISTD_H +! DEFS="$DEFS -DHAVE_UNISTD_H=1" + } + +--- 324,329 ---- + { + test -n "$verbose" && \ +! echo ' defining' NTP_POSIX_SOURCE +! DEFS="$DEFS -DNTP_POSIX_SOURCE=1" + } + +*** /tmp/RCSA023535 Wed Jan 26 17:56:46 1994 +--- util/Makefile.tmpl Wed Jan 26 16:33:35 1994 +*************** +*** 33,37 **** + + tickadj: $(TKOBJS) +! $(CC) $(COPTS) -o $@ $(TKOBJS) $(DAEMONLIBS) $(RESLIB) $(COMPAT) + + ntptime: $(NTOBJS) +--- 33,37 ---- + + tickadj: $(TKOBJS) +! $(CC) $(COPTS) -o $@ $(TKOBJS) $(LIB) $(DAEMONLIBS) $(RESLIB) $(COMPAT) + + ntptime: $(NTOBJS) +*** /tmp/RCSA023535 Wed Jan 26 17:56:47 1994 +--- util/ntptime.c Wed Jan 26 16:33:36 1994 +*************** +*** 38,42 **** + extern int sigvec P((int, struct sigvec *, struct sigvec *)); + void pll_trap P((void)); +- extern int getopt_l P((int, char **, char *)); + + static struct sigvec newsigsys; /* new sigvec status */ +--- 38,41 ---- +*************** +*** 52,57 **** + char *argv[]; + { +! extern int optind; +! extern char *optarg; + int status; + struct ntptimeval ntv; +--- 51,56 ---- + char *argv[]; + { +! extern int ntp_optind; +! extern char *ntp_optarg; + int status; + struct ntptimeval ntv; +*************** +*** 67,71 **** + ntx.mode = 0; + progname = argv[0]; +! while ((c = getopt_l(argc, argv, optargs)) != EOF) switch (c) { + case 'c': + cost++; +--- 66,70 ---- + ntx.mode = 0; + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, optargs)) != EOF) switch (c) { + case 'c': + cost++; +*************** +*** 73,81 **** + case 'e': + ntx.mode |= ADJ_ESTERROR; +! ntx.esterror = atoi(optarg); + break; + case 'f': + ntx.mode |= ADJ_FREQUENCY; +! ntx.frequency = (int) (atof(optarg) * (1 << SHIFT_USEC)); + if (ntx.frequency < (-100 << SHIFT_USEC) + || ntx.frequency > ( 100 << SHIFT_USEC)) errflg++; +--- 72,81 ---- + case 'e': + ntx.mode |= ADJ_ESTERROR; +! ntx.esterror = atoi(ntp_optarg); + break; + case 'f': + ntx.mode |= ADJ_FREQUENCY; +! ntx.frequency = (int) (atof(ntp_optarg) +! * (1 << SHIFT_USEC)); + if (ntx.frequency < (-100 << SHIFT_USEC) + || ntx.frequency > ( 100 << SHIFT_USEC)) errflg++; +*************** +*** 83,91 **** + case 'm': + ntx.mode |= ADJ_MAXERROR; +! ntx.maxerror = atoi(optarg); + break; + case 'o': + ntx.mode |= ADJ_OFFSET; +! ntx.offset = atoi(optarg); + break; + case 'r': +--- 83,91 ---- + case 'm': + ntx.mode |= ADJ_MAXERROR; +! ntx.maxerror = atoi(ntp_optarg); + break; + case 'o': + ntx.mode |= ADJ_OFFSET; +! ntx.offset = atoi(ntp_optarg); + break; + case 'r': +*************** +*** 94,98 **** + case 's': + ntx.mode |= ADJ_STATUS; +! ntx.status = atoi(optarg); + if (ntx.status < 0 || ntx.status > 4) errflg++; + break; +--- 94,98 ---- + case 's': + ntx.mode |= ADJ_STATUS; +! ntx.status = atoi(ntp_optarg); + if (ntx.status < 0 || ntx.status > 4) errflg++; + break; +*************** +*** 99,103 **** + case 't': + ntx.mode |= ADJ_TIMECONST; +! ntx.time_constant = atoi(optarg); + if (ntx.time_constant < 0 || ntx.time_constant > MAXTC) + errflg++; +--- 99,103 ---- + case 't': + ntx.mode |= ADJ_TIMECONST; +! ntx.time_constant = atoi(ntp_optarg); + if (ntx.time_constant < 0 || ntx.time_constant > MAXTC) + errflg++; +*************** +*** 106,110 **** + errflg++; + } +! if (errflg || (optind != argc)) { + (void) fprintf(stderr, + "usage: %s [-%s]\n\n\ +--- 106,110 ---- + errflg++; + } +! if (errflg || (ntp_optind != argc)) { + (void) fprintf(stderr, + "usage: %s [-%s]\n\n\ +*** /tmp/RCSA023535 Wed Jan 26 17:56:47 1994 +--- util/tickadj.c Wed Jan 26 16:33:36 1994 +*************** +*** 62,68 **** + static void writevar P((int, unsigned long, int)); + static void readvar P((int, unsigned long, int *)); +- #ifndef NTP_POSIX_SOURCE +- extern int getopt P((int, char **, char *)); +- #endif + + /* +--- 62,65 ---- +*************** +*** 76,81 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + unsigned long tickadj_offset; + unsigned long tick_offset; +--- 73,78 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + unsigned long tickadj_offset; + unsigned long tick_offset; +*************** +*** 95,99 **** + + progname = argv[0]; +! while ((c = getopt(argc, argv, "a:Adkqpst:")) != EOF) + switch (c) { + case 'd': +--- 92,96 ---- + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "a:Adkqpst:")) != EOF) + switch (c) { + case 'd': +*************** +*** 110,118 **** + break; + case 'a': +! writetickadj = atoi(optarg); + if (writetickadj <= 0) { + (void) fprintf(stderr, + "%s: unlikely value for tickadj: %s\n", +! progname, optarg); + errflg++; + } +--- 107,115 ---- + break; + case 'a': +! writetickadj = atoi(ntp_optarg); + if (writetickadj <= 0) { + (void) fprintf(stderr, + "%s: unlikely value for tickadj: %s\n", +! progname, ntp_optarg); + errflg++; + } +*************** +*** 125,133 **** + break; + case 't': +! writetick = atoi(optarg); + if (writetick <= 0) { + (void) fprintf(stderr, + "%s: unlikely value for tick: %s\n", +! progname, optarg); + errflg++; + } +--- 122,130 ---- + break; + case 't': +! writetick = atoi(ntp_optarg); + if (writetick <= 0) { + (void) fprintf(stderr, + "%s: unlikely value for tick: %s\n", +! progname, ntp_optarg); + errflg++; + } +*************** +*** 137,141 **** + break; + } +! if (errflg || optind != argc) { + (void) fprintf(stderr, + "usage: %s [-Aqsp] [-a newadj] [-t newtick]\n", progname); +--- 134,138 ---- + break; + } +! if (errflg || ntp_optind != argc) { + (void) fprintf(stderr, + "usage: %s [-Aqsp] [-a newadj] [-t newtick]\n", progname); +*** /tmp/RCSA023543 Wed Jan 26 17:56:49 1994 +--- xntpd/ntp_config.c Wed Jan 26 16:33:36 1994 +*************** +*** 341,345 **** + int errflg; + int c; +! extern int optind; + + debug = 0; /* no debugging by default */ +--- 341,345 ---- + int errflg; + int c; +! extern int ntp_optind; + + debug = 0; /* no debugging by default */ +*************** +*** 353,357 **** + * the terminal, but we won't know to do that until we've + * parsed the command line. Do that now, crudely, and do it +! * again later. Our getopt_l() is explicitly reusable, by the + * way. Your own mileage may vary. + */ +--- 353,357 ---- + * the terminal, but we won't know to do that until we've + * parsed the command line. Do that now, crudely, and do it +! * again later. Our ntp_getopt() is explicitly reusable, by the + * way. Your own mileage may vary. + */ +*************** +*** 362,366 **** + * Decode argument list + */ +! while ((c = getopt_l(argc, argv, xntp_options)) != EOF) + switch (c) { + case 'd': +--- 362,366 ---- + * Decode argument list + */ +! while ((c = ntp_getopt(argc, argv, xntp_options)) != EOF) + switch (c) { + case 'd': +*************** +*** 374,378 **** + } + +! if (errflg || optind != argc) { + (void) fprintf(stderr, + "usage: %s [ -bd ] [ -c config_file ]\n", progname); +--- 374,378 ---- + } + +! if (errflg || ntp_optind != argc) { + (void) fprintf(stderr, + "usage: %s [ -bd ] [ -c config_file ]\n", progname); +*************** +*** 379,383 **** + exit(2); + } +! optind = 0; /* reset optind to restart getopt_l */ + + if (debug) { +--- 379,383 ---- + exit(2); + } +! ntp_optind = 0; /* reset optind to restart ntp_getopt() */ + + if (debug) { +*************** +*** 427,432 **** + int have_keyfile; + char keyfile[MAXFILENAME]; +! extern int optind; +! extern char *optarg; + extern U_LONG info_auth_keyid; + FILEGEN *filegen; +--- 427,432 ---- + int have_keyfile; + char keyfile[MAXFILENAME]; +! extern int ntp_optind; +! extern char *ntp_optarg; + extern U_LONG info_auth_keyid; + FILEGEN *filegen; +*************** +*** 451,455 **** + * Decode argument list + */ +! while ((c = getopt_l(argc, argv, xntp_options)) != EOF) { + switch (c) { + case 'a': +--- 451,455 ---- + * Decode argument list + */ +! while ((c = ntp_getopt(argc, argv, xntp_options)) != EOF) { + switch (c) { + case 'a': +*************** +*** 460,464 **** + break; + case 'c': +! config_file = optarg; + break; + case 'd': +--- 460,464 ---- + break; + case 'c': +! config_file = ntp_optarg; + break; + case 'd': +*************** +*** 474,481 **** + l_fp tmp; + +! if (!atolfp(optarg, &tmp)) { + syslog(LOG_ERR, + "command line encryption delay value %s undecodable", +! optarg); + errflg++; + } else if (tmp.l_ui != 0) { +--- 474,481 ---- + l_fp tmp; + +! if (!atolfp(ntp_optarg, &tmp)) { + syslog(LOG_ERR, + "command line encryption delay value %s undecodable", +! ntp_optarg); + errflg++; + } else if (tmp.l_ui != 0) { +*************** +*** 482,486 **** + syslog(LOG_ERR, + "command line encryption delay value %s is unlikely", +! optarg); + errflg++; + } else { +--- 482,486 ---- + syslog(LOG_ERR, + "command line encryption delay value %s is unlikely", +! ntp_optarg); + errflg++; + } else { +*************** +*** 491,500 **** + + case 'f': +! stats_config(STATS_FREQ_FILE, optarg); + break; + + case 'k': +! getauthkeys(optarg); +! if ((int)strlen(optarg) >= MAXFILENAME) { + syslog(LOG_ERR, + "key file name too LONG (>%d, sigh), no name resolution possible", +--- 491,500 ---- + + case 'f': +! stats_config(STATS_FREQ_FILE, ntp_optarg); + break; + + case 'k': +! getauthkeys(ntp_optarg); +! if ((int)strlen(ntp_optarg) >= MAXFILENAME) { + syslog(LOG_ERR, + "key file name too LONG (>%d, sigh), no name resolution possible", +*************** +*** 502,506 **** + } else { + have_keyfile = 1; +! (void)strcpy(keyfile, optarg); + } + break; +--- 502,506 ---- + } else { + have_keyfile = 1; +! (void)strcpy(keyfile, ntp_optarg); + } + break; +*************** +*** 507,511 **** + + case 'p': +! stats_config(STATS_PID_FILE, optarg); + break; + +--- 507,511 ---- + + case 'p': +! stats_config(STATS_PID_FILE, ntp_optarg); + break; + +*************** +*** 514,525 **** + l_fp tmp; + +! if (!atolfp(optarg, &tmp)) { + syslog(LOG_ERR, + "command line broadcast delay value %s undecodable", +! optarg); + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line broadcast delay value %s is unlikely", +! optarg); + } else { + proto_config(PROTO_BROADDELAY, tmp.l_f); +--- 514,525 ---- + l_fp tmp; + +! if (!atolfp(ntp_optarg, &tmp)) { + syslog(LOG_ERR, + "command line broadcast delay value %s undecodable", +! ntp_optarg); + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line broadcast delay value %s is unlikely", +! ntp_optarg); + } else { + proto_config(PROTO_BROADDELAY, tmp.l_f); +*************** +*** 529,533 **** + + case 's': +! stats_config(STATS_STATSDIR, optarg); + break; + +--- 529,533 ---- + + case 's': +! stats_config(STATS_STATSDIR, ntp_optarg); + break; + +*************** +*** 536,544 **** + int tkey; + +! tkey = atoi(optarg); + if (tkey <= 0 || tkey > NTP_MAXKEY) { + syslog(LOG_ERR, + "command line trusted key %s is unlikely", +! optarg); + } else { + authtrust(tkey, (LONG)1); +--- 536,544 ---- + int tkey; + +! tkey = atoi(ntp_optarg); + if (tkey <= 0 || tkey > NTP_MAXKEY) { + syslog(LOG_ERR, + "command line trusted key %s is unlikely", +! ntp_optarg); + } else { + authtrust(tkey, (LONG)1); +*************** +*** 554,558 **** + } + +! if (errflg || optind != argc) { + (void) fprintf(stderr, + "usage: %s [ -bd ] [ -c config_file ]\n", progname); +--- 554,558 ---- + } + +! if (errflg || ntp_optind != argc) { + (void) fprintf(stderr, + "usage: %s [ -bd ] [ -c config_file ]\n", progname); +*************** +*** 1130,1134 **** + } + +! bzero((char *)&clock, sizeof clock); + errflg = 0; + for (i = 2; i < ntokens-1; i++) { +--- 1130,1134 ---- + } + +! memset((char *)&clock, 0, sizeof clock); + errflg = 0; + for (i = 2; i < ntokens-1; i++) { +*************** +*** 1582,1586 **** + * make up socket address. Clear it out for neatness. + */ +! bzero((char *)addr, sizeof(struct sockaddr_in)); + addr->sin_family = AF_INET; + addr->sin_port = htons(NTP_PORT); +--- 1582,1586 ---- + * make up socket address. Clear it out for neatness. + */ +! memset((char *)addr, 0, sizeof(struct sockaddr_in)); + addr->sin_family = AF_INET; + addr->sin_port = htons(NTP_PORT); +*** /tmp/RCSA023543 Wed Jan 26 17:56:49 1994 +--- xntpd/ntp_control.c Wed Jan 26 16:33:36 1994 +*************** +*** 873,877 **** + } + +! bcopy(dp, (char *)datapt, dlen); + datapt += dlen; + datalinelen += dlen; +--- 873,877 ---- + } + +! memmove((char *)datapt, dp, dlen); + datapt += dlen; + datalinelen += dlen; +*************** +*** 901,905 **** + if (len > (sizeof(buffer) - (cp - buffer) - 1)) + len = sizeof(buffer) - (cp - buffer) - 1; +! bcopy(data, cp, len); + cp += len; + *cp++ = '"'; +--- 901,905 ---- + if (len > (sizeof(buffer) - (cp - buffer) - 1)) + len = sizeof(buffer) - (cp - buffer) - 1; +! memmove(cp, data, len); + cp += len; + *cp++ = '"'; +*************** +*** 1697,1701 **** + if (res_authokay) + ctl_sys_num_events = 0; +! bzero((char *)wants, CS_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { +--- 1697,1701 ---- + if (res_authokay) + ctl_sys_num_events = 0; +! memset((char *)wants, 0, CS_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { +*************** +*** 1733,1737 **** + if (res_authokay) + peer->num_events = 0; +! bzero((char*)wants, CP_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { +--- 1733,1737 ---- + if (res_authokay) + peer->num_events = 0; +! memset((char*)wants, 0, CP_MAXCODE+1); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { +*************** +*** 1906,1910 **** + rpkt.status = htons(ctlclkstatus(&clock)); + gotvar = 0; +! bzero((char*)wants, CC_MAXCODE+1); + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +--- 1906,1910 ---- + rpkt.status = htons(ctlclkstatus(&clock)); + gotvar = 0; +! memset((char*)wants, 0, CC_MAXCODE+1); + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +*** /tmp/RCSA023543 Wed Jan 26 17:56:50 1994 +--- xntpd/ntp_intres.c Wed Jan 26 16:33:37 1994 +*************** +*** 295,299 **** + len = strlen(name) + 1; + cp = emalloc((unsigned)len); +! bcopy(name, cp, len); + + ce = (struct conf_entry *)emalloc(sizeof(struct conf_entry)); +--- 295,299 ---- + len = strlen(name) + 1; + cp = emalloc((unsigned)len); +! memmove(cp, name, len); + + ce = (struct conf_entry *)emalloc(sizeof(struct conf_entry)); +*************** +*** 348,354 **** + + if (h_errno == TRY_AGAIN) +! return 1; + #endif +! return 0; + } + +--- 348,354 ---- + + if (h_errno == TRY_AGAIN) +! return (1); + #endif +! return (0); + } + +*************** +*** 358,364 **** + * only return one. + */ +! (void) bcopy(hp->h_addr, (char *)&(entry->ce_peeraddr), +! sizeof(struct in_addr)); +! return 1; + } + +--- 358,365 ---- + * only return one. + */ +! memmove((char *)&(entry->ce_peeraddr), +! (char *)hp->h_addr, +! sizeof(struct in_addr)); +! return (1); + } + +*************** +*** 381,385 **** + } + +! bzero((char *)&saddr, sizeof(saddr)); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(NTP_PORT); /* trash */ +--- 382,386 ---- + } + +! memset((char *)&saddr, 0, sizeof(saddr)); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(NTP_PORT); /* trash */ +*************** +*** 449,453 **** + * Make up a request packet with the configuration info + */ +! bzero((char *)&reqpkt, sizeof(reqpkt)); + + reqpkt.rm_vn_mode = RM_VN_MODE(0, 0); +--- 450,454 ---- + * Make up a request packet with the configuration info + */ +! memset((char *)&reqpkt, 0, sizeof(reqpkt)); + + reqpkt.rm_vn_mode = RM_VN_MODE(0, 0); +*************** +*** 457,461 **** + reqpkt.err_nitems = ERR_NITEMS(0, 1); /* one item */ + reqpkt.mbz_itemsize = MBZ_ITEMSIZE(sizeof(struct conf_peer)); +! bcopy((char *)conf, reqpkt.data, sizeof(struct conf_peer)); + reqpkt.keyid = htonl(req_keyid); + +--- 458,462 ---- + reqpkt.err_nitems = ERR_NITEMS(0, 1); /* one item */ + reqpkt.mbz_itemsize = MBZ_ITEMSIZE(sizeof(struct conf_peer)); +! memmove(reqpkt.data, (char *)conf, sizeof(struct conf_peer)); + reqpkt.keyid = htonl(req_keyid); + +*** /tmp/RCSA023543 Wed Jan 26 17:56:50 1994 +--- xntpd/ntp_monitor.c Wed Jan 26 16:33:37 1994 +*************** +*** 103,107 **** + mon_hash = 0; + mon_hash_count = 0; +! bzero((char *)&mon_mru_list, sizeof mon_mru_list); + } + +--- 103,107 ---- + mon_hash = 0; + mon_hash_count = 0; +! memset((char *)&mon_mru_list, 0, sizeof mon_mru_list); + } + +*************** +*** 122,126 **** + mon_hash = (struct mon_data *) + emalloc(MON_HASH_SIZE * sizeof(struct mon_data)); +! bzero((char *)mon_hash, MON_HASH_SIZE*sizeof(struct mon_data)); + mon_hash_count = (int *)emalloc(MON_HASH_SIZE * sizeof(int)); + mon_free_mem = 0; +--- 122,127 ---- + mon_hash = (struct mon_data *) + emalloc(MON_HASH_SIZE * sizeof(struct mon_data)); +! memset((char *)mon_hash, 0, +! MON_HASH_SIZE*sizeof(struct mon_data)); + mon_hash_count = (int *)emalloc(MON_HASH_SIZE * sizeof(int)); + mon_free_mem = 0; +*** /tmp/RCSA023543 Wed Jan 26 17:56:50 1994 +--- xntpd/ntp_peer.c Wed Jan 26 16:33:37 1994 +*************** +*** 440,444 **** + * Zero the whole thing for now. We might be pickier later. + */ +! bzero((char *)peer, sizeof(struct peer)); + + peer->srcadr = *srcadr; +--- 440,444 ---- + * Zero the whole thing for now. We might be pickier later. + */ +! memset((char *)peer, 0, sizeof(struct peer)); + + peer->srcadr = *srcadr; +*** /tmp/RCSA023543 Wed Jan 26 17:56:51 1994 +--- xntpd/ntp_proto.c Wed Jan 26 16:33:37 1994 +*************** +*** 1079,1083 **** + else { + if (pps_control) +! bcopy(PPSREFID, (char *)&sys_refid, 4); + else + sys_refid = peer->srcadr.sin_addr.s_addr; +--- 1079,1083 ---- + else { + if (pps_control) +! memmove((char *)&sys_refid, PPSREFID, 4); + else + sys_refid = peer->srcadr.sin_addr.s_addr; +*************** +*** 1128,1132 **** + sys_refid = peer->refid; + else +! bcopy(PPSREFID, (char *)&sys_refid, 4); + } + } +--- 1128,1132 ---- + sys_refid = peer->refid; + else +! memmove((char *)&sys_refid, PPSREFID, 4); + } + } +*************** +*** 1251,1255 **** + printf("clear(%s)\n", ntoa(&peer->srcadr)); + #endif +! bzero(CLEAR_TO_ZERO(peer), LEN_CLEAR_TO_ZERO); + peer->hpoll = peer->minpoll; + peer->dispersion = NTP_MAXDISPERSE; +--- 1251,1255 ---- + printf("clear(%s)\n", ntoa(&peer->srcadr)); + #endif +! memset(CLEAR_TO_ZERO(peer), 0, LEN_CLEAR_TO_ZERO); + peer->hpoll = peer->minpoll; + peer->dispersion = NTP_MAXDISPERSE; +*** /tmp/RCSA023543 Wed Jan 26 17:56:51 1994 +--- xntpd/ntp_request.c Wed Jan 26 16:33:38 1994 +*************** +*** 313,317 **** + * Copy data out of exbuf into the packet. + */ +! bcopy(exbuf, &rpkt.data[0], itemsize); + seqno++; + databytes = 0; +--- 313,317 ---- + * Copy data out of exbuf into the packet. + */ +! memmove(&rpkt.data[0], exbuf, itemsize); + seqno++; + databytes = 0; +*************** +*** 683,687 **** + extern struct peer *sys_peer; + +! bzero((char *)&addr, sizeof addr); + addr.sin_family = AF_INET; + items = INFO_NITEMS(inpkt->err_nitems); +--- 683,687 ---- + extern struct peer *sys_peer; + +! memset((char *)&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + items = INFO_NITEMS(inpkt->err_nitems); +*************** +*** 774,778 **** + extern struct peer *sys_peer; + +! bzero((char *)&addr, sizeof addr); + addr.sin_family = AF_INET; + items = INFO_NITEMS(inpkt->err_nitems); +--- 774,778 ---- + extern struct peer *sys_peer; + +! memset((char *)&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + items = INFO_NITEMS(inpkt->err_nitems); +*************** +*** 1142,1146 **** + items = INFO_NITEMS(inpkt->err_nitems); + cp = (struct conf_peer *)inpkt->data; +! bzero((char *)&peeraddr, sizeof(struct sockaddr_in)); + peeraddr.sin_family = AF_INET; + peeraddr.sin_port = htons(NTP_PORT); +--- 1142,1146 ---- + items = INFO_NITEMS(inpkt->err_nitems); + cp = (struct conf_peer *)inpkt->data; +! memset((char *)&peeraddr, 0, sizeof(struct sockaddr_in)); + peeraddr.sin_family = AF_INET; + peeraddr.sin_port = htons(NTP_PORT); +*************** +*** 1452,1457 **** + items = INFO_NITEMS(inpkt->err_nitems); + cr = (struct conf_restrict *)inpkt->data; +! bzero((char *)&matchaddr, sizeof(struct sockaddr_in)); +! bzero((char *)&matchmask, sizeof(struct sockaddr_in)); + matchaddr.sin_family = AF_INET; + matchmask.sin_family = AF_INET; +--- 1452,1457 ---- + items = INFO_NITEMS(inpkt->err_nitems); + cr = (struct conf_restrict *)inpkt->data; +! memset((char *)&matchaddr, 0, sizeof(struct sockaddr_in)); +! memset((char *)&matchmask, 0, sizeof(struct sockaddr_in)); + matchaddr.sin_family = AF_INET; + matchmask.sin_family = AF_INET; +*************** +*** 1870,1874 **** + * Prepare sockaddr_in structure + */ +! bzero((char *)&laddr, sizeof laddr); + laddr.sin_family = AF_INET; + laddr.sin_port = ntohs(NTP_PORT); +--- 1870,1874 ---- + * Prepare sockaddr_in structure + */ +! memset((char *)&laddr, 0, sizeof laddr); + laddr.sin_family = AF_INET; + laddr.sin_port = ntohs(NTP_PORT); +*************** +*** 2096,2100 **** + struct sockaddr_in addr; + +! bzero((char *)&addr, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +--- 2096,2100 ---- + struct sockaddr_in addr; + +! memset((char *)&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +*************** +*** 2150,2155 **** + struct sockaddr_in addr; + +! bzero((char *)&addr, sizeof addr); +! bzero((char *)&clock, sizeof clock); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +--- 2150,2155 ---- + struct sockaddr_in addr; + +! memset((char *)&addr, 0, sizeof addr); +! memset((char *)&clock, 0, sizeof clock); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +*************** +*** 2287,2291 **** + struct sockaddr_in addr; + +! bzero((char *)&addr, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +--- 2287,2291 ---- + struct sockaddr_in addr; + +! memset((char *)&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons(NTP_PORT); +*************** +*** 2304,2308 **** + } + +! bzero((char *)&bug, sizeof bug); + refclock_buginfo(&addr, &bug); + if (bug.nvalues == 0 && bug.ntimes == 0) { +--- 2304,2308 ---- + } + +! memset((char *)&bug, 0, sizeof bug); + refclock_buginfo(&addr, &bug); + if (bug.nvalues == 0 && bug.ntimes == 0) { +*** /tmp/RCSA023543 Wed Jan 26 17:56:52 1994 +--- xntpd/ntp_restrict.c Wed Jan 26 16:33:38 1994 +*************** +*** 82,86 **** + */ + resfree = 0; +! bzero((char *)resinit, sizeof resinit); + + for (i = 1; i < INITRESLIST; i++) { +--- 82,86 ---- + */ + resfree = 0; +! memset((char *)resinit, 0, sizeof resinit); + + for (i = 1; i < INITRESLIST; i++) { +*************** +*** 235,239 **** + rl = (struct restrictlist *) emalloc( + INCRESLIST*sizeof(struct restrictlist)); +! bzero((char *)rl, + INCRESLIST*sizeof(struct restrictlist)); + +--- 235,239 ---- + rl = (struct restrictlist *) emalloc( + INCRESLIST*sizeof(struct restrictlist)); +! memset((char *)rl, 0, + INCRESLIST*sizeof(struct restrictlist)); + +*************** +*** 281,285 **** + rlprev->next = rl->next; + restrictcount--; +! bzero((char *)rl, sizeof(struct restrictlist)); + + rl->next = resfree; +--- 281,285 ---- + rlprev->next = rl->next; + restrictcount--; +! memset((char *)rl, 0, sizeof(struct restrictlist)); + + rl->next = resfree; +*** /tmp/RCSA023543 Wed Jan 26 17:56:52 1994 +--- xntpd/ntp_util.c Wed Jan 26 16:33:39 1994 +*************** +*** 224,230 **** + stats_drift_file = emalloc((u_int)(len + 1)); + stats_temp_file = emalloc((u_int)(len + sizeof(".TEMP"))); +! bcopy(value, stats_drift_file, len+1); +! bcopy(value, stats_temp_file, len); +! bcopy(".TEMP", stats_temp_file + len, sizeof(".TEMP")); + L_CLR(&old_drift); + +--- 224,230 ---- + stats_drift_file = emalloc((u_int)(len + 1)); + stats_temp_file = emalloc((u_int)(len + sizeof(".TEMP"))); +! memmove(stats_drift_file, value, len+1); +! memmove(stats_temp_file, value, len); +! memmove(stats_temp_file + len, ".TEMP", sizeof(".TEMP")); + L_CLR(&old_drift); + +*************** +*** 450,454 **** + key_file_name = emalloc((u_int)(len + 1)); + +! bcopy(keyfile, key_file_name, len+1); + + authreadkeys(key_file_name); +--- 450,454 ---- + key_file_name = emalloc((u_int)(len + 1)); + +! memmove(key_file_name, keyfile, len+1); + + authreadkeys(key_file_name); +*** /tmp/RCSA023543 Wed Jan 26 17:56:52 1994 +--- xntpd/refclock_as2201.c Wed Jan 26 16:33:39 1994 +*************** +*** 251,256 **** + * Just zero the data arrays + */ +! bzero((char *)gpsunits, sizeof gpsunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 251,256 ---- + * Just zero the data arrays + */ +! memset((char *)gpsunits, 0, sizeof gpsunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 442,446 **** + } + } +! bzero((char *)gps, sizeof(struct gpsunit)); + gpsunits[unit] = gps; + +--- 442,446 ---- + } + } +! memset((char *)gps, 0, sizeof(struct gpsunit)); + gpsunits[unit] = gps; + +*************** +*** 480,484 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(GPSREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(GPSHSREFID); +--- 480,484 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, GPSREFID, 4); + else + peer->refid = htonl(GPSHSREFID); +*************** +*** 908,913 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(GPSREFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(GPSHSREFID); +--- 908,913 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! GPSREFID, 4); + else + peer->refid = htonl(GPSHSREFID); +*** /tmp/RCSA023543 Wed Jan 26 17:56:52 1994 +--- xntpd/refclock_chu.c Wed Jan 26 16:33:39 1994 +*************** +*** 294,299 **** + * Just zero the data arrays + */ +! bzero((char *)chuunits, sizeof chuunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 294,299 ---- + * Just zero the data arrays + */ +! memset((char *)chuunits, 0, sizeof chuunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 462,466 **** + } + } +! bzero((char *)chu, sizeof(struct chuunit)); + chuunits[unit] = chu; + +--- 462,466 ---- + } + } +! memset((char *)chu, 0, sizeof(struct chuunit)); + chuunits[unit] = chu; + +*************** +*** 499,507 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(CHUREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(CHUHSREFID); + unitinuse[unit] = 1; +! return 1; + + /* +--- 499,507 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, CHUREFID, 4); + else + peer->refid = htonl(CHUHSREFID); + unitinuse[unit] = 1; +! return (1); + + /* +*************** +*** 1091,1095 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(CHUREFID, (char *)&peer->refid,4); + else + peer->refid = htonl(CHUHSREFID); +--- 1091,1096 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! CHUREFID, 4); + else + peer->refid = htonl(CHUHSREFID); +*** /tmp/RCSA023543 Wed Jan 26 17:56:53 1994 +--- xntpd/refclock_goes.c Wed Jan 26 16:33:39 1994 +*************** +*** 211,216 **** + * Just zero the data arrays + */ +! bzero((char *)goesunits, sizeof goesunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 211,216 ---- + * Just zero the data arrays + */ +! memset((char *)goesunits, 0, sizeof goesunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 401,405 **** + } + } +! bzero((char *)goes, sizeof(struct goesunit)); + goesunits[unit] = goes; + +--- 401,405 ---- + } + } +! memset((char *)goes, 0, sizeof(struct goesunit)); + goesunits[unit] = goes; + +*************** +*** 429,433 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(GOESREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(GOESHSREFID); +--- 429,433 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, GOESREFID, 4); + else + peer->refid = htonl(GOESHSREFID); +*************** +*** 924,929 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(GOESREFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(GOESHSREFID); +--- 924,929 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! GOESREFID, 4); + else + peer->refid = htonl(GOESHSREFID); +*** /tmp/RCSA023543 Wed Jan 26 17:56:53 1994 +--- xntpd/refclock_gpstm.c Wed Jan 26 16:52:22 1994 +*************** +*** 18,22 **** + #ifdef SYS_BSDI + #undef HAVE_BSD_TTYS +- #define HAVE_POSIX_TTYS + #include <sys/ioctl.h> + #endif +--- 18,21 ---- +*************** +*** 30,34 **** + #endif /* HAVE_SYSV_TTYS */ + +! #if defined(HAVE_POSIX_TTYS) + #include <termios.h> + #endif +--- 29,33 ---- + #endif /* HAVE_SYSV_TTYS */ + +! #if defined(HAVE_TERMIOS) + #include <termios.h> + #endif +*************** +*** 203,208 **** + * Just zero the data arrays + */ +! bzero((char *)gpstm_units, sizeof gpstm_units); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 202,207 ---- + * Just zero the data arrays + */ +! memset((char *)gpstm_units, 0, sizeof gpstm_units); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 278,282 **** + } + #endif /* HAVE_SYSV_TTYS */ +! #if defined(HAVE_POSIX_TTYS) + /* + * POSIX serial line parameters (termios interface) +--- 277,281 ---- + } + #endif /* HAVE_SYSV_TTYS */ +! #if defined(HAVE_TERMIOS) + /* + * POSIX serial line parameters (termios interface) +*************** +*** 331,335 **** + #endif /* STREAM */ + } +! #endif /* HAVE_POSIX_TTYS */ + #if defined(HAVE_BSD_TTYS) + /* +--- 330,334 ---- + #endif /* STREAM */ + } +! #endif /* HAVE_TERMIOS */ + #if defined(HAVE_BSD_TTYS) + /* +*************** +*** 393,397 **** + } + } +! bzero((char *)gpstm, sizeof(struct gpstm_unit)); + gpstm_units[unit] = gpstm; + +--- 392,396 ---- + } + } +! memset((char *)gpstm, 0, sizeof(struct gpstm_unit)); + gpstm_units[unit] = gpstm; + +*************** +*** 420,424 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(REFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(HSREFID); +--- 419,423 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, REFID, 4); + else + peer->refid = htonl(HSREFID); +*************** +*** 928,932 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(REFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(HSREFID); +--- 927,932 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! REFID, 4); + else + peer->refid = htonl(HSREFID); +*** /tmp/RCSA023543 Wed Jan 26 17:56:53 1994 +--- xntpd/refclock_irig.c Wed Jan 26 16:33:40 1994 +*************** +*** 170,175 **** + * Just zero the data arrays + */ +! bzero((char *) irigunits, sizeof irigunits); +! bzero((char *) unitinuse, sizeof unitinuse); + + /* +--- 170,175 ---- + * Just zero the data arrays + */ +! memset((char *) irigunits, 0, sizeof irigunits); +! memset((char *) unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 251,255 **** + } + } +! bzero((char *) irig, sizeof(struct irigunit)); + + irigunits[unit] = irig; +--- 251,255 ---- + } + } +! memset((char *) irig, 0, sizeof(struct irigunit)); + + irigunits[unit] = irig; +*************** +*** 277,281 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(IRIGREFID, (char *) &peer->refid, 4); + else + peer->refid = htonl(IRIGHSREFID); +--- 277,281 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *) &peer->refid, IRIGREFID, 4); + else + peer->refid = htonl(IRIGHSREFID); +*************** +*** 486,491 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(IRIGREFID, (char *) &peer->refid, +! 4); + else + peer->refid = htonl(IRIGHSREFID); +--- 486,491 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *) &peer->refid, +! IRIGREFID, 4); + else + peer->refid = htonl(IRIGHSREFID); +*** /tmp/RCSA023543 Wed Jan 26 17:56:53 1994 +--- xntpd/refclock_leitch.c Wed Jan 26 16:33:40 1994 +*************** +*** 145,150 **** + leitch_init() + { +! bzero((char*)leitchunits,sizeof(leitchunits)); +! bzero((char*)unitinuse,sizeof(unitinuse)); + } + +--- 145,150 ---- + leitch_init() + { +! memset((char*)leitchunits, 0, sizeof(leitchunits)); +! memset((char*)unitinuse, 0, sizeof(unitinuse)); + } + +*************** +*** 271,275 **** + + leitch = &leitchunits[unit]; +! bzero((char*)leitch,sizeof(*leitch)); + + #if defined(HAVE_SYSV_TTYS) +--- 271,275 ---- + + leitch = &leitchunits[unit]; +! memset((char*)leitch, 0, sizeof(*leitch)); + + #if defined(HAVE_SYSV_TTYS) +*** /tmp/RCSA023543 Wed Jan 26 17:56:54 1994 +--- xntpd/refclock_local.c Wed Jan 26 16:33:40 1994 +*************** +*** 101,106 **** + * Just zero the data arrays + */ +! bzero((char *)lclunits, sizeof lclunits); +! bzero((char *)unitinuse, sizeof unitinuse); + } + +--- 101,106 ---- + * Just zero the data arrays + */ +! memset((char *)lclunits, 0, sizeof lclunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + } + +*************** +*** 149,153 **** + } + } +! bzero((char *)lcl, sizeof(struct lclunit)); + lclunits[unit] = lcl; + +--- 149,153 ---- + } + } +! memset((char *)lcl, 0, sizeof(struct lclunit)); + lclunits[unit] = lcl; + +*************** +*** 167,171 **** + peer->stratum = (u_char)unit; + if (unit <= 1) +! bcopy(LCLREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(LCLHSREFID); +--- 167,171 ---- + peer->stratum = (u_char)unit; + if (unit <= 1) +! memmove((char *)&peer->refid, LCLREFID, 4); + else + peer->refid = htonl(LCLHSREFID); +*** /tmp/RCSA023576 Wed Jan 26 17:56:54 1994 +--- xntpd/refclock_msfees.c Wed Jan 26 16:33:41 1994 +*************** +*** 380,385 **** + register int i; + /* Just zero the data arrays */ +! bzero((char *)eesunits, sizeof eesunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + acceptable_slop.l_ui = 0; +--- 380,385 ---- + register int i; + /* Just zero the data arrays */ +! memset((char *)eesunits, 0, sizeof eesunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + acceptable_slop.l_ui = 0; +*************** +*** 507,511 **** + else ees = (struct eesunit *) emalloc(sizeof(struct eesunit)); + } +! bzero((char *)ees, sizeof(struct eesunit)); + eesunits[unit] = ees; + +--- 507,511 ---- + else ees = (struct eesunit *) emalloc(sizeof(struct eesunit)); + } +! memset((char *)ees, 0, sizeof(struct eesunit)); + eesunits[unit] = ees; + +*************** +*** 548,553 **** + if (!io_addclock(&ees->io)) { + /* Oh shit. Just close and return. */ +! syslog(LOG_ERR, "ees clock: io_addclock(%s): %m", +! eesdev); + goto screwed; + } +--- 548,552 ---- + if (!io_addclock(&ees->io)) { + /* Oh shit. Just close and return. */ +! syslog(LOG_ERR, "ees clock: io_addclock(%s): %m", eesdev); + goto screwed; + } +*************** +*** 560,575 **** + peer->rootdelay = 0; /* ++++ */ + peer->rootdispersion = 0; /* ++++ */ +! if (stratumtouse[unit] <= 1) +! { bcopy(EESREFID, (char *)&peer->refid, 4); +! if (unit>0 && unit<10) ((char *)&peer->refid)[3] = '0' + unit; + } +- else peer->refid = htonl(EESHSREFID); + unitinuse[unit] = 1; + syslog(LOG_ERR, "ees clock: %s OK on %d", eesdev, unit); +! return 1; + + screwed: +! if (fd232 != -1) (void) close(fd232); +! return 0; + } + +--- 559,577 ---- + peer->rootdelay = 0; /* ++++ */ + peer->rootdispersion = 0; /* ++++ */ +! if (stratumtouse[unit] <= 1) { +! memmove((char *)&peer->refid, EESREFID, 4); +! if (unit > 0 && unit < 10) +! ((char *)&peer->refid)[3] = '0' + unit; +! } else { +! peer->refid = htonl(EESHSREFID); + } + unitinuse[unit] = 1; + syslog(LOG_ERR, "ees clock: %s OK on %d", eesdev, unit); +! return (1); + + screwed: +! if (fd232 != -1) +! (void) close(fd232); +! return (0); + } + +*************** +*** 860,864 **** + sincelast = this_uisec - ees->last_step; + +! bzero(&ppsclockev, sizeof ppsclockev); + + rc = ioctl(ees->io.fd, CIOGETEV, (char *) &ppsclockev); +--- 862,866 ---- + sincelast = this_uisec - ees->last_step; + +! memset(&ppsclockev, 0, sizeof ppsclockev); + + rc = ioctl(ees->io.fd, CIOGETEV, (char *) &ppsclockev); +*************** +*** 1444,1449 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) { +! bcopy(EESREFID, (char *)&peer->refid, +! 4); + if (unit>0 && unit<10) + ((char *)&peer->refid)[3] = +--- 1446,1451 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) { +! memmove((char *)&peer->refid, +! EESREFID, 4); + if (unit>0 && unit<10) + ((char *)&peer->refid)[3] = +*** /tmp/RCSA023576 Wed Jan 26 17:56:55 1994 +--- xntpd/refclock_mx4200.c Wed Jan 26 16:33:41 1994 +*************** +*** 263,268 **** + * Just zero the data arrays + */ +! bzero((char *)mx4200units, sizeof mx4200units); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 263,268 ---- + * Just zero the data arrays + */ +! memset((char *)mx4200units, 0, sizeof mx4200units); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 487,491 **** + } + +! bzero((char *)mx4200, sizeof(struct mx4200unit)); + mx4200units[unit] = mx4200; + +--- 487,491 ---- + } + +! memset((char *)mx4200, 0, sizeof(struct mx4200unit)); + mx4200units[unit] = mx4200; + +*************** +*** 513,517 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(MX4200REFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(MX4200HSREFID); +--- 513,517 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, MX4200REFID, 4); + else + peer->refid = htonl(MX4200HSREFID); +*************** +*** 702,706 **** + return; + mx4200->lencode = n; +! bcopy(dpt, mx4200->lastcode, n); + + /* +--- 702,706 ---- + return; + mx4200->lencode = n; +! memmove(mx4200->lastcode, dpt, n); + + /* +*************** +*** 1052,1057 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(MX4200REFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(MX4200HSREFID); +--- 1052,1057 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! MX4200REFID, 4); + else + peer->refid = htonl(MX4200HSREFID); +*************** +*** 1116,1120 **** + mx4200 = mx4200units[unit]; + +! bzero((char *)bug, sizeof(*bug)); + bug->nvalues = 10; + bug->ntimes = 2; +--- 1116,1120 ---- + mx4200 = mx4200units[unit]; + +! memset((char *)bug, 0, sizeof(*bug)); + bug->nvalues = 10; + bug->ntimes = 2; +*************** +*** 1212,1216 **** + + cp = buf; +! bzero((char *)jt, sizeof(*jt)); + + if ((cp = strchr(cp, ',')) == NULL) +--- 1212,1216 ---- + + cp = buf; +! memset((char *)jt, 0, sizeof(*jt)); + + if ((cp = strchr(cp, ',')) == NULL) +*** /tmp/RCSA023576 Wed Jan 26 17:56:55 1994 +--- xntpd/refclock_omega.c Wed Jan 26 16:33:42 1994 +*************** +*** 227,232 **** + * Just zero the data arrays + */ +! bzero((char *)omegaunits, sizeof omegaunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 227,232 ---- + * Just zero the data arrays + */ +! memset((char *)omegaunits, 0, sizeof omegaunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 417,421 **** + } + } +! bzero((char *)omega, sizeof(struct omegaunit)); + omegaunits[unit] = omega; + +--- 417,421 ---- + } + } +! memset((char *)omega, 0, sizeof(struct omegaunit)); + omegaunits[unit] = omega; + +*************** +*** 445,449 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(OMEGAREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(OMEGAHSREFID); +--- 445,449 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, OMEGAREFID, 4); + else + peer->refid = htonl(OMEGAHSREFID); +*************** +*** 928,933 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(OMEGAREFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(OMEGAHSREFID); +--- 928,933 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! OMEGAREFID, 4); + else + peer->refid = htonl(OMEGAHSREFID); +*** /tmp/RCSA023576 Wed Jan 26 17:56:56 1994 +--- xntpd/refclock_parse.c Wed Jan 26 16:33:42 1994 +*************** +*** 1068,1072 **** + return; + } +! bcopy((caddr_t)&rbufp->recv_space, (caddr_t)&parsetime, sizeof(parsetime_t)); + + /* +--- 1068,1074 ---- + return; + } +! memmove((caddr_t)&parsetime, +! (caddr_t)&rbufp->recv_space, +! sizeof(parsetime_t)); + + /* +*************** +*** 2009,2013 **** + parse_init() + { +! bzero((caddr_t)parseunits, sizeof parseunits); + } + +--- 2011,2015 ---- + parse_init() + { +! memset((caddr_t)parseunits, 0, sizeof parseunits); + } + +*************** +*** 2169,2173 **** + } + +! bzero((char *)parse, sizeof(struct parseunit)); + parseunits[unit] = parse; + +--- 2171,2175 ---- + } + +! memset((char *)parse, 0, sizeof(struct parseunit)); + parseunits[unit] = parse; + +*************** +*** 2204,2208 **** + peer->stratum = STRATUM_REFCLOCK; + if (peer->stratum <= 1) +! bcopy(parse->parse_type->cl_id, (char *)&peer->refid, 4); + else + peer->refid = htonl(PARSEHSREFID); +--- 2206,2210 ---- + peer->stratum = STRATUM_REFCLOCK; + if (peer->stratum <= 1) +! memmove((char *)&peer->refid, parse->parse_type->cl_id, 4); + else + peer->refid = htonl(PARSEHSREFID); +*************** +*** 2233,2237 **** + { + #ifndef _PC_VDISABLE +! bzero((char *)tm.c_cc, sizeof(tm.c_cc)); + #else + int disablec; +--- 2235,2239 ---- + { + #ifndef _PC_VDISABLE +! memset((char *)tm.c_cc, 0, sizeof(tm.c_cc)); + #else + int disablec; +*************** +*** 2587,2591 **** + parse->peer->stratum = (u_char)(in->fudgeval1 & 0xf); + if (parse->peer->stratum <= 1) +! bcopy(parse->parse_type->cl_id, (char *)&parse->peer->refid, 4); + else + parse->peer->refid = htonl(PARSEHSREFID); +--- 2589,2595 ---- + parse->peer->stratum = (u_char)(in->fudgeval1 & 0xf); + if (parse->peer->stratum <= 1) +! memmove((char *)&parse->peer->refid, +! parse->parse_type->cl_id, +! 4); + else + parse->peer->refid = htonl(PARSEHSREFID); +*************** +*** 3280,3284 **** + { + parse->localdata = (void *)malloc(sizeof(poll_timer_t)); +! bzero((char *)parse->localdata, sizeof(poll_timer_t)); + + pt = (poll_timer_t *)parse->localdata; +--- 3284,3288 ---- + { + parse->localdata = (void *)malloc(sizeof(poll_timer_t)); +! memset((char *)parse->localdata, 0, sizeof(poll_timer_t)); + + pt = (poll_timer_t *)parse->localdata; +*** /tmp/RCSA023576 Wed Jan 26 17:56:56 1994 +--- xntpd/refclock_pst.c Wed Jan 26 16:33:42 1994 +*************** +*** 438,443 **** + * Just zero the data arrays + */ +! bzero((char *)pstunits, sizeof pstunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 438,443 ---- + * Just zero the data arrays + */ +! memset((char *)pstunits, 0, sizeof pstunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 630,634 **** + } + } +! bzero((char *)pst, sizeof(struct pstunit)); + pstunits[unit] = pst; + +--- 630,634 ---- + } + } +! memset((char *)pst, 0, sizeof(struct pstunit)); + pstunits[unit] = pst; + +*************** +*** 663,667 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(WWVREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(PSTHSREFID); +--- 663,667 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, WWVREFID, 4); + else + peer->refid = htonl(PSTHSREFID); +*************** +*** 1461,1467 **** + if (stratumtouse[pst->unit] <= 1) { + if (pst->station >= 0) +! bcopy(WWVREFID, (char *)&pst->peer->refid, 4); + else +! bcopy(WWVHREFID, (char *)&pst->peer->refid, 4); + } + +--- 1461,1467 ---- + if (stratumtouse[pst->unit] <= 1) { + if (pst->station >= 0) +! memmove((char *)&pst->peer->refid, WWVREFID, 4); + else +! memmove((char *)&pst->peer->refid, WWVHREFID, 4); + } + +*** /tmp/RCSA023576 Wed Jan 26 17:56:57 1994 +--- xntpd/refclock_tpro.c Wed Jan 26 16:33:43 1994 +*************** +*** 131,136 **** + * Just zero the data arrays + */ +! bzero((char *)tprounits, sizeof tprounits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 131,136 ---- + * Just zero the data arrays + */ +! memset((char *)tprounits, 0, sizeof tprounits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 201,205 **** + } + } +! bzero((char *)tpro, sizeof(struct tprounit)); + tprounits[unit] = tpro; + +--- 201,205 ---- + } + } +! memset((char *)tpro, 0, sizeof(struct tprounit)); + tprounits[unit] = tpro; + +*************** +*** 226,230 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(TPROREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(TPROHSREFID); +--- 226,230 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, TPROREFID, 4); + else + peer->refid = htonl(TPROHSREFID); +*************** +*** 416,421 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(TPROREFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(TPROHSREFID); +--- 416,421 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! TPROREFID, 4); + else + peer->refid = htonl(TPROHSREFID); +*** /tmp/RCSA023576 Wed Jan 26 17:56:57 1994 +--- xntpd/refclock_wwvb.c Wed Jan 26 16:33:43 1994 +*************** +*** 220,225 **** + * Just zero the data arrays + */ +! bzero((char *)wwvbunits, sizeof wwvbunits); +! bzero((char *)unitinuse, sizeof unitinuse); + + /* +--- 220,225 ---- + * Just zero the data arrays + */ +! memset((char *)wwvbunits, 0, sizeof wwvbunits); +! memset((char *)unitinuse, 0, sizeof unitinuse); + + /* +*************** +*** 408,412 **** + } + } +! bzero((char *)wwvb, sizeof(struct wwvbunit)); + wwvbunits[unit] = wwvb; + +--- 408,412 ---- + } + } +! memset((char *)wwvb, 0, sizeof(struct wwvbunit)); + wwvbunits[unit] = wwvb; + +*************** +*** 436,440 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(WWVBREFID, (char *)&peer->refid, 4); + else + peer->refid = htonl(WWVBHSREFID); +--- 436,440 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, WWVBREFID, 4); + else + peer->refid = htonl(WWVBHSREFID); +*************** +*** 957,962 **** + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! bcopy(WWVBREFID, (char *)&peer->refid, +! 4); + else + peer->refid = htonl(WWVBHSREFID); +--- 957,962 ---- + peer->stratum = stratumtouse[unit]; + if (stratumtouse[unit] <= 1) +! memmove((char *)&peer->refid, +! WWVBREFID, 4); + else + peer->refid = htonl(WWVBHSREFID); +*** /tmp/RCSA023592 Wed Jan 26 17:56:58 1994 +--- xntpdc/ntpdc.c Wed Jan 26 16:33:43 1994 +*************** +*** 222,227 **** + int c; + int errflg = 0; +! extern int optind; +! extern char *optarg; + + delay_time.l_ui = 0; +--- 222,227 ---- + int c; + int errflg = 0; +! extern int ntp_optind; +! extern char *ntp_optarg; + + delay_time.l_ui = 0; +*************** +*** 229,236 **** + + progname = argv[0]; +! while ((c = getopt_l(argc, argv, "c:dilnps")) != EOF) + switch (c) { + case 'c': +! ADDCMD(optarg); + break; + case 'd': +--- 229,236 ---- + + progname = argv[0]; +! while ((c = ntp_getopt(argc, argv, "c:dilnps")) != EOF) + switch (c) { + case 'c': +! ADDCMD(ntp_optarg); + break; + case 'd': +*************** +*** 262,270 **** + exit(2); + } +! if (optind == argc) { + ADDHOST(DEFHOST); + } else { +! for (; optind < argc; optind++) +! ADDHOST(argv[optind]); + } + +--- 262,270 ---- + exit(2); + } +! if (ntp_optind == argc) { + ADDHOST(DEFHOST); + } else { +! for (; ntp_optind < argc; ntp_optind++) +! ADDHOST(argv[ntp_optind]); + } + +*************** +*** 440,444 **** + *rdata = datap = pktdata; + lastseq = 999; /* too big to be a sequence number */ +! bzero(haveseq, sizeof(haveseq)); + FD_ZERO(&fds); + +--- 440,444 ---- + *rdata = datap = pktdata; + lastseq = 999; /* too big to be a sequence number */ +! memset(haveseq, 0, sizeof(haveseq)); + FD_ZERO(&fds); + +*************** +*** 601,605 **** + if ((datap + datasize) > (pktdata + pktdatasize)) + growpktdata(); +! bcopy((char *)rpkt.data, datap, datasize); + datap += datasize; + if (firstpkt) { +--- 601,605 ---- + if ((datap + datasize) > (pktdata + pktdatasize)) + growpktdata(); +! memmove(datap, (char *)rpkt.data, datasize); + datap += datasize; + if (firstpkt) { +*************** +*** 635,639 **** + int datasize; + +! bzero((char *)&qpkt, sizeof qpkt); + + qpkt.rm_vn_mode = RM_VN_MODE(0, 0); +--- 635,639 ---- + int datasize; + +! memset((char *)&qpkt, 0, sizeof qpkt); + + qpkt.rm_vn_mode = RM_VN_MODE(0, 0); +*************** +*** 643,647 **** + datasize = qitems * qsize; + if (datasize != 0 && qdata != NULL) { +! bcopy(qdata, (char *)qpkt.data, datasize); + qpkt.err_nitems = ERR_NITEMS(0, qitems); + qpkt.mbz_itemsize = MBZ_ITEMSIZE(qsize); +--- 643,647 ---- + datasize = qitems * qsize; + if (datasize != 0 && qdata != NULL) { +! memmove((char *)qpkt.data, qdata, datasize); + qpkt.err_nitems = ERR_NITEMS(0, qitems); + qpkt.mbz_itemsize = MBZ_ITEMSIZE(qsize); +*************** +*** 1092,1096 **** + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! bcopy(hp->h_addr, (char *)num, sizeof(U_LONG)); + if (fullhost != 0) + (void) strcpy(fullhost, hp->h_name); +--- 1092,1096 ---- + return 1; + } else if ((hp = gethostbyname(host)) != 0) { +! memmove((char *)num, hp->h_addr, sizeof(U_LONG)); + if (fullhost != 0) + (void) strcpy(fullhost, hp->h_name); +*** /tmp/RCSA023592 Wed Jan 26 17:56:58 1994 +--- xntpdc/ntpdc_ops.c Wed Jan 26 16:33:44 1994 +*************** +*** 443,447 **** + if (pp->stratum <= 1) { + junk[4] = 0; +! bcopy((char *)&pp->refid, junk, 4); + str = junk; + } else { +--- 443,447 ---- + if (pp->stratum <= 1) { + junk[4] = 0; +! memmove(junk, (char *)&pp->refid, 4); + str = junk; + } else { +*************** +*** 789,793 **** + if (is->stratum <= 1) { + junk[4] = 0; +! bcopy((char *)&is->refid, junk, 4); + str = junk; + } else { +--- 789,793 ---- + if (is->stratum <= 1) { + junk[4] = 0; +! memmove(junk, (char *)&is->refid, 4); + str = junk; + } else { +*************** +*** 2193,2197 **** + + err = 0; +! bzero((char *)&fudgedata, sizeof fudgedata); + fudgedata.clockadr = pcmd->argval[0].netnum; + +--- 2193,2197 ---- + + err = 0; +! memset((char *)&fudgedata, 0, sizeof fudgedata); + fudgedata.clockadr = pcmd->argval[0].netnum; + +*** /tmp/RCSA023598 Wed Jan 26 17:56:59 1994 +--- xntpres/xntpres.c Wed Jan 26 16:33:44 1994 +*************** +*** 149,153 **** + char *cp; + FILE *in; +! extern int optind; + + progname = argv[0]; +--- 149,153 ---- + char *cp; + FILE *in; +! extern int ntp_optind; + + progname = argv[0]; +*************** +*** 181,185 **** + syslog(LOG_NOTICE, Version); + +! while ((c = getopt_l(argc, argv, "dr")) != EOF) + switch (c) { + case 'd': +--- 181,185 ---- + syslog(LOG_NOTICE, Version); + +! while ((c = ntp_getopt(argc, argv, "dr")) != EOF) + switch (c) { + case 'd': +*************** +*** 193,197 **** + break; + } +! if (errflg || (optind + 3) != argc) { + (void) fprintf(stderr, + "usage: %s [-d] [-r] keyid keyfile conffile\n", progname); +--- 193,197 ---- + break; + } +! if (errflg || (ntp_optind + 3) != argc) { + (void) fprintf(stderr, + "usage: %s [-d] [-r] keyid keyfile conffile\n", progname); +*************** +*** 200,210 **** + } + +! if (!atouint(argv[optind], &req_keyid)) { +! syslog(LOG_ERR, "undecodeable keyid %s", argv[optind]); + exit(1); + } + +! keyfile = argv[optind+1]; +! conffile = argv[optind+2]; + + /* +--- 200,210 ---- + } + +! if (!atouint(argv[ntp_optind], &req_keyid)) { +! syslog(LOG_ERR, "undecodeable keyid %s", argv[ntp_optind]); + exit(1); + } + +! keyfile = argv[ntp_optind+1]; +! conffile = argv[ntp_optind+2]; + + /* +*************** +*** 354,358 **** + len = strlen(name) + 1; + cp = emalloc((unsigned)len); +! bcopy(name, cp, len); + + ce = (struct conf_entry *)emalloc(sizeof(struct conf_entry)); +--- 354,358 ---- + len = strlen(name) + 1; + cp = emalloc((unsigned)len); +! memmove(cp, name, len); + + ce = (struct conf_entry *)emalloc(sizeof(struct conf_entry)); +*************** +*** 409,413 **** + return 1; + #endif +! return 0; + } + +--- 409,413 ---- + return 1; + #endif +! return (0); + } + +*************** +*** 417,423 **** + * only return one. + */ +! (void) bcopy(hp->h_addr, (char *)&(entry->ce_peeraddr), +! sizeof(struct in_addr)); +! return 1; + } + +--- 417,424 ---- + * only return one. + */ +! memmove((char *)&(entry->ce_peeraddr), +! hp->h_addr, +! sizeof(struct in_addr)); +! return (1); + } + +*************** +*** 440,444 **** + } + +! bzero((char *)&saddr, sizeof(saddr)); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(NTP_PORT); /* trash */ +--- 441,445 ---- + } + +! memset((char *)&saddr, 0, sizeof(saddr)); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(NTP_PORT); /* trash */ +*************** +*** 500,504 **** + * Make up a request packet with the configuration info + */ +! bzero((char *)&reqpkt, sizeof(reqpkt)); + + reqpkt.rm_vn_mode = RM_VN_MODE(0, 0); +--- 501,505 ---- + * Make up a request packet with the configuration info + */ +! memset((char *)&reqpkt, 0, sizeof(reqpkt)); + + reqpkt.rm_vn_mode = RM_VN_MODE(0, 0); +*************** +*** 508,512 **** + reqpkt.err_nitems = ERR_NITEMS(0, 1); /* one item */ + reqpkt.mbz_itemsize = MBZ_ITEMSIZE(sizeof(struct conf_peer)); +! bcopy((char *)conf, reqpkt.data, sizeof(struct conf_peer)); + reqpkt.keyid = htonl(req_keyid); + +--- 509,513 ---- + reqpkt.err_nitems = ERR_NITEMS(0, 1); /* one item */ + reqpkt.mbz_itemsize = MBZ_ITEMSIZE(sizeof(struct conf_peer)); +! memmove(reqpkt.data, (char *)conf, sizeof(struct conf_peer)); + reqpkt.keyid = htonl(req_keyid); + + diff --git a/usr.sbin/xntpd/patches/patch.40 b/usr.sbin/xntpd/patches/patch.40 new file mode 100644 index 0000000..7f1941d --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.40 @@ -0,0 +1,92 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa23994; 13 Apr 94 15:58 EDT +Received: from adrastea.lcs.mit.edu by louie.udel.edu id aa07113; + 13 Apr 94 15:44 EDT +Received: by adrastea.lcs.mit.edu; id AA04845; Wed, 13 Apr 1994 15:44:23 -0400 +Date: Wed, 13 Apr 1994 15:44:23 -0400 +From: Garrett Wollman <wollman@adrastea.lcs.mit.edu> +Message-Id: <9404131944.AA04845@adrastea.lcs.mit.edu> +To: Mills@udel.edu +Cc: Garrett Wollman <wollman@adrastea.lcs.mit.edu>, + Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Subject: Re: You xntp modifications... +In-Reply-To: <9404122159.aa18355@huey.udel.edu> +References: <9404122159.aa18355@huey.udel.edu> + +<<On Tue, 12 Apr 94 21:59:57 EDT, Mills@udel.edu said: + +> Note that we are two versions further along, what with the average of +> a patch per day, so it would be survivable if this issue could be +> cleared up ASAP. + +This patch, applied relative to my previous patch, provides for both +behaviors. + + +*** xntpd/xntpd/ntp_control.c Wed Apr 13 12:37:51 1994 +--- ntp_control.c Wed Apr 13 12:38:42 1994 +*************** +*** 264,271 **** +--- 264,283 ---- + /* + * System and processor definitions. These will change for the gizmo board. + */ ++ #ifndef HAVE_UNAME ++ #ifndef STR_SYSTEM ++ #define STR_SYSTEM "UNIX" ++ #endif ++ #ifndef STR_PROCESSOR ++ #define STR_PROCESSOR "unknown" ++ #endif ++ ++ static char str_system[] = STR_SYSTEM; ++ static char str_processor[] = STR_PROCESSOR; ++ #else + #include <sys/utsname.h> + static struct utsname utsname; ++ #endif /* HAVE_UNAME */ + + /* + * Trap structures. We only allow a few of these, and send +*************** +*** 426,433 **** +--- 438,447 ---- + { + int i; + ++ #ifdef HAVE_UNAME + uname(&utsname); + ++ #endif /* HAVE_UNAME */ + ctl_clr_stats(); + + ctl_auth_keyid = 0; +*************** +*** 1262,1273 **** +--- 1276,1297 ---- + ctl_putuint(sys_var[CS_LEAPWARNING].text, (U_LONG)leap_warning); + break; + case CS_PROCESSOR: ++ #ifndef HAVE_UNAME ++ ctl_putstr(sys_var[CS_PROCESSOR].text, str_processor, ++ sizeof(str_processor) - 1); ++ #else + ctl_putstr(sys_var[CS_PROCESSOR].text, utsname.machine, + strlen(utsname.machine)); ++ #endif /* HAVE_UNAME */ + break; + case CS_SYSTEM: ++ #ifndef HAVE_UNAME ++ ctl_putstr(sys_var[CS_SYSTEM].text, str_system, ++ sizeof(str_system) - 1); ++ #else + ctl_putstr(sys_var[CS_SYSTEM].text, utsname.sysname, + strlen(utsname.sysname)); ++ #endif /* HAVE_UNAME */ + break; + case CS_KEYID: + ctl_putuint(sys_var[CS_KEYID].text, (U_LONG)0); + + +[no save] + diff --git a/usr.sbin/xntpd/patches/patch.41 b/usr.sbin/xntpd/patches/patch.41 new file mode 100644 index 0000000..5d1f91c --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.41 @@ -0,0 +1,50 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa13197; 16 Apr 94 22:05 EDT +Received: from motgate.mot.com by louie.udel.edu id aa18176; 16 Apr 94 21:57 EDT +Received: from pobox.mot.com ([129.188.137.100]) by motgate.mot.com with SMTP (5.67b/IDA-1.4.4/MOT-3.1 for <mills@udel.edu>) + id AA01015; Sat, 16 Apr 1994 20:57:21 -0500 +Received: from merlin.dev.cdx.mot.com by pobox.mot.com with SMTP (5.67b/IDA-1.4.4/MOT-3.1 for <mills@udel.edu>) + id AA29067; Sat, 16 Apr 1994 20:57:19 -0500 +Received: from ronald.dev.cdx.mot.com (ronald.dev.cdx.mot.com [134.33.39.18]) by merlin.dev.cdx.mot.com (8.6.5/8.6.5) with ESMTP id VAA06544; Sat, 16 Apr 1994 21:57:12 -0400 +From: "Gregory M. Paris" <paris@merlin.dev.cdx.mot.com> +Received: from localhost (paris@localhost) by ronald.dev.cdx.mot.com (8.6.5/8.6.5) id VAA22231; Sat, 16 Apr 1994 21:57:11 -0400 +Date: Sat, 16 Apr 1994 21:57:11 -0400 +Message-Id: <199404170157.VAA22231@ronald.dev.cdx.mot.com> +To: mills@udel.edu +Subject: 3.3y patch + +Dave, + +I had the same problem compiling 3.3p as I got with 3.3y. The fix +was to move a #endif that seems to be out of place in xntpd/ntp_unixclock.c. +It now compiles fine on my HP-UX 9.03. Here's the patch. + +Greg + +-- +Greg Paris <paris@merlin.dev.cdx.mot.com> +Motorola Inc, Information Systems Group, 20 Cabot Blvd, Mansfield, MA 02048-1193 +"Your Plastic Pal who's fun to be with." TM Sirius Cybernetics +These posts are self-disclamatory. + +################################################## +*** xntpd/ntp_unixclock.c.orig Mon Apr 11 22:19:21 1994 +--- xntpd/ntp_unixclock.c Sat Apr 16 21:49:15 1994 +*************** +*** 386,391 **** +--- 386,392 ---- + #undef K_TICK_NAME + #undef N_NAME + } ++ #endif /* SYS_UNIXWARE1 */ + #endif /* HAVE_READKMEM */ + + #if defined(SOLARIS)&&defined(ADJTIME_IS_ACCURATE) +*************** +*** 583,586 **** + *tick = (U_LONG)txc.tick; + } + #endif /* SYS_LINUX */ +- #endif /* SYS_UNIXWARE1 */ +--- 584,586 ---- + diff --git a/usr.sbin/xntpd/patches/patch.42 b/usr.sbin/xntpd/patches/patch.42 new file mode 100644 index 0000000..78c9bdf --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.42 @@ -0,0 +1,38 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa00358; 19 Apr 94 17:48 EDT +Received: from swan.cl.cam.ac.uk by louie.udel.edu id aa12986; + 19 Apr 94 17:40 EDT +Received: from labes.cl.cam.ac.uk (user pb (rfc931)) by swan.cl.cam.ac.uk + with SMTP (PP-6.5) to cl; Tue, 19 Apr 1994 22:39:48 +0100 +To: Mills@udel.edu +cc: Piete Brooks <Piete.Brooks@cl.cam.ac.uk> +Subject: Re: Multicast NTP - take 1 +In-reply-to: Your message of Tue, 19 Apr 1994 12:29:25 -0400. <9404191229.aa28742@huey.udel.edu> +Date: Tue, 19 Apr 1994 22:39:44 +0100 +From: Piete Brooks <Piete.Brooks@cl.cam.ac.uk> +Message-ID: <"swan.cl.cam.:138990:940419214000"@cl.cam.ac.uk> + +Shucks ! + +I omitted the "-c" to diff ... + +*** xntpd/refclock_msfees.c.dist Thu Jan 27 14:03:59 1994 +--- xntpd/refclock_msfees.c Tue Apr 19 10:58:57 1994 +*************** +*** 139,145 **** + #define INH_DELAY_PPS BITS_TO_L_FP( 0, 9600) + + #ifndef STREAM_PP1 +! #define STREAM_PP1 "ppsclockd\0<-- patch space for module name1 -->" + #endif + #ifndef STREAM_PP2 + #define STREAM_PP2 "ppsclock\0<-- patch space for module name2 -->" +--- 139,145 ---- + #define INH_DELAY_PPS BITS_TO_L_FP( 0, 9600) + + #ifndef STREAM_PP1 +! #define STREAM_PP1 "ppsclocd\0<-- patch space for module name1 -->" + #endif + #ifndef STREAM_PP2 + #define STREAM_PP2 "ppsclock\0<-- patch space for module name2 -->" + diff --git a/usr.sbin/xntpd/patches/patch.43 b/usr.sbin/xntpd/patches/patch.43 new file mode 100644 index 0000000..92f9200 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.43 @@ -0,0 +1,48 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa00412; 19 Apr 94 18:04 EDT +Received: from swan.cl.cam.ac.uk by louie.udel.edu id aa13181; + 19 Apr 94 17:44 EDT +Received: from labes.cl.cam.ac.uk (user pb (rfc931)) by swan.cl.cam.ac.uk + with SMTP (PP-6.5) to cl; Tue, 19 Apr 1994 22:44:05 +0100 +To: Mills@udel.edu +cc: Piete Brooks <Piete.Brooks@cl.cam.ac.uk> +Subject: Re: Cisco/Multicast/ntp3.3m +In-reply-to: Your message of Tue, 19 Apr 1994 12:24:31 -0400. <9404191224.aa28707@huey.udel.edu> +Date: Tue, 19 Apr 1994 22:43:58 +0100 +From: Piete Brooks <Piete.Brooks@cl.cam.ac.uk> +Message-ID: <"swan.cl.cam.:140740:940419214417"@cl.cam.ac.uk> + +> Yes, I think you have caught all the gotchas. + +I fear not :-(( + +> I take it you have the latest kernel mods. + +Look for a call sign I assume .... +Do I take it that they are **REQUIRED** ? :-((( + + +Other problems ..... + +It appears that you have your own in.h in include/ntp_in.h + +I suspect that that is why things are failing ... +Why not use the syatem's own in.h ?? + +To make it compile I added: + +*** include/ntp_in.h.dist Thu Apr 14 16:20:29 1994 +--- include/ntp_in.h Tue Apr 19 21:40:12 1994 +*************** +*** 19,24 **** +--- 19,27 ---- + + #ifndef _netinet_in_h + #define _netinet_in_h ++ #define _NETINET_IN_H_ ++ #define _SYS_IN_INCLUDED ++ #define __IN_HEADER + + /* + * Protocols + diff --git a/usr.sbin/xntpd/patches/patch.5 b/usr.sbin/xntpd/patches/patch.5 new file mode 100644 index 0000000..2225804 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.5 @@ -0,0 +1,49 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa14816; 27 Jan 94 5:15 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa11733; + 27 Jan 94 5:09 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA25056 (5.65c-6/7.3v-FAU); Thu, 27 Jan 1994 11:09:06 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA09091 (5.65c-6/7.3m-FAU); Thu, 27 Jan 1994 11:09:03 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199401271009.AA09091@faui43.informatik.uni-erlangen.de> +Subject: Re: Solaribum +To: Mills@udel.edu +Date: Thu, 27 Jan 94 11:08:55 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, Piete.Brooks@cl.cam.ac.uk, + Paul_Vixie@corpmis.sjc.hw.sony.com +In-Reply-To: <9401261207.aa10860@huey.udel.edu>; from "Mills@udel.edu" at Jan 26, 94 12:07 pm +X-Mailer: ELM [version 2.3 PL11] + + +And another corer generator to be removed: + +=================================================================== +RCS file: /src/NTP/REPOSITORY/v3/xntpd/ntp_control.c,v +retrieving revision 3.22 +diff -c -r3.22 xntpd/ntp_control.c +*** xntpd/ntp_control.c:3.22 1994/01/26 21:56:23 +--- xntpd/ntp_control.c 1994/01/27 10:03:01 +*************** +*** 2132,2138 **** + for (i = 1; i <= CC_MAXCODE; i++) + if (wants[i]) + ctl_putclock(i, &clock, 1); +! for (i = 0; !(clock.kv_list[i].flags & EOV); i++) + if (wants[i+CC_MAXCODE+1]) + ctl_putdata(clock.kv_list[i].text, + strlen(clock.kv_list[i].text), 0); +--- 2132,2138 ---- + for (i = 1; i <= CC_MAXCODE; i++) + if (wants[i]) + ctl_putclock(i, &clock, 1); +! for (i = 0; clock.kv_list && !(clock.kv_list[i].flags & EOV); i++) + if (wants[i+CC_MAXCODE+1]) + ctl_putdata(clock.kv_list[i].text, + strlen(clock.kv_list[i].text), 0); +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.6 b/usr.sbin/xntpd/patches/patch.6 new file mode 100644 index 0000000..220acad --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.6 @@ -0,0 +1,550 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa17107; 27 Jan 94 14:37 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa16998; + 27 Jan 94 14:34 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA29914 (5.65c-6/7.3v-FAU); Thu, 27 Jan 1994 20:34:08 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA23509 (5.65c-6/7.3m-FAU); Thu, 27 Jan 1994 20:34:05 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199401271934.AA23509@faui43.informatik.uni-erlangen.de> +Subject: Re: Solaribum +To: Mills@udel.edu +Date: Thu, 27 Jan 94 20:33:59 MET +Cc: Frank.Kardel@informatik.uni-erlangen.de, Piete.Brooks@cl.cam.ac.uk, + Paul_Vixie@corpmis.sjc.hw.sony.com +In-Reply-To: <9401271111.aa16183@huey.udel.edu>; from "Mills@udel.edu" at Jan 27, 94 11:11 am +X-Mailer: ELM [version 2.3 PL11] + + +> Guys, + +> Two masive patches collided in midair here, leaving broken parts scattered +> over three counties. The National Time Safety Board has investigated, +> but been unable, ... + +Additional efforts of the european branch of the NTPSB have uncovered +that the collision was due to low visibility across the atlantic. + +And I wanted to go on: + All measures have been taken to limit the effects of the crash to a + minimum and to resume normal aircraft operation as soon as possible. + + All crew members and passengers are required to apply following patch + to xntp3.3y.tar.Z for increased comfort and safety. This patch should + enable us to resume normal operation again. + + After applying the patches you may remove following debris: + + include/ntp_machine.h.rej + xntpd/ntp_config.c.rej + xntpd/ntp_control.c.rej + +Unfortunately I did a test compile and the results of that will +extend the ground stay of the 3.3y aircraft considerably. +(You may start thinking about bringing up 3.3xx - see below) + +SunOS 4.x.x does NOT have the new highly portable "memmove()" +routine. The lack of this will mean that we will have to +#define memmove(a, b, c) memcpy(a, b, c) +or find something else. I'd like to leave this to Paul. +Also on Sunos 4.x there are implicit declarations of bzero due +the the FDSET macro from the system header files. So I am not +so sure whether strictly using mem* is the best or whether we should +add b* prototypes to l_stdlib.h. I think Paul has now something +to work on. Anyhow, the patches below will rectify some problems +but the resulting code still needs much polishing (providing memmove +where it is missing e.g. SunOS4.x). + +In order to get a flying version fast (3.3xx) Dave could apply my +patch he is holding to 3.3x - that should then make a workable +version. 3.3y can then be cleaned up slowly (starting with the +patches below and then port it again to the rest of the systems). + +Sorry about the bad news. + +> I have one more patch from Frank which I will hold on to until the aircraft +> is recertified. + +That one is still to be applied because without it, it is possible +to shoot down any plane around the NTP universe that is bearing +the 3.3x banner (but can be applied to 3.3x). + + +For the 3.3y construction crew: + +diff -c -r ../yy/include/ntp_machine.h ./include/ntp_machine.h +*** ../yy/include/ntp_machine.h Thu Jan 27 15:03:23 1994 +--- ./include/ntp_machine.h Thu Jan 27 19:13:35 1994 +*************** +*** 121,139 **** + to the correct broadcast address - are these + implementations broken or did the spec change ? + +- HAVE_UNISTD_H - Maybe should be part of NTP_POSIX_SOURCE ? +- + DEFINITIONS FOR SYSTEM && PROCESSOR + STR_SYSTEM - value of system variable + STR_PROCESSOR - value of processor variable + + You could just put the defines on the DEFS line in machines/<os> file. +! I don't since there are lost of different types compiler that a systemm might +! have, some that can do proto typing and others that cannot on the saem system. +! I get a chanse to twiddle some of the configuration paramasters at compile +! time based on compler/machine combinatsions by using this include file. +! See convex, aix and sun configurations see how complex it gets. +! + */ + + +--- 121,141 ---- + to the correct broadcast address - are these + implementations broken or did the spec change ? + + DEFINITIONS FOR SYSTEM && PROCESSOR + STR_SYSTEM - value of system variable + STR_PROCESSOR - value of processor variable + + You could just put the defines on the DEFS line in machines/<os> file. +! I don't since there are lots of different types of compilers that a system might +! have, some that can do proto typing and others that cannot on the same system. +! I get a chance to twiddle some of the configuration parameters at compile +! time based on compiler/machine combinations by using this include file. +! See convex, aix and sun configurations see how complex it get. +! +! Note that it _is_ considered reasonable to add some system-specific defines +! to the machine/<os> file if it would be too inconvenient to puzzle them out +! in this file. +! + */ + + +diff -c -r ../yy/parse/parse.c ./parse/parse.c +*** ../yy/parse/parse.c Thu Jan 27 00:25:18 1994 +--- ./parse/parse.c Thu Jan 27 20:18:58 1994 +*************** +*** 29,40 **** + #include "sys/time.h" + #include "sys/errno.h" + +- #include "ntp_fp.h" +- #include "ntp_unixtime.h" +- #include "ntp_calendar.h" +- +- #include "parse.h" +- + #if defined(PARSESTREAM) && (defined(SYS_SUNOS4) || defined(SYS_SOLARIS)) && defined(STREAM) + /* + * Sorry, but in SunOS 4.x kernels there are no +--- 29,34 ---- +*************** +*** 44,51 **** +--- 38,54 ---- + #define _ntp_string_h + extern void bcopy(); + extern void bzero(); ++ #else ++ #define bzero(_X_, _Y_) memset(_X_, 0, _Y_) ++ #define bcopy(_X_, _Y_, _Z_) memmove(_Y_, _X_, _Z_) + #endif + ++ #include "ntp_fp.h" ++ #include "ntp_unixtime.h" ++ #include "ntp_calendar.h" ++ ++ #include "parse.h" ++ + #include "ntp_stdlib.h" + + #ifdef PARSESTREAM +diff -c -r ../yy/xntpd/ntp_config.c ./xntpd/ntp_config.c +*** ../yy/xntpd/ntp_config.c Thu Jan 27 15:03:47 1994 +--- ./xntpd/ntp_config.c Thu Jan 27 19:18:40 1994 +*************** +*** 1,4 **** +! /* ntp_config.c,v 3.1 1993/07/06 01:11:12 jbj Exp + * ntp_config.c - read and apply configuration information + */ + #define RESOLVE_INTERNAL /* gdt */ +--- 1,4 ---- +! /* + * ntp_config.c - read and apply configuration information + */ + #define RESOLVE_INTERNAL /* gdt */ +*************** +*** 375,388 **** + break; + } + +! if (errflg || optind != argc) { + (void) fprintf(stderr, "usage: %s [ -abd ] [ -c config_file ] [ -e encryption delay ]\n", progname); + (void) fprintf(stderr, "\t\t[ -f frequency file ] [ -k key file ] [ -l log file ]\n"); + (void) fprintf(stderr, "\t\t[ -p pid file ] [ -r broadcast delay ] [ -s status directory ]\n"); + (void) fprintf(stderr, "\t\t[ -t trusted key ] [ -v sys variable ] [ -V default sys variable ]\n"); + exit(2); + } +! optind = 0; /* reset optind to restart getopt_l */ + + if (debug) { + #ifdef NTP_POSIX_SOURCE +--- 375,388 ---- + break; + } + +! if (errflg || ntp_optind != argc) { + (void) fprintf(stderr, "usage: %s [ -abd ] [ -c config_file ] [ -e encryption delay ]\n", progname); + (void) fprintf(stderr, "\t\t[ -f frequency file ] [ -k key file ] [ -l log file ]\n"); + (void) fprintf(stderr, "\t\t[ -p pid file ] [ -r broadcast delay ] [ -s status directory ]\n"); + (void) fprintf(stderr, "\t\t[ -t trusted key ] [ -v sys variable ] [ -V default sys variable ]\n"); + exit(2); + } +! ntp_optind = 0; /* reset ntp_optind to restart ntp_getopt */ + + if (debug) { + #ifdef NTP_POSIX_SOURCE +*************** +*** 430,437 **** + char resolver_name[MAXFILENAME]; + int have_keyfile; + char keyfile[MAXFILENAME]; +! extern int optind; +! extern char *optarg; + extern char *Version; + extern U_LONG info_auth_keyid; + FILEGEN *filegen; +--- 430,437 ---- + char resolver_name[MAXFILENAME]; + int have_keyfile; + char keyfile[MAXFILENAME]; +! extern int ntp_optind; +! extern char *ntp_optarg; + extern char *Version; + extern U_LONG info_auth_keyid; + FILEGEN *filegen; +*************** +*** 461,467 **** + /* + * Decode argument list + */ +! while ((c = getopt_l(argc, argv, xntp_options)) != EOF) { + switch (c) { + case 'a': + proto_config(PROTO_AUTHENTICATE, (LONG)1); +--- 461,467 ---- + /* + * Decode argument list + */ +! while ((c = ntp_getopt(argc, argv, xntp_options)) != EOF) { + switch (c) { + case 'a': + proto_config(PROTO_AUTHENTICATE, (LONG)1); +*************** +*** 470,476 **** + proto_config(PROTO_BROADCLIENT, (LONG)1); + break; + case 'c': +! config_file = optarg; + break; + case 'd': + #ifdef DEBUG +--- 470,476 ---- + proto_config(PROTO_BROADCLIENT, (LONG)1); + break; + case 'c': +! config_file = ntp_optarg; + break; + case 'd': + #ifdef DEBUG +*************** +*** 484,498 **** + do { + l_fp tmp; + +! if (!atolfp(optarg, &tmp)) { + syslog(LOG_ERR, + "command line encryption delay value %s undecodable", +! optarg); + errflg++; + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line encryption delay value %s is unlikely", +! optarg); + errflg++; + } else { + proto_config(PROTO_AUTHDELAY, tmp.l_f); +--- 484,498 ---- + do { + l_fp tmp; + +! if (!atolfp(ntp_optarg, &tmp)) { + syslog(LOG_ERR, + "command line encryption delay value %s undecodable", +! ntp_optarg); + errflg++; + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line encryption delay value %s is unlikely", +! ntp_optarg); + errflg++; + } else { + proto_config(PROTO_AUTHDELAY, tmp.l_f); +*************** +*** 501,537 **** + break; + + case 'f': +! stats_config(STATS_FREQ_FILE, optarg); + break; + + case 'k': +! getauthkeys(optarg); +! if ((int)strlen(optarg) >= MAXFILENAME) { + syslog(LOG_ERR, + "key file name too LONG (>%d, sigh), no name resolution possible", + MAXFILENAME); + } else { + have_keyfile = 1; +! (void)strcpy(keyfile, optarg); + } + break; + + case 'p': +! stats_config(STATS_PID_FILE, optarg); + break; + + case 'r': + do { + l_fp tmp; + +! if (!atolfp(optarg, &tmp)) { + syslog(LOG_ERR, + "command line broadcast delay value %s undecodable", +! optarg); + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line broadcast delay value %s is unlikely", +! optarg); + } else { + proto_config(PROTO_BROADDELAY, tmp.l_f); + } +--- 501,537 ---- + break; + + case 'f': +! stats_config(STATS_FREQ_FILE, ntp_optarg); + break; + + case 'k': +! getauthkeys(ntp_optarg); +! if ((int)strlen(ntp_optarg) >= MAXFILENAME) { + syslog(LOG_ERR, + "key file name too LONG (>%d, sigh), no name resolution possible", + MAXFILENAME); + } else { + have_keyfile = 1; +! (void)strcpy(keyfile, ntp_optarg); + } + break; + + case 'p': +! stats_config(STATS_PID_FILE, ntp_optarg); + break; + + case 'r': + do { + l_fp tmp; + +! if (!atolfp(ntp_optarg, &tmp)) { + syslog(LOG_ERR, + "command line broadcast delay value %s undecodable", +! ntp_optarg); + } else if (tmp.l_ui != 0) { + syslog(LOG_ERR, + "command line broadcast delay value %s is unlikely", +! ntp_optarg); + } else { + proto_config(PROTO_BROADDELAY, tmp.l_f); + } +*************** +*** 539,556 **** + break; + + case 's': +! stats_config(STATS_STATSDIR, optarg); + break; + + case 't': + do { + int tkey; + +! tkey = atoi(optarg); + if (tkey <= 0 || tkey > NTP_MAXKEY) { + syslog(LOG_ERR, + "command line trusted key %s is unlikely", +! optarg); + } else { + authtrust(tkey, (LONG)1); + } +--- 539,556 ---- + break; + + case 's': +! stats_config(STATS_STATSDIR, ntp_optarg); + break; + + case 't': + do { + int tkey; + +! tkey = atoi(ntp_optarg); + if (tkey <= 0 || tkey > NTP_MAXKEY) { + syslog(LOG_ERR, + "command line trusted key %s is unlikely", +! ntp_optarg); + } else { + authtrust(tkey, (LONG)1); + } +*************** +*** 559,565 **** + + case 'v': + case 'V': +! set_sys_var(optarg, strlen(optarg)+1, RW | ((c == 'V') ? DEF : 0)); + break; + + default: +--- 559,565 ---- + + case 'v': + case 'V': +! set_sys_var(ntp_optarg, strlen(ntp_optarg)+1, RW | ((c == 'V') ? DEF : 0)); + break; + + default: +diff -c -r ../yy/xntpd/ntp_control.c ./xntpd/ntp_control.c +*** ../yy/xntpd/ntp_control.c Thu Jan 27 15:03:48 1994 +--- ./xntpd/ntp_control.c Thu Jan 27 19:29:06 1994 +*************** +*** 1848,1854 **** + ctl_sys_num_events = 0; + gotvar += count_var(ext_sys_var); + wants = (u_char *)emalloc(gotvar); +! bzero((char *)wants, gotvar); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +--- 1848,1854 ---- + ctl_sys_num_events = 0; + gotvar += count_var(ext_sys_var); + wants = (u_char *)emalloc(gotvar); +! memset((char *)wants, 0, gotvar); + gotvar = 0; + while ((v = ctl_getitem(sys_var, &valuep)) != 0) { + if (v->flags & EOV) { +*************** +*** 1904,1910 **** + if (res_authokay) + peer->num_events = 0; + wants = (u_char *)emalloc(gotvar); +! bzero((char*)wants, gotvar); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { + if (v->flags & EOV) { +--- 1904,1910 ---- + if (res_authokay) + peer->num_events = 0; + wants = (u_char *)emalloc(gotvar); +! memset((char*)wants, 0, gotvar); + gotvar = 0; + while ((v = ctl_getitem(peer_var, &valuep)) != 0) { + if (v->flags & EOV) { +*************** +*** 2106,2112 **** + rpkt.status = htons(ctlclkstatus(&clock)); + gotvar = CC_MAXCODE+1+count_var(clock.kv_list); + wants = (u_char *)emalloc(gotvar); +! bzero((char*)wants, gotvar); + gotvar = 0; + while ((v = ctl_getitem(clock_var, &valuep)) != 0) { + if (v->flags & EOV) { +--- 2106,2112 ---- + rpkt.status = htons(ctlclkstatus(&clock)); + gotvar = CC_MAXCODE+1+count_var(clock.kv_list); + wants = (u_char *)emalloc(gotvar); +! memset((char*)wants, 0, gotvar); + gotvar = 0; + while ((v = ctl_getitem(clock_var, &valuep)) != 0) { + if (v->flags & EOV) { +*************** +*** 2578,2584 **** + *kv = (struct ctl_var *)emalloc((c+2)*sizeof(struct ctl_var)); + if (k) + { +! bcopy((char *)k, (char *)*kv, sizeof(struct ctl_var)*c); + free((char *)k); + } + +--- 2578,2584 ---- + *kv = (struct ctl_var *)emalloc((c+2)*sizeof(struct ctl_var)); + if (k) + { +! memmove((char *)*kv, (char *)k, sizeof(struct ctl_var)*c); + free((char *)k); + } + +*************** +*** 2621,2627 **** + { + free(k->text); + k->text = (char *)emalloc(size); +! bcopy(data, k->text, size); + k->flags = def; + return; + } +--- 2621,2627 ---- + { + free(k->text); + k->text = (char *)emalloc(size); +! memmove(k->text, data, size); + k->flags = def; + return; + } +*************** +*** 2629,2635 **** + else + { + k->text = (char *)emalloc(size); +! bcopy(data, k->text, size); + k->flags = def; + return; + } +--- 2629,2635 ---- + else + { + k->text = (char *)emalloc(size); +! memmove(k->text, data, size); + k->flags = def; + return; + } +*************** +*** 2637,2643 **** + } + } + t = add_var(kv, size, def); +! bcopy(data, t, size); + } + + void +--- 2637,2643 ---- + } + } + t = add_var(kv, size, def); +! memmove(t, data, size); + } + + void +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.7 b/usr.sbin/xntpd/patches/patch.7 new file mode 100644 index 0000000..682065f --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.7 @@ -0,0 +1,274 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa21105; 28 Jan 94 9:25 EST +Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa08838; + 28 Jan 94 9:20 EST +Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP; + id AA29169 (5.65c-6/7.3v-FAU); Fri, 28 Jan 1994 15:19:56 +0100 +Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP; + id AA11999 (5.65c-6/7.3m-FAU); Fri, 28 Jan 1994 15:19:51 +0100 +From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de> +Message-Id: <199401281419.AA11999@faui43.informatik.uni-erlangen.de> +Subject: Re: Solaribum +To: Paul A Vixie <Paul_Vixie@corpmis.sjc.hw.sony.com> +Date: Fri, 28 Jan 94 14:02:02 MET +Cc: Mills@udel.edu, Frank.Kardel@informatik.uni-erlangen.de, + Piete.Brooks@cl.cam.ac.uk, Paul_Vixie@corpmis.sjc.hw.sony.com +In-Reply-To: <9401272236.AA27835@morality.sjc.hw.sony.com>; from "Paul A Vixie" at Jan 27, 94 2:36 pm +X-Mailer: ELM [version 2.3 PL11] + + +> >memmove() and crumps in loading with an unknown external. If the missing +> >routine is not there in SunOS 4, why not conditionally compile one +> >and be done with it? + +> as i said in earlier mail, there is already a macro for memmove, to define +> it in terms of bcopy, but it is only enabled on systems that don't have a +> native memmove. include/*.h tells the story. + +Ok, in order to cope with the problems (non existent memmove() and +sys header files that use bops) I fixed SUNOS4 and ULTRIX to use the +b-ops (via the NTP_NEED_BOPS define). All other should to my knowledge +use the mem* stuff (I'd rather use either mem* or b* instead of mixtures +of both). + +Now, the following patch should get 3.3y (and 3.3yy) to fly +(=compile) on suns. Functional test have not been done. ULTRIX +has not been tested. + +> there are too many x's and y's now. i'm confused. i promise not to send +> any more patches until the dust clears.. + +With this patch we should get to 3.3yyy which should be the +base for all next efforts (-> and 3.3{x,xx,y,yy} can be deleted). + +May the source be with us: + +diff -c -r ../yy/include/l_stdlib.h ./include/l_stdlib.h +*** ../yy/include/l_stdlib.h Thu Jan 27 15:03:21 1994 +--- ./include/l_stdlib.h Fri Jan 28 12:46:31 1994 +*************** +*** 47,54 **** +--- 47,60 ---- + extern int rand P((void)); + extern int setpgrp P((int, int)); + extern void srand P((unsigned int)); ++ extern void bcopy P((char *, char *, int)); + #endif + ++ #ifndef bzero /* XXX macro prototyping clash */ ++ extern void bzero P((char *, int)); ++ extern int bcmp P((char *, char *, int)); ++ extern void bcopy P((char *, char *, int)); ++ #endif + extern char *mktemp P((char *)); + + extern int tolower P((int)); +*************** +*** 92,102 **** +--- 98,110 ---- + + #ifdef _ntp_string_h + #ifdef NTP_POSIX_SOURCE /* these are builtins */ ++ #ifndef NTP_NEED_BOPS /* but may be emulated by bops */ + extern char *memcpy(); + extern char *memset(); + extern int memcmp(); + #endif + #endif ++ #endif + + #ifdef _sys_socket_h + extern int bind P((int, struct sockaddr *, int)); +*************** +*** 187,192 **** +--- 195,203 ---- + + #ifndef NTP_POSIX_SOURCE + extern int atoi P((char *)); ++ extern void bzero P((char *, int)); ++ extern int bcmp P((char *, char *, int)); ++ extern void bcopy P((char *, char *, int)); + extern int execve P((char *, char **,char **)); + extern int fork P((void)); + extern int getdtablesize P((void)); +diff -c -r ../yy/include/ntp_machine.h ./include/ntp_machine.h +*** ../yy/include/ntp_machine.h Fri Jan 28 13:32:33 1994 +--- ./include/ntp_machine.h Fri Jan 28 12:25:29 1994 +*************** +*** 168,173 **** +--- 168,174 ---- + * Note: posix version has NTP_POSIX_SOURCE and HAVE_SIGNALED_IO + */ + #if defined(SYS_SUNOS4) ++ #define NTP_NEED_BOPS + #define NO_SIGNED_CHAR_DECL + #define HAVE_LIBKVM + #define HAVE_MALLOC_H +*************** +*** 266,271 **** +--- 267,273 ---- + * Note: posix version has NTP_POSIX_SOURCE and HAVE_SIGNALED_IO + */ + #if defined(SYS_ULTRIX) ++ #define NTP_NEED_BOPS + #define S_CHAR_DEFINED + #define HAVE_READKMEM + #define HAVE_BSD_NICE +diff -c -r ../yy/include/ntp_string.h ./include/ntp_string.h +*** ../yy/include/ntp_string.h Thu Jan 27 15:03:24 1994 +--- ./include/ntp_string.h Fri Jan 28 12:36:44 1994 +*************** +*** 5,11 **** + #ifndef _ntp_string_h + #define _ntp_string_h + +! #ifdef NTP_POSIX_SOURCE + + # if defined(HAVE_MEMORY_H) + # include <memory.h> +--- 5,11 ---- + #ifndef _ntp_string_h + #define _ntp_string_h + +! #if defined(NTP_POSIX_SOURCE) + + # if defined(HAVE_MEMORY_H) + # include <memory.h> +*************** +*** 13,29 **** + + # include <string.h> + +! #else /* NTP_POSIX_SOURCE */ + + # include <strings.h> +- + # define strchr(s,c) index(s,c) + # define strrchr(s,c) rindex(s,c) + # define memcmp(a,b,c) bcmp(a,b,c) + # define memmove(t,f,c) bcopy(f,t,c) +! # define memset(a,x,c) if (x == 0x00) bzero(a,c) else ntp_memset((char*)a,x,c) + void ntp_memset P((char *, int, int)); + +! #endif /* NTP_POSIX_SOURCE */ + + #endif /* _ntp_string_h */ +--- 13,35 ---- + + # include <string.h> + +! #else + + # include <strings.h> + # define strchr(s,c) index(s,c) + # define strrchr(s,c) rindex(s,c) ++ # ifndef NTP_NEED_BOPS ++ # define NTP_NEED_BOPS ++ # endif ++ #endif /* NTP_POSIX_SOURCE */ ++ ++ #ifdef NTP_NEED_BOPS ++ + # define memcmp(a,b,c) bcmp(a,b,c) + # define memmove(t,f,c) bcopy(f,t,c) +! # define memset(a,x,c) if (x == 0x00) bzero(a,c); else ntp_memset((char*)a,x,c) + void ntp_memset P((char *, int, int)); + +! #endif /* NTP_NEED_BOPS */ + + #endif /* _ntp_string_h */ +diff -c -r ../yy/lib/machines.c ./lib/machines.c +*** ../yy/lib/machines.c Thu Jan 27 15:03:35 1994 +--- ./lib/machines.c Fri Jan 28 13:55:26 1994 +*************** +*** 31,37 **** + } + #endif + +! #if !defined(NTP_POSIX_SOURCE) + void + ntp_memset(a, x, c) + char *a; +--- 31,37 ---- + } + #endif + +! #if !defined(NTP_POSIX_SOURCE) || defined(NTP_NEED_BOPS) + void + ntp_memset(a, x, c) + char *a; +diff -c -r ../yy/parse/Makefile.tmpl ./parse/Makefile.tmpl +*** ../yy/parse/Makefile.tmpl Fri Nov 26 05:28:30 1993 +--- ./parse/Makefile.tmpl Fri Jan 28 13:47:30 1994 +*************** +*** 92,98 **** + + clean: + -@rm -f $(LIBNAME).a $(KLIBNAME).a *.o *.out *.ln make.log Makefile.bak \ +! lintlib.errs lint.errs genassym assym.s parsestreams parse + -@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl clean + + distclean: clean +--- 92,98 ---- + + clean: + -@rm -f $(LIBNAME).a $(KLIBNAME).a *.o *.out *.ln make.log Makefile.bak \ +! lintlib.errs lint.errs genassym assym.s parsestreams parse parsestreams.o.* + -@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl clean + + distclean: clean +diff -c -r ../yy/parse/parse.c ./parse/parse.c +*** ../yy/parse/parse.c Fri Jan 28 13:32:34 1994 +--- ./parse/parse.c Fri Jan 28 13:08:01 1994 +*************** +*** 29,47 **** + #include "sys/time.h" + #include "sys/errno.h" + + #if defined(PARSESTREAM) && (defined(SYS_SUNOS4) || defined(SYS_SOLARIS)) && defined(STREAM) + /* +! * Sorry, but in SunOS 4.x kernels there are no + * mem* operations. I don't want them - bcopy, bzero + * are fine in the kernel + */ +! #define _ntp_string_h +! extern void bcopy(); +! extern void bzero(); + #else + #define bzero(_X_, _Y_) memset(_X_, 0, _Y_) + #define bcopy(_X_, _Y_, _Z_) memmove(_Y_, _X_, _Z_) + #endif + + #include "ntp_fp.h" + #include "ntp_unixtime.h" +--- 29,53 ---- + #include "sys/time.h" + #include "sys/errno.h" + ++ #include "ntp_machine.h" ++ + #if defined(PARSESTREAM) && (defined(SYS_SUNOS4) || defined(SYS_SOLARIS)) && defined(STREAM) + /* +! * Sorry, but in SunOS 4.x AND Solaris 2.x kernels there are no + * mem* operations. I don't want them - bcopy, bzero + * are fine in the kernel + */ +! #ifndef NTP_NEED_BOPS +! #define NTP_NEED_BOPS +! #endif + #else ++ #ifndef NTP_NEED_BOPS ++ #ifndef bzero + #define bzero(_X_, _Y_) memset(_X_, 0, _Y_) + #define bcopy(_X_, _Y_, _Z_) memmove(_Y_, _X_, _Z_) + #endif ++ #endif ++ #endif + + #include "ntp_fp.h" + #include "ntp_unixtime.h" +-- + Frank Kardel (kardel@informatik.uni-erlangen.de) + All SCSI disks will from now on be required to send an email + notice 24 hours prior to complete hardware failure! + diff --git a/usr.sbin/xntpd/patches/patch.8 b/usr.sbin/xntpd/patches/patch.8 new file mode 100644 index 0000000..52e928c --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.8 @@ -0,0 +1,44 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa21136; 28 Jan 94 9:30 EST +Received: from relay1.uu.net by louie.udel.edu id aa09355; 28 Jan 94 9:29 EST +Received: from outpost.wg.waii.com by relay1.UU.NET with SMTP + (5.61/UUNET-internet-primary) id AAwaur00219; Fri, 28 Jan 94 09:29:28 -0500 +Received: from airgun.wg.waii.com by outpost.wg.waii.com with SMTP id AA18918 + (5.65c/IDA-1.4.4 for <mills@udel.edu>); Fri, 28 Jan 1994 08:29:23 -0600 +Received: from merlin.london.waii.com by airgun.wg.waii.com with SMTP id AA18376 + (5.65c/IDA-1.4.4 for <mills@udel.edu>); Fri, 28 Jan 1994 08:29:16 -0600 +Received: from phoenix.london.waii.com by merlin.london.waii.com with SMTP id AA21698 + (5.65c/IDA-1.4.4 for <mills@udel.edu>); Fri, 28 Jan 1994 14:24:29 GMT +Received: by phoenix.london.waii.com (4.1/SMI-4.1) + id AA21825; Fri, 28 Jan 94 14:29:12 GMT +Date: Fri, 28 Jan 94 14:29:12 GMT +From: Marc Brett <ltso@london.waii.com> +Message-Id: <9401281429.AA21825@phoenix.london.waii.com> +To: mills@udel.edu +Subject: Bug in export version of xntp.3.3c + +Dave, + +The crippled DES routine fails to compile on my machine (SunOS 1.4.3, cc). +It complains about U_LONG being unrecognized. Luckily, the fix is a +one-liner. + +*** authdes.c.export Tue Aug 24 22:26:45 1993 +--- authdes.c Fri Jan 28 12:18:40 1994 +*************** +*** 15,20 **** +--- 15,21 ---- + * to its exportable state, copy this file to authdes.c . + */ + #include <sys/types.h> ++ #include "ntp_stdlib.h" + + /* + * This routine is normally called to compute the key schedule. + + +Regards, + +Marc Brett marc.brett@london.waii.com +Western Geophysical Tel: +44 81 560 3160 + diff --git a/usr.sbin/xntpd/patches/patch.9 b/usr.sbin/xntpd/patches/patch.9 new file mode 100644 index 0000000..76b3309 --- /dev/null +++ b/usr.sbin/xntpd/patches/patch.9 @@ -0,0 +1,83 @@ + +Received: from louie.udel.edu by huey.udel.edu id aa04410; 31 Jan 94 4:58 EST +Received: from gw.home.vix.com by louie.udel.edu id aa00370; 31 Jan 94 4:52 EST +Received: by gw.home.vix.com id AA12643; Mon, 31 Jan 94 01:52:12 -0800 +Message-Id: <9401310952.AA12643@gw.home.vix.com> +X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us +To: Mills@udel.edu +Cc: Frank.Kardel@informatik.uni-erlangen.de, Piete.Brooks@cl.cam.ac.uk +Subject: diffs to yyy to make ultrix/GOES happy +Date: Mon, 31 Jan 94 01:52:11 PST +From: Paul A Vixie <vixie@vix.com> + +diff -r -c2 yyy.ref/adjtime/adjtimed.c xntp3.3yyy/adjtime/adjtimed.c +*** yyy.ref/adjtime/adjtimed.c Thu Jan 27 06:03:11 1994 +--- xntp3.3yyy/adjtime/adjtimed.c Mon Jan 31 01:24:49 1994 +*************** +*** 82,86 **** +--- 82,90 ---- + progname = argv[0]; + ++ #ifdef LOG_LOCAL6 + openlog("adjtimed", LOG_PID, LOG_LOCAL6); ++ #else ++ openlog("adjtimed", LOG_PID); ++ #endif + + while ((ch = ntp_getopt(argc, argv, "hkrvdfp:")) != EOF) { +diff -r -c2 yyy.ref/include/ntp_machine.h xntp3.3yyy/include/ntp_machine.h +*** yyy.ref/include/ntp_machine.h Fri Jan 28 07:26:11 1994 +--- xntp3.3yyy/include/ntp_machine.h Mon Jan 31 01:01:11 1994 +*************** +*** 42,47 **** + + +! WHICH TERMINAL MODEL TO USE - I would assume HAVE_POSIX_TTYS if +! NTP_POSIX_SOURCE was set but cann't. The + posix tty driver is too restrictive on most systems. + It defined if you define STREAMS. +--- 42,47 ---- + + +! WHICH TERMINAL MODEL TO USE - I would assume HAVE_TERMIOS if +! NTP_POSIX_SOURCE was set but can't. The + posix tty driver is too restrictive on most systems. + It defined if you define STREAMS. +*************** +*** 50,54 **** + HAVE_BSD_TTYS - Use BSD stty.h + HAVE_TERMIOS - Use POSIX termios.h +- HAVE_POSIX_TTYS - "struct termios" has c_line defined + + THIS MAKES PORTS TO NEW SYSTEMS EASY - You only have to wory about +--- 50,53 ---- +*************** +*** 268,272 **** + */ + #if defined(SYS_ULTRIX) +- #define NTP_NEED_BOPS + #define S_CHAR_DEFINED + #define HAVE_READKMEM +--- 267,270 ---- +*************** +*** 277,280 **** +--- 275,279 ---- + #define STR_SYSTEM "UNIX/Ultrix" + #endif ++ #define HAVE_TERMIOS + #endif + +*************** +*** 565,568 **** +--- 564,573 ---- + && !defined(HAVE_NO_NICE) + ERROR You_must_define_one_of_the_HAVE_xx_NICE_defines ++ #endif ++ ++ #if !defined(HAVE_SYSV_TTYS) \ ++ && !defined(HAVE_BSD_TTYS) \ ++ && !defined(HAVE_TERMIOS) ++ ERROR no_tty_type_defined + #endif + + |