Advanced NTP client and server
Find a file
Miroslav Lichvar d0d9a3fa43 use round() for rounding
Replace casting of values incremented by +0.5/-0.5 with round().
2021-09-23 15:51:35 +02:00
contrib rename 'Mac OS X' to 'macOS' 2016-08-11 10:45:48 +02:00
doc doc: improve ptpport example 2021-09-01 16:56:54 +02:00
examples doc+examples: update http links to https 2020-09-23 15:10:43 +02:00
test test: fix incorrect use of RAND_MAX 2021-09-23 15:51:35 +02: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 memory: check for overflow when (re)allocating array 2017-08-28 14:27:14 +02:00
array.h Add array utility functions 2014-09-25 10:58:57 +02:00
candm.h cmdmon: move comment to make its scope clearer 2021-09-23 14:48:59 +02:00
client.c client: replace allow/deny parser 2021-09-23 15:50:05 +02:00
clientlog.c fix compiler warnings 2020-10-07 17:27:32 +02:00
clientlog.h clientlog: count authenticated NTP requests 2020-05-21 12:01:39 +02: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 update copyright years 2021-05-12 13:06:15 +02:00
cmdmon.h socket: enable only specified IP families 2020-06-17 15:24:55 +02:00
cmdparse.c conf: rework allow/deny parser 2021-09-23 15:16:33 +02:00
cmdparse.h conf: rework allow/deny parser 2021-09-23 15:16:33 +02:00
conf.c conf: rework allow/deny parser 2021-09-23 15:16:33 +02:00
conf.h ntp: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
configure cmac: add gnutls support 2021-09-02 16:10:09 +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 include config.h in all compiled files 2015-07-28 11:57:57 +02: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 2018-09-12 11:38:10 +02:00
hwclock.h hwclock: add parameters for minimum/maximum number of samples 2018-08-09 14:52:08 +02:00
keys.c update copyright years 2020-09-16 12:09:52 +02:00
keys.h cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
local.c local: return status from offset accumulation 2021-03-04 17:26:00 +01:00
local.h local: return status from offset accumulation 2021-03-04 17:26:00 +01:00
localp.h local: add support for setting TAI-UTC offset 2017-06-30 13:43:35 +02:00
logging.c update copyright years 2020-09-16 12:09:52 +02:00
logging.h logging: extend functionality 2020-07-16 13:24:59 +02:00
main.c main: suppress info messages with -p option 2021-03-04 12:36:23 +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 test: disable object dependencies in main makefile 2020-06-08 15:27:57 +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 Add support for different authentication hashes 2011-11-02 13:53:00 +01:00
md5.h Cleanup including of system headers 2013-06-14 13:41:16 +02:00
memory.c update copyright years 2017-08-28 14:38:23 +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 2021-05-12 13:06:15 +02:00
ntp.h sources: update stratum with leap status 2021-02-04 17:43:47 +01:00
ntp_auth.c nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01:00
ntp_auth.h nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01:00
ntp_core.c use round() for rounding 2021-09-23 15:51:35 +02:00
ntp_core.h ntp: combine parameters of NCR_AddBroadcastDestination() 2020-06-17 15:24:25 +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: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
ntp_io.h ntp: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
ntp_io_linux.c ntp: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
ntp_io_linux.h ntp: convert to new socket API 2019-07-18 17:29:35 +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 update copyright years 2021-05-12 13:06:15 +02:00
ntp_sources.h ntp: avoid recursive update of address 2021-02-11 09:52:57 +01:00
nts_ke.h nts: update NTS-KE port number 2020-06-17 15:59:18 +02:00
nts_ke_client.c update copyright years 2021-05-12 13:06:15 +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: allow multiple server keys and certificates 2021-02-11 16:13:39 +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 update copyright years 2021-05-12 13:06:15 +02: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 nts: add NTS-NTP server and client 2020-03-05 16:02:15 +01:00
nts_ntp_auth.c nts: reset packet length after failed auth encryption 2020-09-23 15:10:43 +02:00
nts_ntp_auth.h nts: add NTS-NTP server and client 2020-03-05 16:02:15 +01:00
nts_ntp_client.c nts: close file after loading cookies 2021-05-05 12:41:23 +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 nts: allow multiple server keys and certificates 2021-02-11 16:13:39 +01:00
nts_ntp_server.h nts: add NTS-NTP server and client 2020-03-05 16:02:15 +01:00
pktlength.c cmdmon: convert doffset request to float 2021-03-04 17:26:00 +01:00
pktlength.h cmdmon: make length of manual list constant 2018-03-06 13:47:25 +01:00
privops.c privops: allow binding to PTP port 2021-09-02 13:35:33 +02:00
privops.h privops: separate res_init() call 2017-03-10 16:51:02 +01:00
ptp.h ntp: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
README doc: update README 2021-04-22 10:20:31 +02:00
refclock.c use round() for rounding 2021-09-23 15:51:35 +02:00
refclock.h refclock: check all driver options 2019-04-18 16:27:47 +02:00
refclock_phc.c refclock: drop return after LOG_FATAL 2021-04-12 09:24:07 +02:00
refclock_pps.c refclock: drop return after LOG_FATAL 2021-04-12 09:24:07 +02:00
refclock_shm.c refclock: check all driver options 2019-04-18 16:27:47 +02:00
refclock_sock.c refclock: remove SOCK socket on exit 2019-07-18 17:29:44 +02:00
reference.c update copyright years 2020-09-16 12:09:52 +02:00
reference.h reference: improve check for close leap second 2020-03-26 11:10:08 +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 cmdmon: add leap status to selectdata report 2020-10-05 18:56:37 +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: avoid printing and scanning time_t 2021-08-05 14:41:28 +02:00
rtc_linux.h rtc: restore time from driftfile if later than RTC time 2015-10-06 15:52:36 +02:00
samplefilt.c sources: update stratum with leap status 2021-02-04 17:43:47 +01:00
samplefilt.h samplefilt: check for non-increasing sample times 2018-08-24 18:09:29 +02:00
sched.c declare variables set from signal handlers as volatile 2021-03-18 17:38:18 +01:00
sched.h nts: improve NTS-KE server/client code 2020-07-16 16:02:08 +02:00
siv.h siv: introduce API for SIV 2020-03-05 16:02:15 +01:00
siv_gnutls.c siv: deinit gnutls on unsupported SIV 2021-09-02 13:35:35 +02:00
siv_nettle.c siv: return error if key is not set 2020-09-10 09:36:35 +02:00
siv_nettle_int.c siv: add internal implementation based on Nettle 2020-03-05 16:02:15 +01:00
smooth.c local: don't remove handlers in finalization 2020-05-21 12:42:18 +02:00
smooth.h adopt struct timespec 2016-08-19 12:53:09 +02:00
socket.c ntp: add support for NTP over PTP 2021-08-19 14:51:38 +02:00
socket.h socket: improve code 2020-08-13 10:40:18 +02:00
sources.c source: don't print duplicated address in selection message 2021-05-05 12:41:23 +02:00
sources.h sources: update stratum with leap status 2021-02-04 17:43:47 +01:00
sourcestats.c update copyright years 2021-05-12 13:06:15 +02:00
sourcestats.h sources: improve handling of dump files and their format 2021-02-04 17:44:27 +01:00
srcparams.h ntp: add copy option 2021-04-15 15:17:13 +02:00
stubs.c nts: add support for multiple sets of trusted certificates 2021-02-18 17:44:04 +01: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 local: don't remove handlers in finalization 2020-05-21 12:42:18 +02:00
sys_generic.h sys_generic: allow fast slewing with system driver 2015-09-23 11:19:09 +02:00
sys_linux.c use round() for rounding 2021-09-23 15:51:35 +02:00
sys_linux.h sys: specify process context for dropping root 2020-10-05 18:56:37 +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 sys: don't start privops helper for NTS-KE helper 2020-10-05 18:56:37 +02: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 use round() for rounding 2021-09-23 15:51:35 +02:00
util.h ntp: allow replacement of sources specified by IP address 2021-01-14 18:17:48 +01: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
Solaris.  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.tuxfamily.org/

Where are new versions announced?
=================================

There is a low volume mailing list where new versions and other
important news relating to chrony are announced.  You can join this list
by sending mail with the subject "subscribe" to

chrony-announce-request@chrony.tuxfamily.org

How can I get support for chrony?
=================================

There are two other mailing lists relating to chrony.  chrony-users is a
discussion list for users, e.g. for questions about chrony configuration
and bug reports.  chrony-dev is a more technical list for developers,
e.g. for submitting patches and discussing how new features should be
implemented.  To subscribe to either of these lists, send a message with
the subject "subscribe" to

chrony-users-request@chrony.tuxfamily.org
or
chrony-dev-request@chrony.tuxfamily.org

as applicable.

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>
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>
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>
Chris Perl <cperl@janestreet.com>
Gautier PHILIPPON <gautier.philippon@ensimag.grenoble-inp.fr>
Andreas Piesk <apiesk@virbus.de>
Baruch Siach <baruch@tkos.co.il>
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>
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.