Advanced NTP client and server
Find a file
Miroslav Lichvar d243f1f8fe configure: check if getaddrinfo() is available
This allows disabling IPv6 support and keeping getaddrinfo().
2014-04-29 12:43:03 +02:00
contrib Update COPYING and FSF address 2009-10-28 17:53:33 +01:00
examples Update chrony.conf.example2 2013-08-02 15:43:44 +02:00
test/simulation ntp: drop initstepslew NTP implementation 2014-04-09 09:54:40 +02:00
.gitignore git: update .gitignore 2014-04-08 17:00:47 +02:00
addressing.h ntp: store socket in NTP instance 2014-03-25 15:22:59 +01:00
addrfilt.c Remove unncessary return statements 2013-05-21 15:08:34 +02:00
addrfilt.h Remove CVS headers 2011-01-28 12:56:09 +01:00
broadcast.c ntp: store socket in NTP instance 2014-03-25 15:22:59 +01:00
broadcast.h Remove CVS headers 2011-01-28 12:56:09 +01:00
candm.h Merge branch '1.29-security' 2014-01-31 17:06:08 +01:00
chrony.1 Update see also in man pages 2013-11-26 13:34:12 +01:00
chrony.conf.5.in Update documentation 2013-06-20 18:00:32 +02:00
chrony.spec.sample Update chrony.spec.sample 2013-07-01 19:00:06 +02:00
chrony.texi.in configure: add option to set default user 2014-04-09 16:30:06 +02:00
chrony_timex.h Add support for ADJ_SETOFFSET mode 2011-09-01 15:31:11 +02:00
chronyc.1.in Set paths in documentation by configure 2013-05-16 14:20:16 +02:00
chronyd.8.in configure: add option to set default user 2014-04-09 16:30:06 +02:00
client.c client: print positive signed freq and offset values with sign 2014-03-21 13:20:24 +01:00
clientlog.c Remove unncessary return statements 2013-05-21 15:08:34 +02:00
clientlog.h Remove CVS headers 2011-01-28 12:56:09 +01:00
cmdmon.c cmdmon: fix doffset command with negative values on 64-bit systems 2014-04-28 14:12:05 +02:00
cmdmon.h Create sockets only in selected family with -4 or -6 option 2013-05-20 15:37:25 +02:00
cmdparse.c cmdparse: don't allow NTP key ID of 0 2014-03-21 13:20:37 +01:00
cmdparse.h Refactor key parsing 2013-05-16 14:18:33 +02:00
conf.c ntp: use async name resolving for NTP sources 2014-04-29 12:43:03 +02:00
conf.h conf: split line parsing from CNF_ReadFile 2014-04-09 12:36:13 +02:00
configure configure: check if getaddrinfo() is available 2014-04-29 12:43:03 +02:00
COPYING Update COPYING and FSF address 2009-10-28 17:53:33 +01:00
faq.txt Update faq.txt 2014-01-30 15:59:45 +01:00
faqgen.pl Equivalent to V1.19.99.1 2006-01-19 21:34:28 +00:00
getdate.c Regenerate getdate.c 2009-11-27 12:27:11 +01:00
getdate.h Update COPYING and FSF address 2009-10-28 17:53:33 +01:00
getdate.y Include getdate.y to allow regenerating getdate.c 2009-11-27 12:25:36 +01:00
hash.h Update copyright years 2012-02-28 13:11:56 +01:00
hash_intmd5.c Update copyright years 2012-02-28 13:11:56 +01:00
hash_nss.c Update copyright years 2012-02-28 13:11:56 +01:00
hash_tomcrypt.c Update copyright years 2012-02-28 13:11:56 +01:00
INSTALL Add URLs to documentation for gpsd, radioclk and linuxpps 2013-08-14 19:02:49 +02:00
keys.c keys: don't cache position for unknown keys 2014-03-21 13:20:24 +01:00
keys.h Add support for different authentication hashes 2011-11-02 13:53:00 +01:00
local.c Simplify expression used in frequency accumulation 2014-01-09 18:31:35 +01:00
local.h Introduce offset correction rate 2011-11-15 12:27:44 +01:00
localp.h Introduce offset correction rate 2011-11-15 12:27:44 +01:00
logging.c logging: print warning message when not compiled with debug support 2014-04-09 12:09:25 +02:00
logging.h logging: set debug level instead of on/off 2014-04-09 12:09:23 +02:00
main.c ntp: use async name resolving for NTP sources 2014-04-29 12:43:03 +02:00
main.h Remove CVS headers 2011-01-28 12:56:09 +01:00
make_release make_release: set owner and group in released tarball to root 2014-01-31 13:37:55 +01:00
Makefile.in nameserv: prepare for asynchronous resolving 2014-04-29 12:07:38 +02:00
manual.c Remove unused code in manual.c 2013-10-07 17:50:27 +02:00
manual.h Remove CVS headers 2011-01-28 12:56:09 +01: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.h Cleanup including of system headers 2013-06-14 13:41:16 +02:00
mkdirpp.c Use config.h 2011-05-24 18:07:06 +02:00
mkdirpp.h Remove CVS headers 2011-01-28 12:56:09 +01:00
nameserv.c configure: check if getaddrinfo() is available 2014-04-29 12:43:03 +02:00
nameserv.h Remove CVS headers 2011-01-28 12:56:09 +01:00
nameserv_async.c nameserv: prepare for asynchronous resolving 2014-04-29 12:07:38 +02:00
nameserv_async.h nameserv: prepare for asynchronous resolving 2014-04-29 12:07:38 +02:00
NEWS Update NEWS 2014-01-31 13:12:59 +01:00
ntp.h Cleanup including of system headers 2013-06-14 13:41:16 +02:00
ntp_core.c ntp: delay initial transmission until first resolving ends 2014-04-29 12:42:45 +02:00
ntp_core.h ntp: delay initial transmission until first resolving ends 2014-04-29 12:42:45 +02:00
ntp_io.c conf: add bindacqaddress directive for client sockets 2014-04-03 15:47:32 +02:00
ntp_io.h ntp: accept packets from unknown sources only from server sockets 2014-03-26 11:18:18 +01:00
ntp_sources.c ntp: start resolving only from NSR_ResolveSources 2014-04-29 12:43:03 +02:00
ntp_sources.h ntp: start resolving only from NSR_ResolveSources 2014-04-29 12:43:03 +02:00
pktlength.c Add padding to cmdmon requests to prevent amplification attack 2014-01-30 15:59:45 +01:00
pktlength.h Add padding to cmdmon requests to prevent amplification attack 2014-01-30 15:59:45 +01:00
README Update documentation 2013-06-20 18:00:32 +02:00
refclock.c sources: add flag that source is active 2014-04-10 17:48:58 +02:00
refclock.h refclock: remove duplicated declaration 2014-04-29 12:07:38 +02:00
refclock_phc.c Convert TRACEON LOG messages to DEBUG_LOG 2013-11-27 14:35:41 +01:00
refclock_pps.c Convert TRACEON LOG messages to DEBUG_LOG 2013-11-27 14:35:41 +01:00
refclock_shm.c Convert TRACEON LOG messages to DEBUG_LOG 2013-11-27 14:35:41 +01:00
refclock_sock.c Fix log messages 2013-11-26 18:41:51 +01:00
reference.c reference: negate offset printed in maxchange log message 2014-04-11 16:09:43 +02:00
reference.h reference: add UpdateOnce and PrintOnce modes 2014-04-09 12:14:47 +02:00
regress.c regress: make minimum number of samples for regression public 2014-04-10 17:15:13 +02:00
regress.h regress: make minimum number of samples for regression public 2014-04-10 17:15:13 +02:00
reports.h Fix spelling 2013-06-17 18:26:48 +02:00
rtc.c Replace /sbin/clock with /sbin/hwclock in documentation and comments 2013-12-10 17:54:05 +01:00
rtc.h Remove CVS headers 2011-01-28 12:56:09 +01:00
rtc_linux.c Fix writing of drift and RTC files 2014-01-21 18:23:12 +01:00
rtc_linux.h Cleanup including of system headers 2013-06-14 13:41:16 +02:00
sched.c sched: fix main loop to allow timeout handlers modify fd set or quit 2014-04-10 11:47:43 +02:00
sched.h Rename SCH_GetFileReadyTime() and extend it to return raw time 2013-06-05 18:07:05 +02:00
sources.c sources: ignore inactive sources in special mode ending 2014-04-10 17:50:24 +02:00
sources.h sources: add flag that source is active 2014-04-10 17:48:58 +02:00
sourcestats.c sourcestats: assert dump file is loaded with no accumulated samples 2014-04-29 12:07:38 +02:00
sourcestats.h Modify SST_GetSelectionData to return only necessary data 2013-06-12 16:06:33 +02:00
srcparams.h Disable maxdelayratio test by default 2011-08-12 15:38:05 +02:00
strerror.c Use config.h 2011-05-24 18:07:06 +02:00
sys.c Remove unncessary return statements 2013-05-21 15:08:34 +02:00
sys.h Remove CVS headers 2011-01-28 12:56:09 +01:00
sys_linux.c Convert linux kernel info messages to debug 2014-01-17 17:30:06 +01:00
sys_linux.h Remove kernel version check from rtc code 2011-06-06 21:33:59 +02:00
sys_netbsd.c Introduce offset correction rate 2011-11-15 12:27:44 +01:00
sys_netbsd.h Remove CVS headers 2011-01-28 12:56:09 +01:00
sys_solaris.c Remove unncessary return statements 2013-05-21 15:08:34 +02:00
sys_solaris.h Remove CVS headers 2011-01-28 12:56:09 +01:00
sys_sunos.c Remove unncessary return statements 2013-05-21 15:08:34 +02:00
sys_sunos.h Remove CVS headers 2011-01-28 12:56:09 +01:00
sysincl.h Replace bzero with memset 2013-06-14 13:48:16 +02:00
tempcomp.c tempcomp: print warning message on error 2014-03-21 13:20:24 +01:00
tempcomp.h Update copyright 2011-01-27 13:05:26 +01:00
util.c Update copyright years 2013-06-19 12:50:26 +02:00
util.h Remove unnecessary adjtimex calls 2013-06-06 19:38:36 +02:00
wrap_adjtimex.c Cleanup including of system headers 2013-06-14 13:41:16 +02:00
wrap_adjtimex.h Control offset correction rate in Linux driver 2011-11-15 12:30:59 +01:00

This is the README for chrony.

What is chrony?
===============
Chrony is a pair of programs for maintaining the accuracy of computer
clocks.

chronyd is a (background) daemon program that can be started at boot
time.  This does most of the work.

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.

chronyd's main function is to obtain measurements of the true (UTC)
time from one of several sources, and correct the system clock
accordingly.  It also works out the rate at which the system clock
gains or loses time and uses this information to keep it accurate
between measurements from the reference.

The reference time can be derived from Network Time Protocol (NTP)
servers, reference clocks, or wristwatch-and-keyboard (via chronyc).
The main source of information about the Network Time Protocol is
http://www.ntp.org.

It is designed so that it can work on computers which only have
intermittent access to reference sources, for example computers which
use a dial-up account to access the Internet or laptops.  Of course, it
will work well on computers with permanent connections too.

In addition, on Linux it can monitor the system's real time clock
performance, so the system can maintain accurate time even across
reboots.

Typical accuracies available between 2 machines are

On an ethernet LAN : 100-200 microseconds, often much better
On a V32bis dial-up modem connection : 10's of milliseconds (from one
session to the next)

With a good reference clock the accuracy can reach one microsecond.

chronyd can also operate as an RFC1305-compatible NTP server and peer.


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

Chrony can be successfully built and run on

1. Linux 2.2.x, 2.3.x, 2.4.x, 2.6.x, 3.x

2. Solaris 2.5/2.5.1/2.6/2.7/2.8 (various platforms) 

3. SunOS 4.1.4 (Sparc 2 and Sparc 20)

4. BSD/386 v1.1 has been reported to work using the SunOS 4.1 driver.

5. NetBSD.

Any other system will 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.  (This is described in the manual).

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

The file INSTALL gives instructions.  On supported systems the
compilation process should be automatic.

You will need an ANSI C compiler -- gcc is recommended.

The manual (in texinfo and text formats) describes how to set the
software up for the less straightforward cases.

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

A manual is supplied in Texinfo format (chrony.texi) and
ready-formatted plain text (chrony.txt) in the distribution.

There is also information available on the chrony web pages, accessible
through the URL 

    http://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).  New versions
are announced also on Freshmeat (http://freshmeat.net/).

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.


Author
======

Richard P. Curnow <rc@rc0.org.uk>


Maintainers
===========

John Hasler <john@dhh.gt.org>
Miroslav Lichvar <mlichvar@redhat.com>


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

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

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

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

Paul Elliott <pelliott@io.com>
    DNSchrony (in contrib directory), a tool for handling NTP servers
    with variable IP addresses.

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.

Walter Haidinger <walter.haidinger@gmx.at>
    Providing me with login access to a Linux installation where v1.12
    wouldn't compile, so I could develop the fixes for v1.13.  Also, for
    providing the disc space so I can keep an independent backup of the
    sources.

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

John Hasler <john@dhh.gt.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

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

Miroslav Lichvar <mlichvar@redhat.com>
    Reference clock support
    IPv6 support
    Linux capabilities support
    Leap second support
    Improved source selection
    Improved sample history trimming
    Improved polling interval adjustment
    Improved stability with temporary asymmetric delays
    Temperature compensation
    Many other bug fixes and improvements

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

Kalle Olavi Niemitalo  <tosi@stekt.oulu.fi>
    acquisitionport support

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

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

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

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
    Providing me with 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.  I'm
sorry I can't identify all of you individually.