On 10/04/2026 16:15, Martin-Éric Racine wrote:
Someone apparently filed a Merge Request a couple of days ago:
https://salsa.debian.org/debian/openntpd/-/merge_requests/6
Comments are welcome.
1) There is a reference remaining to OS X in the copied adjfreq_gnu.c
but otherwise the contents are fine with adjfreq missing on GNU/Hurd.
This matches what I did to overcome the missing functionality.
2) Changes to the build system are also fine with the crucial -D_GNU_SOURCE.
3) There is no need to alter the ibuf_write and msgbuf_write functions.
Simply defining IOV_MAX to something similar to that defined by Linux or
OpenBSD would work. It's true that the code here is not defensive in
that if the number of items in the msgbuf->bufs exceeds IOV_MAX then
some buffers won't be written. The solution would be to wrap the bulk of
each function in a loop to call writev in batches of up to IOV_MAX but
the authors must expect that the number of list items is never any where
near a normal limit for IOV_MAX. There is of course no actual limit for
Hurd so something like the following would suffice (suitably qualified
perhaps for Hurd only):
#ifndef IOV_MAX
#define IOV_MAX 1024
#endif
I didn't need to make any other code changes to openntpd for it to
synchronise the time successfully. It will not work until the ongoing
fixes for adjtime() are resolved and make it to deployment.
Finally, openntpd runs a chroot in its run directory which defaults to
/var/run/openntpd. It needs access to '/dev/urandom' and the network
configuration so needs those translators available in the chroot. For
development I simply altered the init script to add during start:
mkdir -p /var/run/openntpd/dev
settrans -c /var/run/openntpd/dev/urandom /hurd/firmlink
/dev/urandom
settrans -c /var/run/openntpd/servers /hurd/firmlink
/servers
Someone should work out the best method for the above and how to
introduce them as an arch-specific patch.
Cheers,
Mike.