Advanced NTP client and server
Find a file
2019-04-26 11:19:20 +02:00
contrib rename 'Mac OS X' to 'macOS' 2016-08-11 10:45:48 +02:00
doc doc: improve combinelimit description 2019-04-26 11:19:20 +02:00
examples examples: drop chrony.spec 2018-09-12 11:38:10 +02:00
test test: use env in shebang of system tests 2019-04-26 10:54:02 +02:00
.gitignore git: update .gitignore 2018-09-12 17:16:33 +02:00
addressing.h ntp: add interface index to NTP_Local_Address 2017-01-23 15:58:55 +01:00
addrfilt.c addrfilt: remove TEST code 2016-02-05 15:20:40 +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: include filter length in ADD_SERVER/ADD_PEER request 2018-08-09 14:33:48 +02:00
client.c update copyright years 2018-09-12 11:38:10 +02:00
clientlog.c update copyright years 2017-08-28 14:38:23 +02:00
clientlog.h ntp: suggest clients to increase their polling interval 2017-06-27 15:29:01 +02:00
cmdmon.c update copyright years 2018-09-12 11:38:10 +02:00
cmdmon.h main: open cmdmon and NTP internet sockets before dropping root 2015-08-25 17:09:18 +02:00
cmdparse.c ntp: add filter option 2018-08-09 14:33:47 +02:00
cmdparse.h cmdparse: remove CPS_Status 2016-06-27 14:52:55 +02:00
conf.c ntp: add options to set minsamples/maxsamples of hwclock 2018-08-09 14:52:08 +02:00
conf.h ntp: add options to set minsamples/maxsamples of hwclock 2018-08-09 14:52:08 +02:00
configure sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +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 Free allocated memory on exit 2014-09-25 10:57:55 +02:00
hash_intmd5.c hash: include util.h for MIN macro 2018-09-20 15:34:24 +02:00
hash_nettle.c hash: add support for older nettle versions 2018-03-15 09:00:09 +01:00
hash_nss.c hash: allow truncated output 2018-08-27 19:00:08 +02:00
hash_tomcrypt.c update copyright years 2018-09-12 11:38:10 +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 fix printf()/scanf() format signedness 2018-06-20 16:57:04 +02:00
keys.h ntp: avoid truncation of NTPv4 MACs by default 2016-12-02 14:53:03 +01:00
local.c local: add support for setting TAI-UTC offset 2017-06-30 13:43:35 +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 update copyright years 2018-09-12 11:38:10 +02:00
logging.h logging: allow reopening stderr 2018-08-28 18:18:07 +02:00
main.c update copyright years 2018-09-12 11:38:10 +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: add system tests 2019-04-18 16:11:45 +02:00
manual.c cmdmon: report offset after manual timestamp as float 2017-07-25 17:40:35 +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: adopt some include directives from sysincl.h 2018-09-20 15:34:24 +02:00
nameserv.h nameserv: return at most 16 addresses from DNS_Name2IPAddress() 2016-01-13 11:25:26 +01:00
nameserv_async.c logging: remove facility parameter 2017-03-10 16:51:03 +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 2018-08-31 10:11:17 +02:00
ntp.h use common structure for NTP samples 2018-08-03 17:21:02 +02:00
ntp_core.c ntp: optimize MAC truncation 2018-08-27 19:00:08 +02:00
ntp_core.h ntp: refactor switching between online and offline state 2018-05-25 10:53:21 +02:00
ntp_io.c ntp: don't use IP_SENDSRCADDR on bound socket 2018-12-03 16:08:08 +01:00
ntp_io.h ntp: allow online/offline state to be selected by connectability 2018-05-25 10:53:21 +02:00
ntp_io_linux.c ntp: fix transposition with timestamping packet info 2018-10-08 15:54:07 +02:00
ntp_io_linux.h ntp: wait for late HW TX timestamps 2018-02-02 11:36:38 +01:00
ntp_signd.c sched: allow enabling/disabling individual file handler events 2018-01-30 15:56:51 +01:00
ntp_signd.h ntp: add support for MS-SNTP authentication in Samba 2016-07-29 10:17:33 +02:00
ntp_sources.c ntp: refactor switching between online and offline state 2018-05-25 10:53:21 +02:00
ntp_sources.h ntp: refactor switching between online and offline state 2018-05-25 10:53:21 +02:00
pktlength.c cmdmon: add onoffline command 2018-05-25 10:53:21 +02:00
pktlength.h cmdmon: make length of manual list constant 2018-03-06 13:47:25 +01:00
privops.c util: handle or ignore SIGPIPE signal 2018-08-03 17:21:02 +02:00
privops.h privops: separate res_init() call 2017-03-10 16:51:02 +01:00
README doc: update README 2018-03-14 16:14:56 +01:00
refclock.c refclock: check all driver options 2019-04-18 16:27:47 +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: check all driver options 2019-04-18 16:27:47 +02:00
reference.c update copyright years 2018-09-12 11:38:10 +02:00
reference.h sources: provide frequency SD to reference update 2018-08-17 17:40:06 +02: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 ntpdata command 2016-11-25 17:33:43 +01:00
rtc.c logging: remove facility parameter 2017-03-10 16:51:03 +01:00
rtc.h rtc: move preinit call to RTC_Initialise() 2014-08-19 10:46:32 +02:00
rtc_linux.c check values returned by gmtime() and localtime() 2018-06-20 16:45:14 +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: use SQUARE macro in SPF_CreateInstance() 2018-09-10 13:20:14 +02:00
samplefilt.h samplefilt: check for non-increasing sample times 2018-08-24 18:09:29 +02:00
sched.c sched: allow file handler with multiple events to remove itself 2018-08-03 17:21:02 +02:00
sched.h sched: allow enabling/disabling individual file handler events 2018-01-30 15:56:51 +01:00
smooth.c util: introduce SQUARE macro 2018-08-21 12:06:57 +02:00
smooth.h adopt struct timespec 2016-08-19 12:53:09 +02:00
sources.c update copyright years 2018-09-12 11:38:10 +02:00
sources.h use common structure for NTP samples 2018-08-03 17:21:02 +02:00
sourcestats.c update copyright years 2018-09-12 11:38:10 +02:00
sourcestats.h sourcestats: provide frequency SD in tracking data 2018-08-17 17:40:06 +02:00
srcparams.h ntp: add filter option 2018-08-09 14:33:47 +02:00
stubs.c ntp: refactor switching between online and offline state 2018-05-25 10:53:21 +02:00
sys.c sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +02:00
sys.h sys: add null driver 2017-03-10 16:51:03 +01:00
sys_generic.c logging: remove facility parameter 2017-03-10 16:51:03 +01:00
sys_generic.h sys_generic: allow fast slewing with system driver 2015-09-23 11:19:09 +02:00
sys_linux.c sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +02:00
sys_linux.h sys_posix: support SCHED_FIFO and mlockall on more OSs 2019-04-24 12:18:07 +02:00
sys_macosx.c sys_macosx: remove adjtime() check 2018-10-02 10:50:04 +02: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 update copyright years 2017-08-28 14:38:23 +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 nameserv: adopt some include directives from sysincl.h 2018-09-20 15:34:24 +02:00
tempcomp.c logging: remove facility parameter 2017-03-10 16:51:03 +01:00
tempcomp.h Update copyright 2011-01-27 13:05:26 +01:00
util.c update copyright years 2018-09-12 11:38:10 +02:00
util.h util: introduce SQUARE macro 2018-08-21 12:06:57 +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>
    Patch to add tab-completion to chronyc

Benny Lyne Amorsen <benny@amorsen.dk>
    Patch to add minstratum option

Andrew Bishop <amb@gedanken.demon.co.uk>
    Fixes for bugs in logging when in daemon mode
    Fixes for compiler warnings
    Robustness improvements for drift file
    Improve installation (directory checking etc)
    Entries in contrib directory
    Improvements to 'sources' and 'sourcestats' output from chronyc
    Improvements to documentation
    Investigation of required dosynctodr behaviour for various Solaris
      versions

Stephan I. Boettcher <stephan@nevis1.columbia.edu>
    Entries in contrib directory

Erik Bryer <ebryer@spots.ab.ca>
    Entries in contrib directory

Bryan Christianson <bryan@whatroute.net>
    Support for macOS
    Support for privilege separation
    Entries in contrib directory

Juliusz Chroboczek <jch@pps.jussieu.fr>
    Patch to fix install rule in Makefile if chronyd file is in use

Christian Ehrhardt <christian.ehrhardt@canonical.com>
    Patch to generate a warning message when CAP_SYS_TIME is missing

Paul Elliott <pelliott@io.com>
    Entries in contrib directory

Mike Fleetwood <mike@rockover.demon.co.uk>
    Fixes for compiler warnings

Alexander Gretencord <arutha@gmx.de>
    Changes to installation directory system to make it easier for
    package builders

Andrew Griffiths <agriffit@redhat.com>
    Patch to add support for seccomp filter

Walter Haidinger <walter.haidinger@gmx.at>
    Access to a Linux installation where v1.12 wouldn't compile
    Disc space for an independent backup of the sources

Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
    Port to NetBSD

John Hasler <john@dhh.gt.org>
    Project and website at tuxfamily.org
    Changes to support 64 bit machines (i.e. those where
      sizeof(unsigned long) > 4)
    Bug fix to initstepslew directive
    Fix to remove potential buffer overrun errors
    Memory locking and real-time scheduler support
    Fix fault where chronyd enters an endless loop

Tjalling Hattink <t.hattink@fugro.nl>
    Fix scheduler to allow stepping clock from timeout handler
    Patch to take leap second in PPS refclock from locked source
    Patch to make reading of RTC for initial trim more reliable

Liam Hatton <me@liamhatton.com>
    Advice on configuring for Linux on PPC

Jachym Holecek <jakym@volny.cz>
    Patch to make Linux real time clock work with devfs

Håkan Johansson <f96hajo@chalmers.se>
    Patch to avoid large values in sources and sourcestats output

Jim Knoble <jmknoble@pobox.com>
    Fixes for compiler warnings

Antti Jrvinen <costello@iki.fi>
    Advice on configuring for BSD/386

Victor Moroz <vim@prv.adlum.ru>
    Patch to support Linux with HZ!=100

Kalle Olavi Niemitalo  <tosi@stekt.oulu.fi>
    Patch to add acquisitionport directive

Frank Otto <sandwichmacher@web.de>
    Handling arbitrary HZ values

Denny Page <dennypage@me.com>
    Advice on support for hardware timestamping

Chris Perl <cperl@janestreet.com>
    Patches to improve support for refclocks keeping time in TAI

Gautier PHILIPPON <gautier.philippon@ensimag.grenoble-inp.fr>
    Patch to add refresh command to chronyc

Andreas Piesk <apiesk@virbus.de>
    Patch to make chronyc use the readline library if available

Andreas Steinmetz <ast@domdv.de>
    Patch to make stratum of refclocks configurable

Timo Teras <timo.teras@iki.fi>
    Patch to reply correctly on multihomed hosts

Bill Unruh <unruh@physics.ubc.ca>
    Advice on statistics

Stephen Wadeley <swadeley@redhat.com>
    Improvements to man pages

Wolfgang Weisselberg <weissel@netcologne.de>
    Entries in contrib directory

Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
    Many robustness and security improvements
    
Ulrich Windl <ulrich.windl@rz.uni-regensburg.de> for the
    Information about the Linux 2.2 kernel functionality compared to 2.0

Doug Woodward <dougw@whistler.com>
    Advice on configuring for Solaris 2.8 on x86

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