Merge branch 'bu'

This commit is contained in:
Richard P. Curnow 2007-06-26 23:51:18 +01:00
commit b6e40dbde7
3 changed files with 32 additions and 8 deletions

View file

@ -196,6 +196,9 @@ struct NCR_Instance_Record {
/* Maximum allowed stratum */
#define NTP_MAX_STRATUM 15
/* INVALID or Unkown stratum from external server as per the NTP 4 docs */
#define NTP_INVALID_STRATUM 0
/* ================================================== */
static ADF_AuthTable access_auth_table;
@ -539,7 +542,13 @@ transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */
/* Generate transmit packet */
message.lvm = ((leap << 6) &0xc0) | ((version << 3) & 0x38) | (my_mode & 0x07);
message.stratum = our_stratum;
if (our_stratum <= NTP_MAX_STRATUM) {
message.stratum = our_stratum;
} else {
/* (WGU) to handle NTP "Invalid" stratum as per the NTP V4 documents. */
message.stratum = NTP_INVALID_STRATUM;
}
message.poll = my_poll;
message.precision = LCL_GetSysPrecisionAsLog();
@ -983,6 +992,12 @@ receive_packet(NTP_Packet *message, struct timeval *now, NCR_Instance inst, int
test6 = 1; /* Succeeded */
}
/* (WGU) Set stratum to greater than any valid if incoming is 0 */
/* as per the NPT v4 documentation*/
if (message->stratum <= NTP_INVALID_STRATUM) {
message->stratum = NTP_MAX_STRATUM + 1;
}
/* Test 7 checks that the stratum in the packet is appropriate */
if ((message->stratum > REF_GetOurStratum()) ||
(message->stratum > NTP_MAX_STRATUM)) {

View file

@ -174,7 +174,7 @@ static double file_ref_offset, file_rate_ppm;
/* ================================================== */
/* Flag to remember whether to assume the RTC is running on UTC */
static int rtc_on_utc = 0;
static int rtc_on_utc = 1;
/* ================================================== */
@ -226,15 +226,18 @@ accumulate_sample(time_t rtc, struct timeval *sys)
discard_samples(NEW_FIRST_WHEN_FULL);
}
rtc_sec[n_samples] = rtc;
/* Always use most recent sample as reference */
/* use sample only if n_sample is not negative*/
if(n_samples >=0)
{
rtc_ref = rtc;
rtc_sec[n_samples] = rtc;
rtc_trim[n_samples] = 0.0;
system_times[n_samples] = *sys;
++n_samples;
++n_samples_since_regression;
}
++n_samples;
return;
}
@ -742,7 +745,11 @@ handle_initial_trim(void)
run_regression(1, &coefs_valid, &coef_ref_time, &coef_seconds_fast, &coef_gain_rate);
n_samples_since_regression = 0;
n_samples = 0;
/* Set sample number to -1 so the next sample is not used, as it will not yet be corrected for System Trim*/
n_samples = -1;
read_coefs_from_file();
@ -866,6 +873,8 @@ read_from_device(void *any)
int error = 0;
status = read(fd, &data, sizeof(data));
if (operating_mode == OM_NORMAL)
status = read(fd, &data, sizeof(data));
if (status < 0) {
/* This looks like a bad error : the file descriptor was indicating it was
* ready to read but we couldn't read anything. Give up. */

View file

@ -373,9 +373,9 @@ find_best_sample_index(SST_Stats inst, double *times_back)
/* This defines the assumed ratio between the standard deviation of
the samples and the peer distance as measured from the round trip
time. E.g. a value of 4 means that we think the standard deviation
is a quarter of the peer distance */
is four times the fluctuation of the peer distance */
#define SD_TO_DIST_RATIO 8.0
#define SD_TO_DIST_RATIO 1.0
/* ================================================== */
/* This function runs the linear regression operation on the data. It