Advanced NTP client and server
Find a file
Miroslav Lichvar b7fbac617d conf: rename confdirs and sourcedirs directives
Rename the directives to confdir and sourcedir to better match an
expected use case with only one specified directory.
2020-08-20 13:27:46 +02:00
contrib rename 'Mac OS X' to 'macOS' 2016-08-11 10:45:48 +02:00
doc conf: rename confdirs and sourcedirs directives 2020-08-20 13:27:46 +02:00
examples examples: add leapsecmode to chrony.conf examples 2020-08-06 11:34:32 +02:00
test test: fix random failures in nts_ntp_client unit test 2020-08-17 16:28:36 +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: change name fields to unsigned type 2020-08-17 16:28:36 +02:00
client.c client: improve parsing of keygen arguments 2020-08-19 09:39:26 +02:00
clientlog.c clientlog: fix check for ratelimit and noclientlog 2020-05-21 16:07:52 +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_nettle.c cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
cmdmon.c cmdmon: fix data field name in handle_ntp_source_name() 2020-08-13 10:40:18 +02:00
cmdmon.h socket: enable only specified IP families 2020-06-17 15:24:55 +02:00
cmdparse.c cmdmon: avoid unsigned shorts 2020-06-17 15:24:55 +02:00
cmdparse.h cmdmon: avoid unsigned shorts 2020-06-17 15:24:55 +02:00
conf.c conf: rename confdirs and sourcedirs directives 2020-08-20 13:27:46 +02:00
conf.h conf: add dscp directive 2020-08-04 12:24:49 +02:00
configure nameserv: don't return scoped IPv6 addresses 2020-06-29 17:43:35 +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 cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
hash_intmd5.c cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
hash_nettle.c cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
hash_nss.c cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
hash_tomcrypt.c cmac+hash: change parameter types 2020-07-09 14:47:33 +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 cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
keys.h cmac+hash: change parameter types 2020-07-09 14:47:33 +02:00
local.c local: don't remove handlers in finalization 2020-05-21 12:42:18 +02:00
local.h local: add support for setting TAI-UTC offset 2017-06-30 13:43:35 +02:00
localp.h local: add support for setting TAI-UTC offset 2017-06-30 13:43:35 +02:00
logging.c logging: extend functionality 2020-07-16 13:24:59 +02:00
logging.h logging: extend functionality 2020-07-16 13:24:59 +02:00
main.c main: remove unneeded code in signal handler 2020-07-16 16:02:16 +02: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: don't return scoped IPv6 addresses 2020-06-29 17:43:35 +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: improve NEWS 2020-04-20 15:49:58 +02:00
ntp.h sources: separate update of leap status 2020-03-12 14:07:12 +01:00
ntp_auth.c ntp: improve auth code 2020-08-04 12:19:41 +02:00
ntp_auth.h ntp: drop precompensation of TX timestamp 2020-07-09 14:46:57 +02:00
ntp_core.c ntp: fix comments 2020-08-13 10:40:18 +02:00
ntp_core.h ntp: combine parameters of NCR_AddBroadcastDestination() 2020-06-17 15:24:25 +02:00
ntp_ext.c ntp: add functions for adding extension fields 2020-03-05 16:02:15 +01:00
ntp_ext.h ntp: add functions for adding extension fields 2020-03-05 16:02:15 +01:00
ntp_io.c conf: add dscp directive 2020-08-04 12:24:49 +02:00
ntp_io.h socket: enable only specified IP families 2020-06-17 15:24:55 +02:00
ntp_io_linux.c socket: improve code 2020-08-13 10:40:18 +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 ntp: fix comments 2020-08-13 10:40:18 +02:00
ntp_sources.h ntp: add configuration ID to sources 2020-06-10 13:56:43 +02:00
nts_ke.h nts: update NTS-KE port number 2020-06-17 15:59:18 +02:00
nts_ke_client.c nts: fix destroying of NTS-KE client 2020-07-28 12:48:23 +02:00
nts_ke_client.h nts: free client cert credentials when not used 2020-05-21 12:42:18 +02:00
nts_ke_server.c nts: scale server listening backlog with number of helpers 2020-07-28 12:48:23 +02:00
nts_ke_server.h nts: improve NTS-KE server/client code 2020-07-16 16:02:08 +02:00
nts_ke_session.c nts: disable TLS 1.2 on server 2020-07-28 12:48:23 +02:00
nts_ke_session.h nts: fix comment about message handler 2020-07-09 14:47:33 +02:00
nts_ntp.h nts: add NTS-NTP server and client 2020-03-05 16:02:15 +01:00
nts_ntp_auth.c nts: improve NTS-NTP server/client code 2020-07-28 12:48:23 +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: check all encrypted fields before saving cookies 2020-08-13 16:37:20 +02:00
nts_ntp_client.h cmdmon: add authdata command 2020-05-14 15:37:38 +02:00
nts_ntp_server.c nts: improve NTS-NTP server/client code 2020-07-28 12:48:23 +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 reload sources command 2020-06-10 13:56:43 +02:00
pktlength.h cmdmon: make length of manual list constant 2018-03-06 13:47:25 +01:00
privops.c check return value of SCK_OpenUnixSocketPair() 2020-04-20 15:44:12 +02:00
privops.h privops: separate res_init() call 2017-03-10 16:51:02 +01:00
README doc: update README 2020-04-20 15:44:12 +02:00
refclock.c sources: allow modifications of selection options 2020-05-14 15:37:38 +02:00
refclock.h refclock: check all driver options 2019-04-18 16:27:47 +02:00
refclock_phc.c refclock: check all driver options 2019-04-18 16:27:47 +02:00
refclock_pps.c refclock: check all driver options 2019-04-18 16:27:47 +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 reference: fix assignment of frequency_sd 2020-08-19 09:39:26 +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: avoid unsigned shorts 2020-06-17 15:24:55 +02:00
rtc.c rtc: don't finalize driver if initialization failed 2019-12-10 17:45:20 +01:00
rtc.h rtc: move preinit call to RTC_Initialise() 2014-08-19 10:46:32 +02:00
rtc_linux.c local: don't remove handlers in finalization 2020-05-21 12:42:18 +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 samplefilt: remove useless assignment 2020-04-20 15:44:12 +02:00
samplefilt.h samplefilt: check for non-increasing sample times 2018-08-24 18:09:29 +02:00
sched.c nts: improve NTS-KE server/client code 2020-07-16 16:02:08 +02: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: add more assertions 2020-07-16 16:02:16 +02:00
siv_nettle.c siv: add more assertions 2020-07-16 16:02:16 +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 socket: improve code 2020-08-13 10:40:18 +02:00
socket.h socket: improve code 2020-08-13 10:40:18 +02:00
sources.c sources: reset leap voting flag earlier in selection 2020-08-04 12:19:52 +02:00
sources.h cmdmon: add selectdata command 2020-06-04 14:40:18 +02:00
sourcestats.c sourcestats: move leap status to sources 2020-03-12 12:09:50 +01:00
sourcestats.h sourcestats: move leap status to sources 2020-03-12 12:09:50 +01:00
srcparams.h nts: update NTS-KE port number 2020-06-17 15:59:18 +02:00
stubs.c nts: improve NTS-KE server/client code 2020-07-16 16:02:08 +02:00
sys.c sys: specify context for syscall filter 2020-03-05 16:02:15 +01:00
sys.h sys_linux: add syscall filter context for NTS-KE 2020-03-05 16:02:15 +01: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 conf: add directives to specify interfaces for binding sockets 2020-07-01 16:19:44 +02:00
sys_linux.h sys: specify context for syscall filter 2020-03-05 16:02:15 +01:00
sys_macosx.c sys_macosx: fix build issue on Sierra and presumably earlier 2020-03-18 12:23:26 +01:00
sys_macosx.h rename 'Mac OS X' to 'macOS' 2016-08-11 10:45:48 +02:00
sys_netbsd.c sys_netbsd: fix adjtime() fault on macOS 2017-08-09 09:57:14 +02:00
sys_netbsd.h sys_netbsd: allow running without root privileges 2015-08-25 17:09:55 +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_solaris: add support for dropping root privileges 2015-12-10 16:30:38 +01:00
sys_solaris.h sys_solaris: add support for dropping root privileges 2015-12-10 16:30:38 +01:00
sys_timex.c logging: call exit() in LOG_Message() 2019-10-10 18:05:00 +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 use PATH_MAX 2019-10-24 11:03:47 +02: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: fix compiler warning 2020-08-04 12:24:51 +02:00
util.h cmac: enumerate cipher algorithms 2020-05-14 15:37:38 +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
Solaris.  Closely related systems may work too.  Any other system will
likely require a porting exercise.  You would need to start from one
of the existing system-specific drivers and look into the quirks of
certain system calls and the kernel on your target system.

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 is announced.  You can join this list
by sending mail with the subject "subscribe" to

chrony-announce-request@chrony.tuxfamily.org

These messages will be copied to chrony-users (see below).

How can I get support for chrony?
and where can I discuss new features, possible bugs etc?
========================================================

There are 3 mailing lists relating to chrony.  chrony-announce was
mentioned above.  chrony-users is a users' discussion list, e.g. for
general questions and answers about using chrony.  chrony-dev is a more
technical list, e.g. for discussing how new features should be
implemented, exchange of information between developers etc.  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.

When you are reporting a bug, please send us all the information you can.
Unfortunately, chrony has proven to be one of those programs where it is very
difficult to reproduce bugs in a different environment. So we may have to
interact with you quite a lot to obtain enough extra logging and tracing to
pin-point the problem in some cases. Please be patient and plan for this!

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 RFC 1305
and RFC 5905, written by David Mills. The source code of the NTP reference
implementation has been used to check the details of the protocol.

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

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>
Christian Ehrhardt <christian.ehrhardt@canonical.com>
Paul Elliott <pelliott@io.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>
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>
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>
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.