3033 lines
77 KiB
Groff
3033 lines
77 KiB
Groff
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>
|
|
|