2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Release 1.1.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Improve documentation.

	Clarify the function of the --arp option and mention the behaviour
	on SIGHUP, together with other small adjustments.

	Inspired by similar manual changes in the Debian patchset.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Combine various version blurbs into a single place.

	And also log the version number at daemon startup.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Add configure option to change default bootdir.

	The default location of /etc/tftpboot is probably not ideal.  Debian
	has long ago changed this to /tftpboot, which is the traditional
	location and likely a more common choice.

	But neither location is obviously great.  The GNU standards call for
	something under ${prefix}; the FHS suggests something under /srv.

	So let's add a new configure option --enable-default-tftpboot=DIR,
	which allows the system integrator to pick whatever they'd like.
	Or even --disable-default-tftpboot, to make --no-check-tftpboot the
	default behaviour--probably what most users actually want anyway.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Improve logging of interface names.

	When logging information about a received packet, log the actual name
	of the incoming interface rather than the interface index.  This makes
	the logs easier to understand after the fact, especially since we don't
	log information about the interface indices anywhere else.

	Furthermore, although on Linux I don't think it matters, ensure that
	all logging of interface names are length-limited to IFNAMSIZ bytes.

	Loosely inspired by changes found in Debian's patchset.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Add stricter check for supplied interface names.

	When populating the ifreq structure, rarpd silently truncates the
	interface names to IFNAMSIZ bytes.  Linux then silently writes a
	'\0' terminator over the last byte before using the resulting name
	to select the target interface.

	Instead of silently proceeding with an interface that is technically
	not what the user specified, we can catch this case by checking that
	the name returned by the SIOCGIFINDEX ioctl matches the name in the
	request.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Fix handling of --arp option.

	This was supposed to respond to messages coming in with 0x806 (ARP)
	ethertype as well as 0x8035 (RARP), but due to a mistake in the
	count passed to the poll call, nothing coming in on the ARP socket
	is ever handled.

	Adjust the initialization so that both sockets are accounted correctly.

	On Linux, we can probably simplify the process by using a single packet
	socket and a different filter which matches both protocols, but for now
	let's just keep the current structure.

	Thanks to Andreas Tille (Debian) for bringing this bug to my attention.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Add some basic sanity checks of the server.

	Let's try a very basic test that the server replies to various
	requests as expected.  We use a new wrapper program that spins
	up a Linux TAP interface in order to send/receive data under
	control of the test suite.

	This enables a simple test of the --allow-offlink and --arp features,
	and demonstrates that the --arp feature currently does not work at all.

	This is all very simple, and requires root privileges to run.
	The tests are skipped if anything fails setting up the interface.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Enable better testing with leak sanitizer.

	By default, GCC's leak sanitizer feature only checks anything when the
	program exits normally.  However, since rarpd does not normally exit,
	we basically never get any reports.

	To (mostly) fix this, we can conditionally install a SIGTERM handler
	which then triggers the main loop to call into leak sanitizer at an
	appropriate time before exiting.  Mostly, because the conditional
	compilation works only with -fsanitize=address, not -fsanitize=leak.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	logger: Add fallback for systems which lack tm_gmtoff.

	Improve the portability of the logging system by including
	a standard C method to compute the timezone offset from UTC,
	which will be used if configure determines that tm_gmtoff
	is not available.

2026-09-05  Nick Bowler  <nbowler@draconx.ca>

	Add option to read ethers from a file.

	We will need something like this for testing, and it seems that
	this could sometimes be a useful feature in its own right.

2025-12-28  Nick Bowler  <nbowler@draconx.ca>

	Re-add previously-undocumented rarpd -o option.

	The -o option was missed in the conversion to getopt_long, because
	this option was totally undocumented.  Let's go ahead and fix that.

2025-12-28  Nick Bowler  <nbowler@draconx.ca>

	Remove unused rarp_db bits.

	while it looks like there is some skeleton of an address cache for
	responses, the work is clearly either unfinished or was partially
	disabled, as there is no code to store anything into the database.

2025-12-28  Nick Bowler  <nbowler@draconx.ca>

	Reinitialize logger on SIGHUP.

	This is helpful when using a file target when rotating logs: first
	rename the old log, then send SIGHUP to reopen the original filename.

2025-12-26  Nick Bowler  <nbowler@draconx.ca>

	Replace daemon() with a local implementation.

	Best practice when backgrounding is to fork after setsid, so that
	the daemon process cannot acquire a controlling terminal later.
	The daemon function in the GNU C library does not do this.

	Use our own implementation which can be tweaked to do whatever
	is desired: including the second fork and also some additional
	communication so the original process can try to wait for all
	initialization to complete successfully before exiting.

2025-12-24  Nick Bowler  <nbowler@draconx.ca>

	Add a more flexible logging system.

	Add a mechanism to allow logging either to a file or to standard error,
	in addition to syslog.

2025-12-24  Nick Bowler  <nbowler@draconx.ca>

	Switch option parsing to getopt_long.

	Add new long options for everything, and make use of the dxcommon
	scripts and functions to format the help message.

2025-12-21  Nick Bowler  <nbowler@draconx.ca>

	Initial dxcommon integration.

	In preparation for upcoming enhancements, start by pulling in dxcommon
	and integrating basic enhancements to the configure script.

2025-12-21  Nick Bowler  <nbowler@draconx.ca>

	Use mdoc for man page.

	Instead of all this XML processing noise, let's just write the
	man page directly in troff using the mdoc macro package, which
	results in much less code.

2023-07-30  Nick Bowler  <nbowler@draconx.ca>

	Add description of -H option to the manual.

	Clean up whitespace a bit.

2023-07-28  Nick Bowler  <nbowler@draconx.ca>

	Release 1.

	Get a release out the door with just the bare minimum of changes
	compared to the iputils-20211215 release.

	We eschew "dates as versions" and start this at version 1.

2023-07-28  Nick Bowler  <nbowler@draconx.ca>

	Remove some irrelevant entries from iputils ChangLog.

	Delete a handful of entries from the ChangeLog imported from iputils;
	these changes only modified "common" code that was never used by rarpd
	whatsoever.

2023-07-28  Nick Bowler  <nbowler@draconx.ca>

	Move docbook/xsltproc configure test into separate m4 file.

2023-07-27  Nick Bowler  <nbowler@draconx.ca>

	Remove iputils headings from the man page.

	This isn't part of the iputils package anymore.

2023-07-27  Nick Bowler  <nbowler@draconx.ca>

	Stop using GNU "error" functions.

	For an actually portable error fallback, just don't use error at all.

	There are literally just 3 calls to the GNU error function, all of which
	are directly in main.  We can just use normal prints and return.

2023-07-27  Nick Bowler  <nbowler@draconx.ca>

	Adjust usage message and add explicit help option.

	Instead of dumping a huge splat on usage errors, output a brief message
	instead with an option to request the full details.  Since we currently
	only do short options, this option is -H (same as my own programs).

	When requested by the user, program help text is not an error message
	so it goes on standard output (that way it can be grepped and all that
	good stuff).

2023-07-26  Nick Bowler  <nbowler@draconx.ca>

	Punt iputils_common helpers.

	Only two functions from this common library are used by rarpd.

	The error fallback depends on program_invocation_short_name, which is a
	GNU C library feature, and if you have the GNU C library, you have error,
	so I'm really not sure what systems this works on.

	And for rarpd, there seems to be no point in explicitly closing the
	standard I/O streams since it doesn't print anything normally.

2023-07-26  Nick Bowler  <nbowler@draconx.ca>

	Get rid of IPUTILS_VERSION macro.

	This program isn't part of iputils anymore.

2023-07-26  Nick Bowler  <nbowler@draconx.ca>

	Add NEWS.

	Use gitlog-to-changelog w/ "make dist".

	Import bootstrap script etc.

2023-07-26  Nick Bowler  <nbowler@draconx.ca>

	Import rarpd from iputils-20211215

	Well, with rarpd removed from iputils, let's extract it to a standalone
	package.  This is just the bare minimum to start, all source files are
	unmodified from the iputils-20211215 release, and a brand-new skeleton
	build system is implemented to compile the software and documentation.

2020-01-06  Sami Kerola  <kerolasa@iki.fi>

	common: flush streams before closing them

	On loaded systems slow tty can give false positive exit failure due pending
	bytes.  Flush the streams that hopefully makes these problems less likely.

	Reference: https://github.com/iputils/iputils/commit/4655ecc5105c383669ef529f21f3344f99e7372f#commitcomment-36628770

2019-10-31  Philipp Kammerer  <kammerer@b1-systems.de>

	doc: Proofreading rarpd.xml

	A few suggestions to make the manpage more easy to read

2019-03-25  Jan Tojnar  <jtojnar@gmail.com>

	doc: Use namespace correctly

	The files declared xmlns:db but did not use the db namespace at all.
	They did not define the default namespace at all, which coincidentally
	worked with Docbook 4 stylesheets, making them think the files were
	written in Docbook 4.

	I fixed the namespaces of the documents and switched to the correct
	Docbook 5 stylesheets.

2019-03-09  Sami Kerola  <kerolasa@iki.fi>

	documentation: fix various spelling typos

	Foudn with codespell.

	Reference: https://github.com/codespell-project/codespell

2019-02-02  Sami Kerola  <kerolasa@iki.fi>

	clang scan-build: fix various build warning

	arping: fix dereference of null pointer.
	clockdiff: fix assigned value is garbage or undefined warnings.
	ninfod: fix dead assignment and use of uninitialized argument value.
	ping: fix dead assignment.
	rarpd: fix uninitialized argument value.
	rdisc: fix uninitialized argument value.
	tracepath: fix dereference of null pointer.

2019-01-01  Sami Kerola  <kerolasa@iki.fi>

	rarpd: use libc function to run in the background

	ninfod: check writing a pid file was successful

2019-01-01  Sami Kerola  <kerolasa@iki.fi>

	libcommon: check standard streams status at exit

	Earlier commands happily successed when writing to standard out or error did
	not work.  Following demonstrates old and new behavior of all commands in
	this project.

	    $ ping -c 1 127.0.0.1 > /dev/full ; echo $?
	    0
	    $ ping -c 1 127.0.0.1 > /dev/full ; echo $?
	    ./builddir/ping: write error: No space left on device
	    1

2018-12-22  Sami Kerola  <kerolasa@iki.fi>

	rarpd: use error() to report command errors

2018-12-22  Sami Kerola  <kerolasa@iki.fi>

	common: move error() portability go-around to common library

	This allows use of error() in other programs.  The static common library can
	also be used for other utility functions in future.

2018-12-20  Sami Kerola  <kerolasa@iki.fi>

	man: reindent xml files

	Due to great amount of change in this update normal review is not possible.
	I used following to ensure there are no unexpected changes.

	    # Generate old manual pages.
	    git checkout origin/master
	    make clean && make
	    mkdir a
	    for i in builddir/doc/*; do man $i > a/${i##*/}; done
	    # Generate new manual pages.
	    git checkout <this-branch>
	    make clean && make
	    mkdir b
	    for i in builddir/doc/*; do man $i > b/${i##*/}; done
	    # Compare.
	    diff -ruP a b

2018-12-20  Sami Kerola  <kerolasa@iki.fi>

	man: update to docbook 5

2018-12-20  Sami Kerola  <kerolasa@iki.fi>

	man: fix rarpd command name in synopsis

	While going through this manual page I noticed --help output being
	incomplete, so lets sort that out in same go.

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: fix multiple errno printing format specifier issues

	All of these report same warning:
	ISO C does not support the ‘%m’ gnu_printf format [-Wformat=]

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	add version print out to remaining commands

	For some reason version print out was not implemented in all commands.  This
	fixes that.

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	ping, rarpd, rdisc: remove historical no-op SA_INTERRUPT

	The sigaction option SA_INTERRUPT has been no-op for long time.

	Reference: https://lwn.net/Articles/229673/

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	usage: unify usage outputs, and improve their helpfulness

	Just listing options, like ping(8) did, does not help users.

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	various: do not use kernel data types in userspace

	It is long standing recommendation not to mix kernel and user space headers.
	See reference for details.

	Reference: https://lwn.net/Articles/113349/

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	docs: fix docbook xml expectations warnings

	This version of xslproc:

	$ xsltproc --version
	Using libxml 20907, libxslt 10132-GITv1.1.32-3-g32c88216 and libexslt 820
	xsltproc was compiled against libxml 20906, libxslt 10132 and libexslt 820
	libxslt 10132 was compiled against libxml 20906
	libexslt 820 was compiled against libxml 20906

	Printed following warning at each manual page creation.

	[17/25] Generating arping.8 with a custom command.
	Note: meta source : no *info/productname or alternative            arping
	Note: meta source : see http://www.docbook.org/tdg5/en/html/produ  arping
	Note: meta source : no refentry/refmeta/refmiscinfo@class=source   arping
	Note: meta source : see http://www.docbook.org/tdg5/en/html/refmi  arping
	Note: meta version: no *info/productnumber or alternative          arping
	Note: meta version: see http://www.docbook.org/tdg5/en/html/produ  arping
	Note: meta version: no refentry/refmeta/refmiscinfo@class=version  arping
	Note: meta version: see http://www.docbook.org/tdg5/en/html/refmi  arping
	Warn: meta source : using "iputils" for "source"                   arping

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: fix multiple unused parameter warnings

	This fixes multiple instances of unnused parameter warnings, that look like:
	ping.c:1025:36: warning: unused parameter 'len' [-Wunused-parameter]

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: fix multiple signed and unsigned integer expressions

	This fixes many many instances of the following warnings.

	warning: comparison between signed and unsigned integer expressions
	[-Wsign-compare]

	Unfortunately the fix includes lots of type casts.  Each of them was
	considered from overflow point of view, and will hopefully not cause any
	issues.

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: fix rarpd variable initialisation

	Refer struct field names in initialiser, and trust compilers to be standard
	compliant and fill rest of the data with zeros.  This fixes following
	compiler warning:

	rarpd.c:307:4: warning: missing initializer for field 'lladdr' of 'struct
	rarp_map' [-Wmissing-field-initializers]

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: add marker to implicit fallthrough

	This fixes an implicit fallthrough warning, that looks like:
	rarpd.c:483:41: warning: this statement may fall through [-Wimplicit-fallthrough=]

2018-10-03  Sami Kerola  <kerolasa@iki.fi>

	warnings: remove variable shadowing

	This fixes multiple instances of variable shadowing warning, that look like:
	warning: declaration of 'var' shadows a previous local [-Wshadow]

2017-08-05  David Heidelberg  <david@ixit.cz>

	doc: convert from converting SGML to XML

	This work is mostly inspired by systemd manpages procedure creation. [1]

	With this commit, you can freely throw SGML tools and you should be fine
	with xsltproc :)

	Enjoy!

	Also, please don't be shy fix bugs, it will need more polishing!

	[1] https://github.com/systemd/systemd/tree/master/man

	Fixes bug: https://github.com/iputils/iputils/issues/1
	Fixes bug: https://github.com/iputils/iputils/issues/27

2014-04-18  David Heidelberger  <david.heidelberger@ixit.cz>

	replace non-POSIX compilant caddr_t with char *

	fix include paths, now compile with both glibc and musl

2012-01-09  YOSHIFUJI Hideaki  <yoshfuji@linux-ipv6.org>

	rarpd: Check return value of chdir().

2007-10-12  YOSHIFUJI Hideaki  <yoshfuji@linux-ipv6.org>

	[RARPD]: Fixed several signedness issues for char strings.

2007-04-04  YOSHIFUJI Hideaki  <yoshfuji@linux-ipv6.org>

	Fix white space errors.

2006-12-20  Mike Frysinger  <vapier@gentoo.org>

	[PATCH] Use socklen_t in all the right places.

2006-04-16  YOSHIFUJI Hideaki  <yoshfuji@linux-ipv6.org>

	Initial import of iputils

	Obtained from <ftp://ftp.inr.ac.ru/ip-routing/iputils-ss020927.tar.gz>.
