Advanced NTP client and server
Find a file
Uwe Kleine-König 28c9e66f5b refclock: Fix poll counting for refclocks that do polling and event driven timekeeping
The RTC refclock support both modes of timekeeping (depending on
hardware capabilities). As the driver data is const there is a poll
callback even in interrupt mode.

So only count poll calls that return non-zero and count provided
timestamps in the respective functions if they are not called from the
driver's poll routine.
2024-08-20 13:21:43 +02:00
contrib contrib: replace tuxfamily with chrony-project 2023-08-01 12:11:27 +02:00
doc refclock: add new refclock for RTCs 2024-08-20 13:21:43 +02:00
examples examples: switch chrony.conf examples to leapseclist 2024-02-08 16:21:42 +01:00
test conf: don't repeat error message when adding sourcedir source 2024-08-07 09:48:24 +02:00
.gitignore
addressing.h
addrfilt.c
addrfilt.h
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 cmdmon: add reserved fields to local command 2024-04-04 16:24:43 +02:00
client.c cmdmon: add reserved fields to local command 2024-04-04 16:24:43 +02:00
clientlog.c ntp: add server support for KoD RATE 2024-04-02 15:39:12 +02:00
clientlog.h clientlog: add support for KoD rate limiting 2024-04-02 15:23:26 +02:00
cmac.h
cmac_gnutls.c
cmac_nettle.c
cmdmon.c reference: add "local activate" option 2024-04-04 15:17:05 +02:00
cmdmon.h
cmdparse.c reference: add "local activate" option 2024-04-04 15:17:05 +02:00
cmdparse.h reference: add "local activate" option 2024-04-04 15:17:05 +02:00
conf.c conf: don't repeat error message when adding sourcedir source 2024-08-07 09:48:24 +02:00
conf.h ntp: make NTP-over-PTP domain configurable 2024-06-20 15:00:17 +02:00
configure refclock: add new refclock for RTCs 2024-08-20 13:21:43 +02:00
COPYING
getdate.h
getdate.y rtc+getdate: initialize tm_wday for mktime() 2024-03-04 11:38:16 +01:00
hash.h
hash_gnutls.c
hash_intmd5.c
hash_nettle.c
hash_nss.c
hash_tomcrypt.c
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
leapdb.c leapdb: add explicit cast to int64_t 2024-07-30 12:09:53 +02:00
leapdb.h reference: move leap second source into leapdb 2024-02-08 12:54:37 +01: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
logging.c logging: add function to send message to foreground process 2024-07-04 16:50:22 +02:00
logging.h logging: add function to send message to foreground process 2024-07-04 16:50:22 +02:00
main.c main: check for killed foreground process 2024-07-04 16:50:22 +02:00
main.h
make_release
Makefile.in reference: move leap second source into leapdb 2024-02-08 12:54:37 +01:00
manual.c
manual.h
md5.c md5: fix old-style function definitions 2023-04-17 11:40:18 +02:00
md5.h
memory.c memory: use free() instead of realloc() for size 0 2023-06-08 14:31:52 +02:00
memory.h
nameserv.c
nameserv.h
nameserv_async.c
nameserv_async.h
NEWS doc: update NEWS 2024-07-30 14:05:42 +02:00
ntp.h ntp: add extension field to provide network correction 2023-09-26 15:14:13 +02:00
ntp_auth.c
ntp_auth.h
ntp_core.c ntp: limit offset correction to supported NTP interval 2024-05-02 14:43:51 +02:00
ntp_core.h ntp+refclock: add functions to modify offset option 2024-03-07 16:19:04 +01:00
ntp_ext.c
ntp_ext.h
ntp_io.c ntp: make NTP-over-PTP domain configurable 2024-06-20 15:00:17 +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: log failed connection to Samba signd socket 2024-04-15 16:35:33 +02:00
ntp_signd.h
ntp_sources.c ntp: make sure new configuration IDs are unused 2024-07-30 12:11:09 +02:00
ntp_sources.h ntp+refclock: add functions to modify offset option 2024-03-07 16:19:04 +01:00
nts_ke.h
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_ke_server.c clientlog: return enum from CLG_LimitServiceRate() 2024-04-02 11:55:02 +02:00
nts_ke_server.h
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_ntp.h
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_ntp_server.c nts: check for NTS NAK specifically when responding 2024-04-02 11:33:04 +02:00
nts_ntp_server.h
pktlength.c reference: add "local activate" option 2024-04-04 15:17:05 +02:00
pktlength.h
privops.c util: reset GetRandom functions in helpers after fork 2021-11-24 11:17:24 +01:00
privops.h
ptp.h ntp: make NTP-over-PTP domain configurable 2024-06-20 15:00:17 +02: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 2024-07-30 12:11:09 +02:00
refclock.c refclock: Fix poll counting for refclocks that do polling and event driven timekeeping 2024-08-20 13:21:43 +02:00
refclock.h ntp+refclock: add functions to modify offset option 2024-03-07 16:19:04 +01:00
refclock_phc.c refclock: update comment in PHC driver 2024-04-10 12:13:29 +02:00
refclock_pps.c
refclock_rtc.c refclock: add new refclock for RTCs 2024-08-20 13:21:43 +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 reference: switch is_leap_close() from time_t to double 2024-05-02 14:43:46 +02:00
reference.h reference: add "local activate" option 2024-04-04 15:17:05 +02:00
regress.c avoid some static analysis errors 2024-04-11 10:31:02 +02:00
regress.h
reports.h ntp: add per-source counters of kernel and hardware timestamps 2024-02-07 10:23:40 +01:00
rtc.c
rtc.h
rtc_linux.c rtc: optionally return raw time from RTC_Linux_ReadTime_* 2024-08-20 13:21:43 +02:00
rtc_linux.h rtc: optionally return raw time from RTC_Linux_ReadTime_* 2024-08-20 13:21:43 +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
smooth.c log more changes made by chronyc commands 2022-12-01 16:58:23 +01:00
smooth.h
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: allow logging one selection failure on start 2024-05-02 12:51:38 +02:00
sources.h sources: add function to modify selection options 2022-12-14 17:04:49 +01:00
sourcestats.c avoid some static analysis errors 2024-04-11 10:31:02 +02: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 ntp+refclock: add functions to modify offset option 2024-03-07 16:19:04 +01:00
sys.c
sys.h
sys_generic.c sys_generic: damp slew oscillation due to delayed stop 2022-06-15 17:42:49 +02:00
sys_generic.h
sys_linux.c sys_linux: disable other external timestamping channels 2024-04-10 15:33:04 +02:00
sys_linux.h hwclock: refactor processing of PHC readings 2022-06-09 12:04:20 +02:00
sys_macosx.c
sys_macosx.h
sys_netbsd.c
sys_netbsd.h
sys_null.c
sys_null.h
sys_posix.c
sys_posix.h
sys_solaris.c doc: switch Solaris support to illumos 2021-12-09 17:03:56 +01:00
sys_solaris.h
sys_timex.c
sys_timex.h
sysincl.h
tempcomp.c avoid some static analysis errors 2024-04-11 10:31:02 +02:00
tempcomp.h
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 continuously, 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>
Andy Fiddaman <illumos@fiddaman.net>
Mike Fleetwood <mike@rockover.demon.co.uk>
Rob Gill <rrobgill@protonmail.com>
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>
Patrick Oppenlander <patrick.oppenlander@gmail.com>
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.