I've got an update of NSD to v4.0, it's a fairly large diff so I've put it at http://junkpile.org/nsd4.diff (apply diff in /usr/src, it includes changes to etc/rc.d/nsd which must also be installed - to build NSD itself use "make -f Makefile.bsd-wrapper obj && make -f Makefile.bsd-wrapper && sudo make -f Makefile.bsd-wrapper install".) I have not yet updated the sample config file (except as noted below, an old working config file will still be OK).
Tested so far on powerpc and amd64, it would be particularly nice to have some reports from people using this on other arch, comments about the upgrade procedure would also be good. Update notes (also repeated in the diff file): cd /usr/sbin && rm nsd-notify nsd-patch nsd-xfer nsd-zonec nsdc cd /usr/share/man/man8 && rm nsd-notify.8 nsd-patch.8 nsd-xfer.8 nsd-zonec.8 nsdc.8 chown _nsd /var/nsd/db/nsd.db install -o _nsd -g _nsd -d 750 /var/nsd/run/xfr mv /etc/nsd.conf to /var/nsd/etc/nsd.conf - needed to support reloads while in chroot printf '\nremote-control:\n\tcontrol-enable: yes\n' >> /var/nsd/etc.nsd.conf $EDITOR /var/nsd/etc/nsd.conf - if you have "include" lines, edit them to specify the *full* path e.g. "include /var/nsd/etc/nsd.local" - nsd strips the chroot prefix as needed - remove any old cronjobs that run "nsdc patch", this is no longer needed N.B. NSD now uses mmap() to access its database. From what I have read so far access is done just via the mmap rather than a mixture of that and write(), but I may have missed something, more eyes on this would be very welcome.