import CS chrony-4.6.1-1.el9
This commit is contained in:
parent
c1afb8d1ba
commit
d55e5e5a4c
@ -1,2 +1,2 @@
|
||||
4661e5df181a9761b73caeaef2f2ab755bbe086a SOURCES/chrony-4.5.tar.gz
|
||||
e021461c23fe4e5c46fd53c449587d8f6cc217ae SOURCES/clknetsim-5d1dc0.tar.gz
|
||||
35b070fdd446080232844ac9f70f84ca1823206f SOURCES/chrony-4.6.1.tar.gz
|
||||
a3289d3e8688b0818e67d3b7338e8b73501bef1e SOURCES/clknetsim-40bb97.tar.gz
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,2 @@
|
||||
SOURCES/chrony-4.5.tar.gz
|
||||
SOURCES/clknetsim-5d1dc0.tar.gz
|
||||
SOURCES/chrony-4.6.1.tar.gz
|
||||
SOURCES/clknetsim-40bb97.tar.gz
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEjzdcfo0O4SWj071RU34rdvdoDawFAmVvJPkACgkQU34rdvdo
|
||||
DawQjw//Zkq4UTPZDpU/gifjUtE/jpIa6+tyhSFpRI5abNScOPaEa8nZz6Q33/s4
|
||||
qiS9RJh1AA13xnal7bIHsixadON01x91ysW1sbNhFx942SwTpk00wDdLmySqW+u5
|
||||
klrTfGlGRejp7ahasbXx/dXqk3Sz+J19YIvdz2X1o2HaUZwp1SIwq5Y8BYS8iE0a
|
||||
G5ov/ail2965hwSoYWNbR7/UuOTEO3YgRk2YSpKKKGJgL27pAzwGlOVwgP9JLAD0
|
||||
WsGDEpn+EY+4BOkwMyFeACOHyJ+QCcpKXF9B6CGJELyPqTp2uQy+OkaF4VtkGvpp
|
||||
wRs6IhMoHFt5NjvCiBhOMvocKd6JrxDxN84gGhSG6OtSFp8GZoFhTxIp//mnZDoz
|
||||
WPl/Z+n3yABdaG7IWavl6tn2wvipMsgcTJHxRYg6A4d2+mKKy0pRyfLUtGTM9EA/
|
||||
NEhTIHVZZLORNK7zPaB8CkFmmsmDQVhowBjXjFcq2HDNzQawbU5gjWUBEH+4R4bq
|
||||
rb4P9Eg3Kus0fvBxj4z72XkzYGNn951YFhwW26x4w09+J35/1eoshNkBaPfOdsRf
|
||||
Xgb37MmEe5yfU32k27aYtERnH9w/+rOk1RISrVcK0c87uz0RnzPN5HBzc4PnEpx6
|
||||
KQFkFxVaaMeJNc0Ca5/u9aE9nli1DIS8Afo/Z4zQtjVMqLsvecQ=
|
||||
=4/yB
|
||||
-----END PGP SIGNATURE-----
|
||||
16
SOURCES/chrony-4.6.1-tar-gz-asc.txt
Normal file
16
SOURCES/chrony-4.6.1-tar-gz-asc.txt
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEjzdcfo0O4SWj071RU34rdvdoDawFAmcFKp4ACgkQU34rdvdo
|
||||
DazMmxAAlSONiDmb/EpwVBigLlVdtyelr6G/9ISMQv/f3CzNlliZOWBQBYiK8UfL
|
||||
+ohx4uh3R10kWMMJEpeJ7VQMkh3Jn6BKWE3QKQQDKI/Cd39ceeTO57ZZreI3dTRh
|
||||
8w9xxdwYwEobHhabXQ7wCXDIvssyC6w5LXw4dLmo3N1dC7ZNxJhYgmXVScw6RK5m
|
||||
bc5Ch/H9bxD1xZiWflXC2dW57nJumJDnMlRVdYot9P2zD0DrGy3cFmh6w89gip67
|
||||
T2PrhQ9vQUt8zWKEt9CQi0EtDJ8q1B7HKTLSmM6iEGRjphij+2Z8i0EiQRYA+V++
|
||||
ZQVGg+O6MJYuNbPGdwVBZZMVS4wF3mnNkmBk0/tlxNnNH9dqQ1RquRxQCUPDsGwF
|
||||
dZUmptZWctNaM7TfICdnjEWz/7flR52+BMi5VRYvAK9MCqhTCkg5bw53r02wNSTK
|
||||
M2PXMRbGuYUGsPDkXaKHf478uhiZF+3ka6tiomK0RT9ip304qhNxdzhsW942ryH2
|
||||
yUaFFRGpNk+KJI7e7GfmWmRrBhpi4tqsaFQ4dvUXhlSmk4zVbHIzkgj6Ej6pgJrW
|
||||
w3lUOlQ49DfNkUnZIVAFHJ6LAmeejTvMNlq9IKHfuFA18X7yhHQI49SXiOUOhKD2
|
||||
/z6nMP0cjxQ6eij5UupKx/6/IHTIt9uUpTU1taxAsVXKcBemkN8=
|
||||
=/5W0
|
||||
-----END PGP SIGNATURE-----
|
||||
15
SOURCES/chrony-defconfig.patch
Normal file
15
SOURCES/chrony-defconfig.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/examples/chrony.conf.example2 b/examples/chrony.conf.example2
|
||||
index 03e7d47b..bf2bbdda 100644
|
||||
--- a/examples/chrony.conf.example2
|
||||
+++ b/examples/chrony.conf.example2
|
||||
@@ -37,8 +37,8 @@ ntsdumpdir /var/lib/chrony
|
||||
# Insert/delete leap seconds by slewing instead of stepping.
|
||||
#leapsecmode slew
|
||||
|
||||
-# Set the TAI-UTC offset of the system clock.
|
||||
-#leapseclist /usr/share/zoneinfo/leap-seconds.list
|
||||
+# Get TAI-UTC offset and leap seconds from the system tz database.
|
||||
+#leapsectz right/UTC
|
||||
|
||||
# Specify directory for log files.
|
||||
logdir /var/log/chrony
|
||||
@ -1,42 +0,0 @@
|
||||
--- chrony-4.5/doc/chrony.conf.man.in 2023-12-05 14:26:13.000000000 +0100
|
||||
+++ chrony.conf.man.in 2024-07-30 14:17:30.000000000 +0200
|
||||
@@ -908,9 +915,10 @@
|
||||
.RS 4
|
||||
This option indicates that the reference clock keeps time in TAI instead of UTC
|
||||
and that \fBchronyd\fP should correct its offset by the current TAI\-UTC offset. The
|
||||
-\fBleapsectz\fP directive must be used with this option and the
|
||||
-database must be kept up to date in order for this correction to work as
|
||||
-expected. This option does not make sense with PPS refclocks.
|
||||
+\fBleapsectz\fP or \fBleapseclist\fP directive must be
|
||||
+used with this option and the database must be kept up to date in order for
|
||||
+this correction to work as expected. This option does not make sense with PPS
|
||||
+refclocks.
|
||||
.RE
|
||||
.sp
|
||||
\fBlocal\fP
|
||||
@@ -1652,6 +1660,25 @@
|
||||
.if n .RE
|
||||
.RE
|
||||
.sp
|
||||
+\fBleapseclist\fP \fIfile\fP
|
||||
+.RS 4
|
||||
+This directive specifies the path to a file containing a list of leap seconds
|
||||
+and TAI\-UTC offsets in NIST/IERS format. It is recommended to use
|
||||
+the file \fIleap\-seconds.list\fP usually included with the system timezone
|
||||
+database. The behaviour of this directive is otherwise equivalent to
|
||||
+\fBleapsectz\fP.
|
||||
+.sp
|
||||
+An example of this directive is:
|
||||
+.sp
|
||||
+.if n .RS 4
|
||||
+.nf
|
||||
+.fam C
|
||||
+leapseclist /usr/share/zoneinfo/leap\-seconds.list
|
||||
+.fam
|
||||
+.fi
|
||||
+.if n .RE
|
||||
+.RE
|
||||
+.sp
|
||||
\fBmakestep\fP \fIthreshold\fP \fIlimit\fP
|
||||
.RS 4
|
||||
Normally \fBchronyd\fP will cause the system to gradually correct any time offset,
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,291 +0,0 @@
|
||||
commit 78707d0717db7f410b3b1e1d4ae13d5cbf863a5e
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Tue Aug 6 10:45:55 2024 +0200
|
||||
|
||||
test: extend 008-confload test
|
||||
|
||||
diff --git a/test/system/008-confload b/test/system/008-confload
|
||||
index 7e806988..b978c190 100755
|
||||
--- a/test/system/008-confload
|
||||
+++ b/test/system/008-confload
|
||||
@@ -77,7 +77,32 @@ check_chronyc_output "^[^=]*
|
||||
.. 127\.123\.5\.3 *[05] 7 [^^]*
|
||||
.. 127\.123\.5\.6 [^^]*$" || test_fail
|
||||
|
||||
+run_chronyc "reload sources" || test_fail
|
||||
+run_chronyc "reload sources" || test_fail
|
||||
+
|
||||
+rm $TEST_DIR/conf5.d/{3,5,6}.sources
|
||||
+echo "server 127.123.5.7" > $TEST_DIR/conf5.d/7.sources
|
||||
+
|
||||
+run_chronyc "reload sources" || test_fail
|
||||
+
|
||||
+run_chronyc "sources" || test_fail
|
||||
+check_chronyc_output "^[^=]*
|
||||
+=*
|
||||
+.. 127\.123\.1\.1 [^^]*
|
||||
+.. 127\.123\.1\.3 [^^]*
|
||||
+.. 127\.123\.1\.4 [^^]*
|
||||
+.. 127\.123\.3\.1 [^^]*
|
||||
+.. 127\.123\.2\.2 [^^]*
|
||||
+.. 127\.123\.2\.3 [^^]*
|
||||
+.. 127\.123\.4\.4 [^^]*
|
||||
+.. 127\.123\.1\.2 *[05] 6 [^^]*
|
||||
+.. 127\.123\.5\.2 *[05] 5 [^^]*
|
||||
+.. 127\.123\.5\.7 [^^]*$" || test_fail
|
||||
+
|
||||
+run_chronyc "reload sources" || test_fail
|
||||
+
|
||||
stop_chronyd || test_fail
|
||||
-check_chronyd_message_count "Could not add source" 1 1 || test_fail
|
||||
+check_chronyd_message_count "Could not add source.*\.5\.5.*in use" 3 3 || test_fail
|
||||
+check_chronyd_message_count "Could not add source" 3 3 || test_fail
|
||||
|
||||
test_pass
|
||||
|
||||
commit 3cac849bbfdc02625969cb721207d5436dc03ee4
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Tue Aug 6 11:28:26 2024 +0200
|
||||
|
||||
conf: merge ntp_source_ids with ntp_sources
|
||||
|
||||
Keep the configuration IDs of sources loaded from sourcedir in the
|
||||
NTP_Source structure itself to simplify the code.
|
||||
|
||||
(Rebased to 4.5)
|
||||
|
||||
diff --git a/conf.c b/conf.c
|
||||
index 146389aa..dad874b0 100644
|
||||
--- a/conf.c
|
||||
+++ b/conf.c
|
||||
@@ -287,15 +287,14 @@ typedef struct {
|
||||
NTP_Source_Type type;
|
||||
int pool;
|
||||
CPS_NTP_Source params;
|
||||
+ uint32_t conf_id;
|
||||
} NTP_Source;
|
||||
|
||||
/* Array of NTP_Source */
|
||||
static ARR_Instance ntp_sources;
|
||||
/* Array of (char *) */
|
||||
static ARR_Instance ntp_source_dirs;
|
||||
-/* Array of uint32_t corresponding to ntp_sources (for sourcedirs reload) */
|
||||
-static ARR_Instance ntp_source_ids;
|
||||
-/* Flag indicating ntp_sources and ntp_source_ids are used for sourcedirs */
|
||||
+/* Flag indicating ntp_sources is used for sourcedirs after config load */
|
||||
static int conf_ntp_sources_added = 0;
|
||||
|
||||
/* Array of RefclockParameters */
|
||||
@@ -396,7 +395,6 @@ CNF_Initialise(int r, int client_only)
|
||||
init_sources = ARR_CreateInstance(sizeof (IPAddr));
|
||||
ntp_sources = ARR_CreateInstance(sizeof (NTP_Source));
|
||||
ntp_source_dirs = ARR_CreateInstance(sizeof (char *));
|
||||
- ntp_source_ids = ARR_CreateInstance(sizeof (uint32_t));
|
||||
refclock_sources = ARR_CreateInstance(sizeof (RefclockParameters));
|
||||
broadcasts = ARR_CreateInstance(sizeof (NTP_Broadcast_Destination));
|
||||
|
||||
@@ -456,7 +454,6 @@ CNF_Finalise(void)
|
||||
ARR_DestroyInstance(init_sources);
|
||||
ARR_DestroyInstance(ntp_sources);
|
||||
ARR_DestroyInstance(ntp_source_dirs);
|
||||
- ARR_DestroyInstance(ntp_source_ids);
|
||||
ARR_DestroyInstance(refclock_sources);
|
||||
ARR_DestroyInstance(broadcasts);
|
||||
|
||||
@@ -825,6 +822,8 @@ parse_source(char *line, char *type, int fatal)
|
||||
}
|
||||
|
||||
source.params.name = Strdup(source.params.name);
|
||||
+ source.conf_id = 0;
|
||||
+
|
||||
ARR_AppendElement(ntp_sources, &source);
|
||||
}
|
||||
|
||||
@@ -1678,7 +1677,6 @@ reload_source_dirs(void)
|
||||
{
|
||||
NTP_Source *prev_sources, *new_sources, *source;
|
||||
unsigned int i, j, prev_size, new_size, unresolved;
|
||||
- uint32_t *prev_ids, *new_ids;
|
||||
char buf[MAX_LINE_LENGTH];
|
||||
NSR_Status s;
|
||||
int d, pass;
|
||||
@@ -1687,13 +1685,9 @@ reload_source_dirs(void)
|
||||
if (!conf_ntp_sources_added)
|
||||
return;
|
||||
|
||||
- prev_size = ARR_GetSize(ntp_source_ids);
|
||||
- if (ARR_GetSize(ntp_sources) != prev_size)
|
||||
- assert(0);
|
||||
+ prev_size = ARR_GetSize(ntp_sources);
|
||||
|
||||
- /* Save the current sources and their configuration IDs */
|
||||
- prev_ids = MallocArray(uint32_t, prev_size);
|
||||
- memcpy(prev_ids, ARR_GetElements(ntp_source_ids), prev_size * sizeof (prev_ids[0]));
|
||||
+ /* Save the current sources */
|
||||
prev_sources = MallocArray(NTP_Source, prev_size);
|
||||
memcpy(prev_sources, ARR_GetElements(ntp_sources), prev_size * sizeof (prev_sources[0]));
|
||||
|
||||
@@ -1711,8 +1705,6 @@ reload_source_dirs(void)
|
||||
|
||||
new_size = ARR_GetSize(ntp_sources);
|
||||
new_sources = ARR_GetElements(ntp_sources);
|
||||
- ARR_SetSize(ntp_source_ids, new_size);
|
||||
- new_ids = ARR_GetElements(ntp_source_ids);
|
||||
unresolved = 0;
|
||||
|
||||
LOG_SetContext(LOGC_SourceFile);
|
||||
@@ -1728,14 +1720,14 @@ reload_source_dirs(void)
|
||||
|
||||
/* Remove missing sources before adding others to avoid conflicts */
|
||||
if (pass == 0 && d < 0 && prev_sources[i].params.name[0] != '\0') {
|
||||
- NSR_RemoveSourcesById(prev_ids[i]);
|
||||
+ NSR_RemoveSourcesById(prev_sources[i].conf_id);
|
||||
}
|
||||
|
||||
/* Add new sources */
|
||||
if (pass == 1 && d > 0) {
|
||||
source = &new_sources[j];
|
||||
s = NSR_AddSourceByName(source->params.name, source->params.port, source->pool,
|
||||
- source->type, &source->params.params, &new_ids[j]);
|
||||
+ source->type, &source->params.params, &source->conf_id);
|
||||
|
||||
if (s == NSR_UnresolvedName) {
|
||||
unresolved++;
|
||||
@@ -1750,7 +1742,7 @@ reload_source_dirs(void)
|
||||
|
||||
/* Keep unchanged sources */
|
||||
if (pass == 1 && d == 0)
|
||||
- new_ids[j] = prev_ids[i];
|
||||
+ new_sources[j].conf_id = prev_sources[i].conf_id;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1759,7 +1751,6 @@ reload_source_dirs(void)
|
||||
for (i = 0; i < prev_size; i++)
|
||||
Free(prev_sources[i].params.name);
|
||||
Free(prev_sources);
|
||||
- Free(prev_ids);
|
||||
|
||||
if (unresolved > 0)
|
||||
NSR_ResolveSources();
|
||||
@@ -1858,7 +1849,6 @@ CNF_AddSources(void)
|
||||
|
||||
/* The arrays will be used for sourcedir (re)loading */
|
||||
ARR_SetSize(ntp_sources, 0);
|
||||
- ARR_SetSize(ntp_source_ids, 0);
|
||||
conf_ntp_sources_added = 1;
|
||||
|
||||
reload_source_dirs();
|
||||
|
||||
commit 8126dbd2de30957de32ce3e55ce367b7145a4c33
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Tue Aug 6 12:56:39 2024 +0200
|
||||
|
||||
conf: save source status in sourcedir reload
|
||||
|
||||
Save the NSR status when adding a source from a sourcedir and don't
|
||||
hide sources that failed the addition by clearing their name.
|
||||
|
||||
(Rebased to 4.5)
|
||||
|
||||
diff --git a/conf.c b/conf.c
|
||||
index dad874b0..6020e880 100644
|
||||
--- a/conf.c
|
||||
+++ b/conf.c
|
||||
@@ -287,6 +287,7 @@ typedef struct {
|
||||
NTP_Source_Type type;
|
||||
int pool;
|
||||
CPS_NTP_Source params;
|
||||
+ NSR_Status status;
|
||||
uint32_t conf_id;
|
||||
} NTP_Source;
|
||||
|
||||
@@ -822,6 +823,7 @@ parse_source(char *line, char *type, int fatal)
|
||||
}
|
||||
|
||||
source.params.name = Strdup(source.params.name);
|
||||
+ source.status = NSR_NoSuchSource;
|
||||
source.conf_id = 0;
|
||||
|
||||
ARR_AppendElement(ntp_sources, &source);
|
||||
@@ -1719,30 +1721,30 @@ reload_source_dirs(void)
|
||||
d = i < prev_size ? -1 : 1;
|
||||
|
||||
/* Remove missing sources before adding others to avoid conflicts */
|
||||
- if (pass == 0 && d < 0 && prev_sources[i].params.name[0] != '\0') {
|
||||
+ if (pass == 0 && d < 0 && prev_sources[i].status == NSR_Success) {
|
||||
NSR_RemoveSourcesById(prev_sources[i].conf_id);
|
||||
}
|
||||
|
||||
- /* Add new sources */
|
||||
- if (pass == 1 && d > 0) {
|
||||
+ /* Add new sources and sources that could not be added before */
|
||||
+ if (pass == 1 && (d > 0 || (d == 0 && prev_sources[i].status != NSR_Success))) {
|
||||
source = &new_sources[j];
|
||||
s = NSR_AddSourceByName(source->params.name, source->params.port, source->pool,
|
||||
source->type, &source->params.params, &source->conf_id);
|
||||
+ source->status = s;
|
||||
|
||||
if (s == NSR_UnresolvedName) {
|
||||
unresolved++;
|
||||
} else if (s != NSR_Success) {
|
||||
LOG(LOGS_ERR, "Could not add source %s : %s",
|
||||
source->params.name, NSR_StatusToString(s));
|
||||
-
|
||||
- /* Mark the source as not present */
|
||||
- source->params.name[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Keep unchanged sources */
|
||||
- if (pass == 1 && d == 0)
|
||||
+ if (pass == 1 && d == 0) {
|
||||
+ new_sources[j].status = prev_sources[i].status;
|
||||
new_sources[j].conf_id = prev_sources[i].conf_id;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
commit 7cd5d065fc17a0ec871df2ffdc74caf6d16d9f6a
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Tue Aug 6 13:05:26 2024 +0200
|
||||
|
||||
conf: don't repeat error message when adding sourcedir source
|
||||
|
||||
When a source from a configured sourcedir cannot be added (e.g. it is a
|
||||
duplicate of another source), log the error message only on the first
|
||||
attempt adding the source, until the source is removed and added to a
|
||||
sourcedir again.
|
||||
|
||||
This avoids spamming of the system log with error messages if the
|
||||
reload sources command is called frequently (e.g. from a DHCP renewal
|
||||
networking script).
|
||||
|
||||
diff --git a/conf.c b/conf.c
|
||||
index 6020e880..522e235a 100644
|
||||
--- a/conf.c
|
||||
+++ b/conf.c
|
||||
@@ -1734,7 +1734,7 @@ reload_source_dirs(void)
|
||||
|
||||
if (s == NSR_UnresolvedName) {
|
||||
unresolved++;
|
||||
- } else if (s != NSR_Success) {
|
||||
+ } else if (s != NSR_Success && (d > 0 || s != prev_sources[i].status)) {
|
||||
LOG(LOGS_ERR, "Could not add source %s : %s",
|
||||
source->params.name, NSR_StatusToString(s));
|
||||
}
|
||||
diff --git a/test/system/008-confload b/test/system/008-confload
|
||||
index b978c190..b107d709 100755
|
||||
--- a/test/system/008-confload
|
||||
+++ b/test/system/008-confload
|
||||
@@ -102,7 +102,7 @@ check_chronyc_output "^[^=]*
|
||||
run_chronyc "reload sources" || test_fail
|
||||
|
||||
stop_chronyd || test_fail
|
||||
-check_chronyd_message_count "Could not add source.*\.5\.5.*in use" 3 3 || test_fail
|
||||
-check_chronyd_message_count "Could not add source" 3 3 || test_fail
|
||||
+check_chronyd_message_count "Could not add source.*\.5\.5.*in use" 1 1 || test_fail
|
||||
+check_chronyd_message_count "Could not add source" 1 1 || test_fail
|
||||
|
||||
test_pass
|
||||
226
SOURCES/chrony-refclkreach.patch
Normal file
226
SOURCES/chrony-refclkreach.patch
Normal file
@ -0,0 +1,226 @@
|
||||
commit b9b338a8df23927d8104f41ecb21baa3558de0cd
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Thu Oct 31 14:41:19 2024 +0100
|
||||
|
||||
refclock: rework update of reachability
|
||||
|
||||
Update the reachability register of a refclock source by 1 if a valid
|
||||
measurement is received by the drivers between source polls, and not
|
||||
only when it is accumulated to sourcestats, similarly to how
|
||||
reachability works with NTP sources.
|
||||
|
||||
This avoids drops in the reported reachability when a PHC refclock is
|
||||
dropping samples due to significant changes in the measured delay (e.g.
|
||||
due to high PCIe load), or a PPS refclock dropping samples due to failed
|
||||
lock.
|
||||
|
||||
diff --git a/doc/chronyc.adoc b/doc/chronyc.adoc
|
||||
index 935f1da9..dea93c9f 100644
|
||||
--- a/doc/chronyc.adoc
|
||||
+++ b/doc/chronyc.adoc
|
||||
@@ -364,9 +364,12 @@ a measurement is being made every 64 seconds. *chronyd* automatically varies
|
||||
the polling rate in response to prevailing conditions.
|
||||
*Reach*:::
|
||||
This shows the source's reachability register printed as an octal number. The
|
||||
-register has 8 bits and is updated on every received or missed packet from
|
||||
-the source. A value of 377 indicates that a valid reply was received for all
|
||||
-from the last eight transmissions.
|
||||
+register has 8 bits. It is shifted to left by one bit with each poll and it is
|
||||
+updated by 1 when a valid NTP response, or just a sample in case of a reference
|
||||
+clock, is received from the source. A value of 377 indicates that a valid
|
||||
+response or sample was received for all of the last 8 polls. Note that samples
|
||||
+can be dropped if they are not considered good enough for synchronisation, but
|
||||
+the reachability register will still have 1s for their polls.
|
||||
*LastRx*:::
|
||||
This column shows how long ago the last good sample (which is shown in the next
|
||||
column) was received from the source. Measurements that failed some tests are
|
||||
diff --git a/refclock.c b/refclock.c
|
||||
index 22d775a5..d14560fa 100644
|
||||
--- a/refclock.c
|
||||
+++ b/refclock.c
|
||||
@@ -63,6 +63,7 @@ struct RCL_Instance_Record {
|
||||
int driver_poll;
|
||||
int driver_polled;
|
||||
int poll;
|
||||
+ int reached;
|
||||
int leap_status;
|
||||
int local;
|
||||
int pps_forced;
|
||||
@@ -175,6 +176,7 @@ RCL_AddRefclock(RefclockParameters *params)
|
||||
inst->driver_poll = params->driver_poll;
|
||||
inst->poll = params->poll;
|
||||
inst->driver_polled = 0;
|
||||
+ inst->reached = 0;
|
||||
inst->leap_status = LEAP_Normal;
|
||||
inst->local = params->local;
|
||||
inst->pps_forced = params->pps_forced;
|
||||
@@ -665,6 +667,12 @@ RCL_AddCookedPulse(RCL_Instance instance, struct timespec *cooked_time,
|
||||
return 1;
|
||||
}
|
||||
|
||||
+void
|
||||
+RCL_UpdateReachability(RCL_Instance instance)
|
||||
+{
|
||||
+ instance->reached++;
|
||||
+}
|
||||
+
|
||||
double
|
||||
RCL_GetPrecision(RCL_Instance instance)
|
||||
{
|
||||
@@ -792,6 +800,9 @@ poll_timeout(void *arg)
|
||||
if (!(inst->driver->poll && inst->driver_polled < (1 << (inst->poll - inst->driver_poll)))) {
|
||||
inst->driver_polled = 0;
|
||||
|
||||
+ SRC_UpdateReachability(inst->source, inst->reached > 0);
|
||||
+ inst->reached = 0;
|
||||
+
|
||||
if (SPF_GetFilteredSample(inst->filter, &sample)) {
|
||||
double local_freq, local_offset;
|
||||
struct timespec local_ref_time;
|
||||
@@ -807,7 +818,6 @@ poll_timeout(void *arg)
|
||||
inst->leap_status = LEAP_Unsynchronised;
|
||||
}
|
||||
|
||||
- SRC_UpdateReachability(inst->source, 1);
|
||||
SRC_UpdateStatus(inst->source, stratum, inst->leap_status);
|
||||
SRC_AccumulateSample(inst->source, &sample);
|
||||
SRC_SelectSource(inst->source);
|
||||
@@ -816,8 +826,6 @@ poll_timeout(void *arg)
|
||||
follow_local(inst, &local_ref_time, local_freq, local_offset);
|
||||
|
||||
log_sample(inst, &sample.time, 1, 0, 0.0, sample.offset, sample.peer_dispersion);
|
||||
- } else {
|
||||
- SRC_UpdateReachability(inst->source, 0);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/refclock.h b/refclock.h
|
||||
index 40c852de..5fdbf9c7 100644
|
||||
--- a/refclock.h
|
||||
+++ b/refclock.h
|
||||
@@ -81,6 +81,7 @@ extern int RCL_AddSample(RCL_Instance instance, struct timespec *sample_time,
|
||||
extern int RCL_AddPulse(RCL_Instance instance, struct timespec *pulse_time, double second);
|
||||
extern int RCL_AddCookedPulse(RCL_Instance instance, struct timespec *cooked_time,
|
||||
double second, double dispersion, double raw_correction);
|
||||
+extern void RCL_UpdateReachability(RCL_Instance instance);
|
||||
extern double RCL_GetPrecision(RCL_Instance instance);
|
||||
extern int RCL_GetDriverPoll(RCL_Instance instance);
|
||||
|
||||
diff --git a/refclock_phc.c b/refclock_phc.c
|
||||
index e12f2258..6c0914f6 100644
|
||||
--- a/refclock_phc.c
|
||||
+++ b/refclock_phc.c
|
||||
@@ -154,6 +154,8 @@ static void process_ext_pulse(RCL_Instance instance, struct timespec *phc_ts)
|
||||
}
|
||||
phc->last_extts = *phc_ts;
|
||||
|
||||
+ RCL_UpdateReachability(instance);
|
||||
+
|
||||
if (!HCL_CookTime(phc->clock, phc_ts, &local_ts, &local_err))
|
||||
return;
|
||||
|
||||
@@ -204,6 +206,9 @@ static int phc_poll(RCL_Instance instance)
|
||||
if (n_readings < 1)
|
||||
return 0;
|
||||
|
||||
+ if (!phc->extpps)
|
||||
+ RCL_UpdateReachability(instance);
|
||||
+
|
||||
if (!HCL_ProcessReadings(phc->clock, n_readings, readings, &phc_ts, &sys_ts, &phc_err))
|
||||
return 0;
|
||||
|
||||
diff --git a/refclock_pps.c b/refclock_pps.c
|
||||
index 880c13fc..f00b7ccb 100644
|
||||
--- a/refclock_pps.c
|
||||
+++ b/refclock_pps.c
|
||||
@@ -143,6 +143,8 @@ static int pps_poll(RCL_Instance instance)
|
||||
|
||||
pps->last_seq = seq;
|
||||
|
||||
+ RCL_UpdateReachability(instance);
|
||||
+
|
||||
return RCL_AddPulse(instance, &ts, 1.0e-9 * ts.tv_nsec);
|
||||
}
|
||||
|
||||
diff --git a/refclock_shm.c b/refclock_shm.c
|
||||
index ee13e871..22e51820 100644
|
||||
--- a/refclock_shm.c
|
||||
+++ b/refclock_shm.c
|
||||
@@ -109,6 +109,8 @@ static int shm_poll(RCL_Instance instance)
|
||||
|
||||
shm->valid = 0;
|
||||
|
||||
+ RCL_UpdateReachability(instance);
|
||||
+
|
||||
receive_ts.tv_sec = t.receiveTimeStampSec;
|
||||
clock_ts.tv_sec = t.clockTimeStampSec;
|
||||
|
||||
diff --git a/refclock_sock.c b/refclock_sock.c
|
||||
index 2da57ef5..49cf3559 100644
|
||||
--- a/refclock_sock.c
|
||||
+++ b/refclock_sock.c
|
||||
@@ -129,6 +129,8 @@ static void read_sample(int sockfd, int event, void *anything)
|
||||
UTI_TimevalToTimespec(&sample.tv, &sys_ts);
|
||||
UTI_NormaliseTimespec(&sys_ts);
|
||||
|
||||
+ RCL_UpdateReachability(instance);
|
||||
+
|
||||
if (!UTI_IsTimeOffsetSane(&sys_ts, sample.offset))
|
||||
return;
|
||||
|
||||
diff --git a/test/simulation/106-refclock b/test/simulation/106-refclock
|
||||
index dedab9b8..3793bd86 100755
|
||||
--- a/test/simulation/106-refclock
|
||||
+++ b/test/simulation/106-refclock
|
||||
@@ -114,6 +114,32 @@ Root delay : 0\.000000001 seconds
|
||||
rm -f tmp/refclocks.log
|
||||
fi
|
||||
|
||||
+export CLKNETSIM_PHC_JITTER_OFF=$[2 * 25 * 492]
|
||||
+export CLKNETSIM_PHC_JITTER_ON=$[2 * 25 * 8]
|
||||
+export CLKNETSIM_PHC_JITTER=1e-6
|
||||
+refclock_offset=0.0
|
||||
+refclock_jitter=1e-9
|
||||
+min_sync_time=5
|
||||
+max_sync_time=7
|
||||
+time_max_limit=1e-7
|
||||
+time_rms_limit=1e-8
|
||||
+client_conf="refclock PHC /dev/ptp0:nocrossts poll 0
|
||||
+logdir tmp
|
||||
+log refclocks"
|
||||
+chronyc_start=500
|
||||
+chronyc_conf="sources"
|
||||
+
|
||||
+run_test || test_fail
|
||||
+check_chronyd_exit || test_fail
|
||||
+check_source_selection || test_fail
|
||||
+check_sync || test_fail
|
||||
+check_chronyc_output "^MS.*
|
||||
+=*
|
||||
+#\* PHC0 0 0 377 8 .*$" || test_fail
|
||||
+
|
||||
+unset CLKNETSIM_PHC_JITTER_OFF
|
||||
+unset CLKNETSIM_PHC_JITTER_ON
|
||||
+export CLKNETSIM_PHC_JITTER=1e-7
|
||||
refclock_offset="(+ 0.399 (sum 1e-3))"
|
||||
refclock_jitter=1e-6
|
||||
servers=1
|
||||
diff -up chrony/doc/chronyc.man.orig chrony/doc/chronyc.man
|
||||
--- chrony/doc/chronyc.man.in.orig 2024-11-06 12:07:50.555216174 +0100
|
||||
+++ chrony/doc/chronyc.man.in 2024-11-06 12:07:58.131217759 +0100
|
||||
@@ -535,9 +535,12 @@ the polling rate in response to prevaili
|
||||
\fBReach\fP
|
||||
.RS 4
|
||||
This shows the source\(cqs reachability register printed as an octal number. The
|
||||
-register has 8 bits and is updated on every received or missed packet from
|
||||
-the source. A value of 377 indicates that a valid reply was received for all
|
||||
-from the last eight transmissions.
|
||||
+register has 8 bits. It is shifted to left by one bit with each poll and it is
|
||||
+updated by 1 when a valid NTP response, or just a sample in case of a reference
|
||||
+clock, is received from the source. A value of 377 indicates that a valid
|
||||
+response or sample was received for all of the last 8 polls. Note that samples
|
||||
+can be dropped if they are not considered good enough for synchronisation, but
|
||||
+the reachability register will still have 1s for their polls.
|
||||
.RE
|
||||
.sp
|
||||
\fBLastRx\fP
|
||||
@ -1,86 +0,0 @@
|
||||
commit f49be7f06343ee27fff2950937d7f6742f53976f
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Tue Mar 12 14:30:27 2024 +0100
|
||||
|
||||
conf: don't load sourcedir during initstepslew and RTC init
|
||||
|
||||
If the reload sources command was received in the chronyd start-up
|
||||
sequence with initstepslew and/or RTC init (-s option), the sources
|
||||
loaded from sourcedirs caused a crash due to failed assertion after
|
||||
adding sources specified in the config.
|
||||
|
||||
Ignore the reload sources command until chronyd enters the normal
|
||||
operation mode.
|
||||
|
||||
Fixes: 519796de3756 ("conf: add sourcedirs directive")
|
||||
|
||||
diff --git a/conf.c b/conf.c
|
||||
index 6eae11c9..8849bdce 100644
|
||||
--- a/conf.c
|
||||
+++ b/conf.c
|
||||
@@ -298,6 +298,8 @@ static ARR_Instance ntp_sources;
|
||||
static ARR_Instance ntp_source_dirs;
|
||||
/* Array of uint32_t corresponding to ntp_sources (for sourcedirs reload) */
|
||||
static ARR_Instance ntp_source_ids;
|
||||
+/* Flag indicating ntp_sources and ntp_source_ids are used for sourcedirs */
|
||||
+static int conf_ntp_sources_added = 0;
|
||||
|
||||
/* Array of RefclockParameters */
|
||||
static ARR_Instance refclock_sources;
|
||||
@@ -1689,8 +1691,12 @@ reload_source_dirs(void)
|
||||
NSR_Status s;
|
||||
int d, pass;
|
||||
|
||||
+ /* Ignore reload command before adding configured sources */
|
||||
+ if (!conf_ntp_sources_added)
|
||||
+ return;
|
||||
+
|
||||
prev_size = ARR_GetSize(ntp_source_ids);
|
||||
- if (prev_size > 0 && ARR_GetSize(ntp_sources) != prev_size)
|
||||
+ if (ARR_GetSize(ntp_sources) != prev_size)
|
||||
assert(0);
|
||||
|
||||
/* Save the current sources and their configuration IDs */
|
||||
@@ -1859,7 +1865,10 @@ CNF_AddSources(void)
|
||||
Free(source->params.name);
|
||||
}
|
||||
|
||||
+ /* The arrays will be used for sourcedir (re)loading */
|
||||
ARR_SetSize(ntp_sources, 0);
|
||||
+ ARR_SetSize(ntp_source_ids, 0);
|
||||
+ conf_ntp_sources_added = 1;
|
||||
|
||||
reload_source_dirs();
|
||||
}
|
||||
diff --git a/test/simulation/203-initreload b/test/simulation/203-initreload
|
||||
new file mode 100755
|
||||
index 00000000..cf7924b8
|
||||
--- /dev/null
|
||||
+++ b/test/simulation/203-initreload
|
||||
@@ -0,0 +1,26 @@
|
||||
+#!/usr/bin/env bash
|
||||
+
|
||||
+. ./test.common
|
||||
+
|
||||
+check_config_h 'FEAT_CMDMON 1' || test_skip
|
||||
+
|
||||
+# Test fix "conf: don't load sourcedir during initstepslew and RTC init"
|
||||
+
|
||||
+test_start "reload during initstepslew"
|
||||
+
|
||||
+client_conf="initstepslew 5 192.168.123.1
|
||||
+sourcedir tmp"
|
||||
+client_server_conf="#"
|
||||
+chronyc_conf="reload sources"
|
||||
+chronyc_start=4
|
||||
+
|
||||
+echo 'server 192.168.123.1' > tmp/sources.sources
|
||||
+
|
||||
+run_test || test_fail
|
||||
+check_chronyd_exit || test_fail
|
||||
+check_source_selection || test_fail
|
||||
+check_sync || test_fail
|
||||
+
|
||||
+check_log_messages "Added source 192\.168\.123\.1" 1 1 || test_fail
|
||||
+
|
||||
+test_pass
|
||||
@ -1,39 +0,0 @@
|
||||
commit e11b518a1ffa704986fb1f1835c425844ba248ef
|
||||
Author: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Mon Jan 8 11:35:56 2024 +0100
|
||||
|
||||
ntp: fix authenticated requests in serverstats
|
||||
|
||||
Fix the CLG_UpdateNtpStats() call to count requests passing the
|
||||
authentication check instead of requests triggering a KoD response
|
||||
(i.e. NTS NAK).
|
||||
|
||||
diff --git a/ntp_core.c b/ntp_core.c
|
||||
index 023e60b2..35801744 100644
|
||||
--- a/ntp_core.c
|
||||
+++ b/ntp_core.c
|
||||
@@ -2736,7 +2736,7 @@ NCR_ProcessRxUnknown(NTP_Remote_Address *remote_addr, NTP_Local_Address *local_a
|
||||
CLG_DisableNtpTimestamps(&ntp_rx);
|
||||
}
|
||||
|
||||
- CLG_UpdateNtpStats(kod != 0 && info.auth.mode != NTP_AUTH_NONE &&
|
||||
+ CLG_UpdateNtpStats(kod == 0 && info.auth.mode != NTP_AUTH_NONE &&
|
||||
info.auth.mode != NTP_AUTH_MSSNTP,
|
||||
rx_ts->source, interleaved ? tx_ts->source : NTP_TS_DAEMON);
|
||||
|
||||
diff --git a/test/system/010-nts b/test/system/010-nts
|
||||
index 8d92bbc8..b215efa3 100755
|
||||
--- a/test/system/010-nts
|
||||
+++ b/test/system/010-nts
|
||||
@@ -45,6 +45,11 @@ check_chronyc_output "^Name/IP address Mode KeyID Type KLen Last Atm
|
||||
=========================================================================
|
||||
127\.0\.0\.1 NTS 1 (30|15) (128|256) [0-9] 0 0 [78] ( 64|100)$" || test_fail
|
||||
|
||||
+run_chronyc "serverstats" || test_fail
|
||||
+check_chronyc_output "NTS-KE connections accepted: 1
|
||||
+NTS-KE connections dropped : 0
|
||||
+Authenticated NTP packets : [1-9][0-9]*" || test_fail
|
||||
+
|
||||
stop_chronyd || test_fail
|
||||
check_chronyd_messages || test_fail
|
||||
check_chronyd_files || test_fail
|
||||
@ -1,5 +1,5 @@
|
||||
%global _hardened_build 1
|
||||
%global clknetsim_ver 5d1dc0
|
||||
%global clknetsim_ver 40bb97
|
||||
%bcond_without debug
|
||||
%bcond_without nts
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
%endif
|
||||
|
||||
Name: chrony
|
||||
Version: 4.5
|
||||
Release: 3%{?dist}
|
||||
Version: 4.6.1
|
||||
Release: 1%{?dist}
|
||||
Summary: An NTP client/server
|
||||
|
||||
License: GPLv2
|
||||
@ -29,16 +29,10 @@ Patch1: chrony-nm-dispatcher-dhcp.patch
|
||||
Patch2: chrony-keys.patch
|
||||
# revert some hardening options in service files
|
||||
Patch3: chrony-services.patch
|
||||
# fix serverstats to correctly count authenticated packets
|
||||
Patch4: chrony-serverstats.patch
|
||||
# fix crash on reload command during start
|
||||
Patch5: chrony-reload.patch
|
||||
# don't repeat error log messages when reloading sourcedir
|
||||
Patch6: chrony-logreload.patch
|
||||
# add support for leap-seconds.list file
|
||||
Patch7: chrony-leaplist.patch
|
||||
# update asciidoctor-generated man page
|
||||
Patch8: chrony-leaplist-man.patch
|
||||
# revert upstream changes in packaged configuration examples
|
||||
Patch4: chrony-defconfig.patch
|
||||
# keep PHC refclock reachable when dropping samples due to high delay
|
||||
Patch5: chrony-refclkreach.patch
|
||||
|
||||
BuildRequires: gnutls-devel libcap-devel libedit-devel pps-tools-devel
|
||||
BuildRequires: gcc gcc-c++ make bison systemd gnupg2
|
||||
@ -72,11 +66,8 @@ service to other computers in the network.
|
||||
%patch1 -p1 -b .nm-dispatcher-dhcp
|
||||
%patch2 -p1 -b .keys
|
||||
%patch3 -p1 -b .services
|
||||
%patch4 -p1 -b .serverstats
|
||||
%patch4 -p1 -b .defconfig
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
|
||||
%{?gitpatch: echo %{version}-%{gitpatch} > version.txt}
|
||||
|
||||
@ -229,6 +220,14 @@ fi
|
||||
%dir %attr(750,chrony,chrony) %{_localstatedir}/log/chrony
|
||||
|
||||
%changelog
|
||||
* Wed Nov 06 2024 Miroslav Lichvar <mlichvar@redhat.com> 4.6.1-1
|
||||
- update to 4.6.1 (RHEL-61877)
|
||||
- keep PHC refclock reachable when dropping samples due to high delay
|
||||
(RHEL-65421)
|
||||
|
||||
* Thu Sep 05 2024 Miroslav Lichvar <mlichvar@redhat.com> 4.6-1
|
||||
- update to 4.6 (RHEL-56964)
|
||||
|
||||
* Thu Aug 08 2024 Miroslav Lichvar <mlichvar@redhat.com> 4.5-3
|
||||
- don't repeat error log messages when reloading sourcedir (RHEL-51786)
|
||||
- add support for leap-seconds.list file (RHEL-53484)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user