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.




Reply via email to