Advanced NTP client and server
Find a file
2023-12-05 14:22:10 +01:00
contrib contrib: replace tuxfamily with chrony-project 2023-08-01 12:11:27 +02:00
doc update copyright years 2023-12-05 14:22:10 +01:00
examples doc: replace foobar naming in examples 2023-11-22 11:56:15 +01:00
test update copyright years 2023-12-05 14:22:10 +01:00
.gitignore git: update .gitignore 2018-09-12 17:16:33 +02:00
addressing.h addressing: introduce identifiers for unresolved addresses 2020-02-19 11:37:15 +01:00
addrfilt.c addrfilt: explicitly handle unexpected addresses 2020-02-18 16:01:25 +01:00
addrfilt.h ntp: open server socket only when access is allowed 2015-01-06 16:35:12 +01:00
array.c array: add function for removing elements 2023-03-02 10:41:28 +01:00
array.h array: add function for removing elements 2023-03-02 10:41:28 +01:00
candm.h ntp: add client support for network correction 2023-09-26 15:14:13 +02:00
client.c ntp: add client support for network correction 2023-09-26 15:14:13 +02:00
clientlog.c clientlog: extend serverstats counters to 64 bits 2023-03-30 15:17:52 +02:00
clientlog.h clientlog: count RX and TX timestamps for each source 2023-03-22 09:42:35 +01:00
cmac.h cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
cmac_gnutls.c cmac: add gnutls support 2021-09-02 16:10:09 +02:00
cmac_nettle.c cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
cmdmon.c ntp: add client support for network correction 2023-09-26 15:14:13 +02:00
cmdmon.h socket: enable only specified IP families 2020-06-17 15:24:55 +02:00
cmdparse.c ntp: add client support for network correction 2023-09-26 15:14:13 +02:00
cmdparse.h cmdparse: add functions for parsing refclock refid and select options 2022-12-14 17:04:23 +01:00
conf.c conf: improve log message for failed additions in sources reload 2023-09-12 08:11:25 +02:00
conf.h ntp: refresh IP addresses periodically 2023-06-21 11:28:42 +02:00
configure configure: prefer gnutls over nss and tomcrypt for hashing 2023-09-12 10:36:23 +02:00
COPYING Update COPYING and FSF address 2009-10-28 17:53:33 +01:00
getdate.h Update COPYING and FSF address 2009-10-28 17:53:33 +01:00
getdate.y getdate: fix various warnings which will be errors with clang-16 2022-11-09 09:17:14 +01:00
hash.h hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hash_gnutls.c hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hash_intmd5.c hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hash_nettle.c hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hash_nss.c hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hash_tomcrypt.c hash: allow non-security MD5 use in FIPS mode 2021-09-02 15:17:08 +02:00
hwclock.c update copyright years 2022-08-29 15:04:33 +02:00
hwclock.h hwclock: refactor processing of PHC readings 2022-06-09 12:04:20 +02:00
keys.c keys+nts: warn if loading world-readable/writable key 2023-01-19 16:39:40 +01:00
keys.h cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
local.c local: cancel remaining correction after external step 2022-05-16 16:28:36 +02:00
local.h reference: allow clock adjustments without updating reference 2022-02-23 14:43:39 +01:00
localp.h local: add support for setting TAI-UTC offset 2017-06-30 13:43:35 +02:00
logging.c logging: move severity_chars to fix compiler warning 2023-11-08 15:09:03 +01:00
logging.h logging: support context-specific severity 2022-11-16 16:57:49 +01:00
main.c socket: add support for systemd sockets 2023-11-13 17:05:26 +01:00
main.h Remove CVS headers 2011-01-28 12:56:09 +01:00
make_release examples: drop chrony.spec 2018-09-12 11:38:10 +02:00
Makefile.in makefile: compile getdate.o with -fwrapv option 2023-07-18 14:52:55 +02:00
manual.c local: don't remove handlers in finalization 2020-05-21 12:42:18 +02:00
manual.h cmdmon: report offset after manual timestamp as float 2017-07-25 17:40:35 +02:00
md5.c md5: fix old-style function definitions 2023-04-17 11:40:18 +02:00
md5.h Cleanup including of system headers 2013-06-14 13:41:16 +02:00
memory.c memory: use free() instead of realloc() for size 0 2023-06-08 14:31:52 +02:00
memory.h memory: add missing include 2018-08-03 17:21:02 +02:00
nameserv.c nameserv: avoid sockaddr_in6 with disabled IPv6 support 2021-04-22 10:20:31 +02:00
nameserv.h nameserv: return at most 16 addresses from DNS_Name2IPAddress() 2016-01-13 11:25:26 +01:00
nameserv_async.c nameserv: allow concurrent asynchronous requests 2020-03-05 16:02:15 +01:00
nameserv_async.h stubs: don't call DNS_Name2IPAddress handler directly 2015-09-29 18:06:33 +02:00
NEWS doc: update NEWS 2023-11-22 13:53:23 +01:00
ntp.h ntp: add extension field to provide network correction 2023-09-26 15:14:13 +02:00
ntp_auth.c ntp: move initial packet parsing from ntp_auth to ntp_core 2021-11-16 10:00:31 +01:00
ntp_auth.h ntp: move initial packet parsing from ntp_auth to ntp_core 2021-11-16 10:00:31 +01:00
ntp_core.c ntp: allow reusing timestamps of unused samples 2023-11-21 12:38:41 +01:00
ntp_core.h ntp: extend local timestamp for PTP correction 2023-09-26 15:10:19 +02:00
ntp_ext.c update copyright years 2020-09-16 12:09:52 +02:00
ntp_ext.h ntp: add functions for adding extension fields 2020-03-05 16:02:15 +01:00
ntp_io.c ntp: save PTP correction from NTP-over-PTP messages 2023-09-26 15:14:13 +02:00
ntp_io.h ntp: save PTP correction from NTP-over-PTP messages 2023-09-26 15:14:13 +02:00
ntp_io_linux.c ntp: initialize network correction of transmitted packets 2023-11-02 12:53:00 +01:00
ntp_io_linux.h ntp: don't require previous HW TX timestamp to wait for another 2023-08-08 16:06:58 +02:00
ntp_signd.c ntp: drop precompensation of TX timestamp 2020-07-09 14:46:57 +02:00
ntp_signd.h ntp: drop precompensation of TX timestamp 2020-07-09 14:46:57 +02:00
ntp_sources.c conf: improve log message for failed additions in sources reload 2023-09-12 08:11:25 +02:00
ntp_sources.h conf: improve log message for failed additions in sources reload 2023-09-12 08:11:25 +02:00
nts_ke.h nts: update NTS-KE port number 2020-06-17 15:59:18 +02:00
nts_ke_client.c nts: add client support for authentication with AES-128-GCM-SIV 2022-10-19 15:50:39 +02:00
nts_ke_client.h nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01:00
nts_ke_server.c nts: close reusable sockets in helper process 2023-11-21 12:38:41 +01:00
nts_ke_server.h nts: improve NTS-KE server/client code 2020-07-16 16:02:08 +02:00
nts_ke_session.c keys+nts: warn if loading world-readable/writable key 2023-01-19 16:39:40 +01:00
nts_ke_session.h nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01:00
nts_ntp.h ntp: move initial packet parsing from ntp_auth to ntp_core 2021-11-16 10:00:31 +01:00
nts_ntp_auth.c nts: fix number of extension fields after failed encryption 2022-10-19 15:50:39 +02:00
nts_ntp_auth.h nts: add support for NTP authenticator field using AES-GCM-SIV 2022-10-19 15:50:39 +02:00
nts_ntp_client.c nts: don't load zero-length keys with unsupported algorithm 2023-05-29 16:08:13 +02:00
nts_ntp_client.h nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01:00
nts_ntp_server.c update copyright years 2023-07-20 12:57:33 +02:00
nts_ntp_server.h nts: add NTS-NTP server and client 2020-03-05 16:02:15 +01:00
pktlength.c cmdmon: add timestamp counters to serverstats report 2023-03-22 10:47:22 +01:00
pktlength.h cmdmon: make length of manual list constant 2018-03-06 13:47:25 +01:00
privops.c util: reset GetRandom functions in helpers after fork 2021-11-24 11:17:24 +01:00
privops.h privops: separate res_init() call 2017-03-10 16:51:02 +01:00
ptp.h ntp: increment sequence id in PTP messages 2023-03-07 17:00:08 +01:00
quantiles.c quantiles: add function to get minimum k 2022-07-21 15:33:35 +02:00
quantiles.h quantiles: add function to get minimum k 2022-07-21 15:33:35 +02:00
README doc: update README 2023-11-22 11:56:16 +01:00
refclock.c update copyright years 2022-08-29 15:04:33 +02:00
refclock.h refclock: improve precision with large offset 2022-02-23 14:43:39 +01:00
refclock_phc.c update copyright years 2023-07-20 12:57:33 +02:00
refclock_pps.c refclock: drop return after LOG_FATAL 2021-04-12 09:24:07 +02:00
refclock_shm.c refclock: improve precision with large offset 2022-02-23 14:43:39 +01:00
refclock_sock.c refclock: fix preprocessor conditional 2023-01-19 11:51:41 +01:00
reference.c log more changes made by chronyc commands 2022-12-01 16:58:23 +01:00
reference.h reference: allow clock adjustments without updating reference 2022-02-23 14:43:39 +01:00
regress.c update copyright years 2017-08-28 14:38:23 +02:00
regress.h regress: provide function to find median 2017-06-27 15:29:01 +02:00
reports.h clientlog: extend serverstats counters to 64 bits 2023-03-30 15:17:52 +02:00
rtc.c rtc: log error message when driver initialisation fails 2020-12-15 10:49:07 +01:00
rtc.h rtc: move preinit call to RTC_Initialise() 2014-08-19 10:46:32 +02:00
rtc_linux.c rtc: don't drop first sample after initial trim 2021-12-01 09:22:26 +01:00
rtc_linux.h rtc: restore time from driftfile if later than RTC time 2015-10-06 15:52:36 +02:00
samplefilt.c samplefilt: add debug message for selected samples 2022-07-21 14:17:22 +02:00
samplefilt.h samplefilt: add function to get maximum number of samples 2022-07-21 14:17:22 +02:00
sched.c sched: reset timer queue in finalization 2023-06-19 16:15:07 +02:00
sched.h ntp: add maximum PHC poll interval 2023-03-22 09:13:53 +01:00
siv.h siv: add functions to return min and max nonce length 2022-10-19 15:50:39 +02:00
siv_gnutls.c update copyright years 2023-12-05 14:22:10 +01:00
siv_nettle.c update copyright years 2023-07-20 12:57:33 +02:00
siv_nettle_int.c siv: add internal implementation based on Nettle 2020-03-05 16:02:15 +01:00
smooth.c log more changes made by chronyc commands 2022-12-01 16:58:23 +01:00
smooth.h adopt struct timespec 2016-08-19 12:53:09 +02:00
socket.c update copyright years 2023-12-05 14:22:10 +01:00
socket.h socket: provide function for closing reusable sockets 2023-11-21 12:38:39 +01:00
sources.c sources: rework logging of selection loss 2023-11-28 12:21:23 +01:00
sources.h sources: add function to modify selection options 2022-12-14 17:04:49 +01:00
sourcestats.c sourcestats: don't fudge refclock LastRx in sources report 2023-02-02 11:26:04 +01:00
sourcestats.h sourcestats: add function to get minsamples 2022-02-10 16:38:50 +01:00
srcparams.h ntp: add maxdelayquant option 2022-07-21 16:05:48 +02:00
stubs.c conf: improve log message for failed additions in sources reload 2023-09-12 08:11:25 +02:00
sys.c sys_netbsd: don't check access to /dev/clockctl with -x 2020-10-05 18:56:37 +02:00
sys.h sys: specify process context for dropping root 2020-10-05 18:56:37 +02:00
sys_generic.c sys_generic: damp slew oscillation due to delayed stop 2022-06-15 17:42:49 +02:00
sys_generic.h sys_generic: allow fast slewing with system driver 2015-09-23 11:19:09 +02:00
sys_linux.c sys_linux: allow writev and TIOCGWINSZ in seccomp filter 2023-06-01 14:52:56 +02:00
sys_linux.h hwclock: refactor processing of PHC readings 2022-06-09 12:04:20 +02:00
sys_macosx.c sys: don't start privops helper for NTS-KE helper 2020-10-05 18:56:37 +02:00
sys_macosx.h sys: specify process context for dropping root 2020-10-05 18:56:37 +02:00
sys_netbsd.c sys_netbsd: don't check access to /dev/clockctl with -x 2020-10-05 18:56:37 +02:00
sys_netbsd.h sys_netbsd: don't check access to /dev/clockctl with -x 2020-10-05 18:56:37 +02:00
sys_null.c sys: add null driver 2017-03-10 16:51:03 +01:00
sys_null.h sys: add null driver 2017-03-10 16:51:03 +01:00
sys_posix.c sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +02:00
sys_posix.h sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +02:00
sys_solaris.c doc: switch Solaris support to illumos 2021-12-09 17:03:56 +01:00
sys_solaris.h sys: specify process context for dropping root 2020-10-05 18:56:37 +02:00
sys_timex.c sys_timex: remove workaround for broken ntp_adjtime on macOS 2021-04-20 15:30:47 +02:00
sys_timex.h sys_timex: move inclusion of sys/timex.h to sysincl.h 2015-12-10 16:30:38 +01:00
sysincl.h util: require inet_pton() 2021-03-04 12:36:36 +01:00
tempcomp.c switch to new util file functions 2019-10-24 12:48:45 +02:00
tempcomp.h Update copyright 2011-01-27 13:05:26 +01:00
util.c util: add conversion between intervals and NTP 64-bit format 2023-09-26 15:00:06 +02:00
util.h util: add conversion between intervals and NTP 64-bit format 2023-09-26 15:00:06 +02:00

This is the README for chrony.

What is chrony?
===============

chrony is a versatile implementation of the Network Time Protocol (NTP).
It can synchronise the system clock with NTP servers, reference clocks
(e.g. GPS receiver), and manual input using wristwatch and keyboard.
It can also operate as an NTPv4 (RFC 5905) server and peer to provide
a time service to other computers in the network.

It is designed to perform well in a wide range of conditions, including
intermittent network connections, heavily congested networks, changing
temperatures (ordinary computer clocks are sensitive to temperature),
and systems that do not run continuosly, or run on a virtual machine.

Typical accuracy between two machines synchronised over the Internet is
within a few milliseconds; on a LAN, accuracy is typically in tens of
microseconds.  With hardware timestamping, or a hardware reference clock,
sub-microsecond accuracy may be possible.

Two programs are included in chrony, chronyd is a daemon that can be
started at boot time and chronyc is a command-line interface program
which can be used to monitor chronyd's performance and to change various
operating parameters whilst it is running.

What will chrony run on?
========================

The software is known to work on Linux, FreeBSD, NetBSD, macOS and
illumos.  Closely related systems may work too.  Any other system will
likely require a porting exercise.

How do I set it up?
===================

The file INSTALL gives instructions.  On supported systems the
compilation process should be automatic.  You will need a C compiler,
e.g. gcc or clang.

What documentation is there?
============================

The distribution includes manual pages and a document containing
Frequently Asked Questions (FAQ).

The documentation is also available on the chrony web pages, accessible
through the URL 

    https://chrony-project.org/

License
=======

chrony is distributed under the GNU General Public License version 2.

Authors
=======

Richard P. Curnow <rc@rc0.org.uk>
Miroslav Lichvar <mlichvar@redhat.com>

Acknowledgements
================

In writing the chronyd program, extensive use has been made of the NTPv3 (RFC
1305) and NTPv4 (RFC 5905) specification.  The source code of the xntpd/ntpd
implementation written by Dennis Fergusson, Lars Mathiesen, David Mills, and
others has been used to check the details of the protocol.

The following people have provided patches and other major contributions
to chrony:

Lonnie Abelbeck <lonnie@abelbeck.com>
Benny Lyne Amorsen <benny@amorsen.dk>
Andrew Bishop <amb@gedanken.demon.co.uk>
Vincent Blut <vincent.debian@free.fr>
Stephan I. Boettcher <stephan@nevis1.columbia.edu>
David Bohman <debohman@gmail.com>
Goswin Brederlow <brederlo@informatik.uni-tuebingen.de>
Leigh Brown <leigh@solinno.co.uk>
Erik Bryer <ebryer@spots.ab.ca>
Jonathan Cameron <jic23@cam.ac.uk>
Bryan Christianson <bryan@whatroute.net>
Juliusz Chroboczek <jch@pps.jussieu.fr>
Dan Drown <dan-ntp@drown.org>
Kamil Dudka <kdudka@redhat.com>
Christian Ehrhardt <christian.ehrhardt@canonical.com>
Paul Elliott <pelliott@io.com>
Robert Fairley <rfairley@redhat.com>
Stefan R. Filipek <srfilipek@gmail.com>
Mike Fleetwood <mike@rockover.demon.co.uk>
Alexander Gretencord <arutha@gmx.de>
Andrew Griffiths <agriffit@redhat.com>
Walter Haidinger <walter.haidinger@gmx.at>
Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
John Hasler <john@dhh.gt.org>
Tjalling Hattink <t.hattink@fugro.nl>
Liam Hatton <me@liamhatton.com>
Holger Hoffstätte <holger@applied-asynchrony.com>
Jachym Holecek <jakym@volny.cz>
Håkan Johansson <f96hajo@chalmers.se>
Jim Knoble <jmknoble@pobox.com>
Antti Jrvinen <costello@iki.fi>
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Eric Lammerts <eric@lammerts.org>
Stefan Lucke <stefan@lucke.in-berlin.de>
Victor Lum <viclum@vanu.com>
Kevin Lyda <kevin@ie.suberic.net>
Paul Menzel <paulepanter@users.sourceforge.net>
Vladimir Michl <vladimir.michl@seznam.cz>
Victor Moroz <vim@prv.adlum.ru>
Kalle Olavi Niemitalo  <tosi@stekt.oulu.fi>
Frank Otto <sandwichmacher@web.de>
Denny Page <dennypage@me.com>
Rupesh Patel <rupatel@redhat.com>
Chris Perl <cperl@janestreet.com>
Gautier PHILIPPON <gautier.philippon@ensimag.grenoble-inp.fr>
Andreas Piesk <apiesk@virbus.de>
Mike Ryan <msr@hsilop.net>
Baruch Siach <baruch@tkos.co.il>
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Foster Snowhill <forst@forstwoof.ru>
Andreas Steinmetz <ast@domdv.de>
NAKAMURA Takumi <takumi@ps.sakura.ne.jp>
Timo Teras <timo.teras@iki.fi>
Bill Unruh <unruh@physics.ubc.ca>
Luke Valenta <lvalenta@cloudflare.com>
Stephen Wadeley <swadeley@redhat.com>
Bernhard Weiss <lisnablagh@web.de>
Wolfgang Weisselberg <weissel@netcologne.de>
Bernhard M. Wiedemann <bwiedemann@suse.de>
Joachim Wiedorn <ad_debian@joonet.de>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Ulrich Windl <ulrich.windl@rz.uni-regensburg.de>
Michael Witten <mfwitten@gmail.com>
Doug Woodward <dougw@whistler.com>
Thomas Zajic <zlatko@zlatko.fdns.net>

Many other people have contributed bug reports and suggestions.  We are sorry
we cannot identify all of you individually.