All notable changes to the project are documented in this file. Changes to Larry's upstream version are interleaved.
v3.1 - 2022-03-13
- Slightly improved log messages when failing to resolve DNS names
- Update co-author's last name, changed from Nilsson to Wiberg 2021
- Update systemd unit file with new name for manual page, and make sure to include it in distribution archives
- Call
res_init()
when retrying resolving DNS names, this fixes long hangs insetup_socket()
which sntpd seemingly never recover from. This in turn caused it to not respond toSIGTERM
properly, while in this state (init) - When either of
bind()
orconnect()
fail insetup_socket()
, return back to mainloop()
to handle retries, and catch signals - Add missing
adjtimex.1
to distribution archives
v3.0 - 2020-03-22
First release as sntpd, with support for both acting as a (very limited)
server and a client. It is a "multicall" binary where it can be called
as ntpclient
to simulate the behavior of the original ntpclient.
- Initial support for a very limited server mode, enabled by default on port 123. The server reports itself as strata 1 and LOCL clock. The root delay and root dispersion calculation is rough at best. Much of the server calculation is inspired by the BusyBox ntpd, please use that one instead
- Changes to Debian packaging,
adjtimex
is now in its own.deb
- New, stripped down, command line options when called as
sntpd
- Updates to man page, new name and separate command line options
- Drop OpenWRT
mini-ntpclient.c
from project, with configure option - Drop
--disable-syslog
configure option - Drop support for really old systems, no more
gettimeofday()
- Fix #4: Rename project from ntpclient to sntpd to avoid confusion with
the original ntpclient. This change also restores original command
line options, and semantics, when called with the name
ntpclient
- Fix man page spelling errors, found by lintian
- Add workaround for missing
SIGGSTAMP
on Linux 5.1 and later - Fix issues found by Coverity Scan:
- check return value of
send()
- handle uninitialized socket
- check return value of
2018_244 - 2018-09-01
- Add HOWTO.md to distribution and install into docs
- Issue #3: Open network socket using the address family returned by the hostname, or address, lookup. Fix by Laura Fang
2018_176 - 2018-06-25
The Stuttgart release. Curated by Joachim Wiberg.
- NTP server argument is now optional, default:
pool.ntp.org
- Restore
.tar.gz
archives formake dist
and release - Make
.deb
file part of release - Cleanup and simplify
README
- Renmed
doc/
todocs/
- Moved
TODO
andCONTRIBUTING.md
todocs/
- Issue #2: Missing fallback to IPv4 on systems with IPv6 disbled
2017_246 - 2017-09-03
Curated by Joachim Wiberg.
- Log successful resolve of NTP host when network has been down
- Add support for building
.deb
package
- Fix build warnings
- Define
_DEFAULT_SOURCE
, needed with newer GLIBC - Do not overload
in6addr_any
, exists innetinet/in.h
2017_217 - 2017-08-05
Curated by Joachim Wiberg.
- Add support for IPv6, thanks to Dieter Ries
- Behavior change:
-L
now required with-n
, otherwisestdout
is used. This to conform with de facto UNIX daemon behavior. - Convert to GNU Configure & Build System, with proper
--enable-opts
for all optional features, like precision and mini NTP client - Relocate files to
doc/
andsrc/
subdirectories - Reindent to Linux kernel coding style and add CONTRIBIBUTING.md to help newcomers with basic project info
- Cleanup README and HOWTO, move to Markdown format for comfortable presentation on GitHub.
- Update and refactor
ntpclient.8
andadjtimex.1
into mdoc format - Move change log from README to separate CHANGELOG file in a format proposed by http://keepachangelog.com/
- Merge in changes from 2015_365 by Larry
- Add missing
COPYING
file, GNU license should be included - Add systemd unit file for running
ntpclient
as a daemon - Add initial Debian packaging to be able to create
.deb
files
- Massive cleanup and build fixes to to
mini-ntpclient.c
from DD-WRT - Fix compiler warnings for unused variables when
ENABLE_DEBUG
is unset - Fix build error when building without
ENABLE_SYSLOG
support - Fixes for non-GNU libc systems, replace
%m
and__progname
- Retry DNS lookup of NTP server, useful at boot and if net goes down
- Restart/reopen network socket at least once a day to prevent lockup
2015_365 - 2015-12-31
Curated by Larry Doolittle. Changes since ntpclient_2010_365.tar.gz
,
http://doolittle.icarus.com/ntpclient/ntpclient_2015_365.tar.gz
- Tweak coding style to work better with modern compilers (e.g., gcc-gcc-4.9.2 and clang-3.5.0)
- Make c99 the default
- List more warning flags in disabled part of Makefile
- Minor whitespace, parenthesis, and spelling changes in source files
- Move
_POSIX_C_SOURCE
and_BSD_SOURCE
to Makefile
- Fixed and re-enabled
-DPRECISION_SIOCGSTAMP
, seems to work properly with modern (e.g., 3.x or 4.x) Linux kernel - use
LDLIBES
instad ofLDFLAGS
for-lrt
in Makefile (thanks, ChristophGr)
2010_365 - 2010-12-31
Curated by Larry Doolittle. Changes since ntpclient_2007_365.tar.gz
.
http://doolittle.icarus.com/ntpclient/ntpclient_2010_365.tar.gz
- Include
netdb.h
and always define_BSD_SOURCE
to getherror()
- Minor formatting to align with Nilsson's fork
- add
-fno-strict-aliasing
as needed by traditional network coding style
- Fixed type of
sa_xmit_len
, thanks Mike Frysinger - Dropped underscores in spelling of
adjtimex(2)
, might make uClibc happier
2010_326 - 2010-11-22
- Allow hostname, instead of IP, to be supplied without
-h
- Fix one-shot sync using
-s
, broke in previous release.
2010_323 - 2010-11-19
Curated by Joachim Wiberg.
- Support for resync with server on
SIGHUP
- Create
.md5
file as well during make dist
2010_300 - 2010-10-27
Curated by Joachim Wiberg.
- Prefix all log messages with "ntpclient:"
- Merge the
adnyw.patch
- Refactor logging to stdout/syslog using one
logit()
function - Support for daemonizing ntpclient by default if run as root, assumes syslog output.
- Add mini-ntpclient, a very small ntpclient from DD-WRT.
- Fix
adjtimex()
compile error on uClibc, from OpenEmbedded
2007_365 - 2007-12-31
Curated by Larry Doolittle.
- Adjustable
min_delay
parameter, used to be hard-coded 800 microseconds - Remove useless
listen()
call, thanks to Alexander Indenbaum - Tidy up 32-bit integer declarations, prodding from Brian McAllister
- Added
rate2.awk
, contributed by Lou Sortman - Provide easy way to override 15 second
MIN_INTERVAL
at compile time - Relax
MIN_INTERVAL
enforcement for one-shot use, thanks to Mihai Buha
- Fix length passed to
recvfrom()
, thanks to Alexander Indenbaum
2006_318 - 2006-11-14 [YANKED]
Curated by Larry Doolittle.
- Default build is now
-std=c99
, butc89
sill works too - Switch default compile from
gettimeofday()
to POSIXclock_gettime()
- More sanity checking on the NTP reply packet, reference RFC 4330
- Fractional second printing in debug output changed to traditional decimal
- New
-f
switch to set initial frequency - Works to specify both
-s
and-l
, will jump-set first and then phase lock - New man page, contributed by Walter Harms
- Most subroutines are now flagged static to the compiler
- Structural changes to the code, such as the new
ntpclient.h
file - Dropped (mostly) obsolete patches from Linksys and Andy Warner
- Bug fix for
select()
error handling, thanks to Walter Harms
2003_194 - 2003-07-13 [YANKED]
Curated by Larry Doolittle.
- New
-g
option (has had limited testing) - Changed max frequency adjustment from 91 ppm to 150 ppm
- Fixed "inconsistent" bug in
phaselock.c
triggered by large freq errors - New files:
HOWTO
,adjtimex.c
,adjtimex.1
,rate.awk
,log2date.pl
- Minor source code cleanups
- Source is now as 64-bit clean as practical; tested on Alpha
- Optional patches provided by Andy Warner, see
andyw.patch
- Optional patches provided by Linksys, see linksys.patch
- Removed unreasonable 15020 day offset in date column (xntpd has this offset, which turns days-since-1900-epoch into Modified Julian Day)