From b1cbf2c14a2d0064e8d1fe457c8d6bfac595dac6 Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Tue, 17 May 2016 07:57:54 -0500 Subject: [PATCH] experimental time sync bits, see #25 --- compat/adjfreq_freebsd.c | 5 ++++- compat/adjfreq_linux.c | 5 ++++- compat/adjfreq_netbsd.c | 5 ++++- compat/adjfreq_solaris.c | 10 +++++++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/compat/adjfreq_freebsd.c b/compat/adjfreq_freebsd.c index 8011dad..adadee3 100644 --- a/compat/adjfreq_freebsd.c +++ b/compat/adjfreq_freebsd.c @@ -68,7 +68,10 @@ update_time_sync_status(int synced) struct timex txc = { 0 }; txc.modes = MOD_STATUS; - if (!synced) + if (synced) { + txc.modes |= MOD_MAXERROR; + txc.maxerror = 0; + } else txc.status = STA_UNSYNC; if (ntp_adjtime(&txc) == -1) log_warn("ntp_adjtime (3) failed"); diff --git a/compat/adjfreq_linux.c b/compat/adjfreq_linux.c index 217b23a..0d72e5b 100644 --- a/compat/adjfreq_linux.c +++ b/compat/adjfreq_linux.c @@ -68,7 +68,10 @@ update_time_sync_status(int synced) struct timex txc = { 0 }; txc.modes = MOD_STATUS; - if (!synced) + if (synced) { + txc.modes |= MOD_MAXERROR; + txc.maxerror = 0; + } else txc.status = STA_UNSYNC; if (adjtimex(&txc) == -1) log_warn("ntp_adjtime (3) failed"); diff --git a/compat/adjfreq_netbsd.c b/compat/adjfreq_netbsd.c index f533966..a07e358 100644 --- a/compat/adjfreq_netbsd.c +++ b/compat/adjfreq_netbsd.c @@ -69,7 +69,10 @@ update_time_sync_status(int synced) struct timex txc = { 0 }; txc.modes = MOD_STATUS; - if (!synced) + if (synced) { + txc.modes |= MOD_MAXERROR; + txc.maxerror = 0; + } else txc.status = STA_UNSYNC; if (ntp_adjtime(&txc) == -1) log_warn("ntp_adjtime (3) failed"); diff --git a/compat/adjfreq_solaris.c b/compat/adjfreq_solaris.c index 8011dad..a1c0378 100644 --- a/compat/adjfreq_solaris.c +++ b/compat/adjfreq_solaris.c @@ -68,8 +68,16 @@ update_time_sync_status(int synced) struct timex txc = { 0 }; txc.modes = MOD_STATUS; - if (!synced) + if (synced) { + txc.modes |= MOD_MAXERROR; + txc.maxerror = 0; + } else txc.status = STA_UNSYNC; + /* + * Cargo-cult MOD_TIMECONST value from chrony for a Solaris kernel + * quirk. The kernel possibly always checks this constant. + */ + txc.constant = 10; if (ntp_adjtime(&txc) == -1) log_warn("ntp_adjtime (3) failed"); return;