I'm not sure if this is of interest to anyone, but I wrote a FreeBSD accept filter for DNS a few years ago. An accept filter is a socket option that you can use to tell the kernel to wait before the accept() syscall returns. In this case, the accept filter delays the return of accept until there is a full DNS request in the buffer.
Named already tries to use FreeBSD's data-ready accept filter, but I've been using the patch below to make it use the DNS filter, if it is available. Would be interest in taking this into the BIND tree? David. (Note, to use the filter, you have to patch named and load the kernel module, "kldload accf_dns", and then restart named.) Index: bin/named/interfacemgr.c =================================================================== RCS file: /home/ncvs/src/contrib/bind9/bin/named/interfacemgr.c,v retrieving revision 1.8 diff -u -r1.8 interfacemgr.c --- bin/named/interfacemgr.c 5 Apr 2012 04:29:35 -0000 1.8 +++ bin/named/interfacemgr.c 17 Oct 2012 13:00:13 -0000 @@ -328,7 +328,9 @@ * If/when there a multiple filters listen to the * result. */ - (void)isc_socket_filter(ifp->tcpsocket, "dataready"); + if (isc_socket_filter(ifp->tcpsocket, "dnsready") != ISC_R_SUCCESS) + isc_socket_filter(ifp->tcpsocket, "dataready"); + result = ns_clientmgr_createclients(ifp->clientmgr, ifp->ntcptarget, ifp, _______________________________________________ Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from this list bind-users mailing list bind-users@lists.isc.org https://lists.isc.org/mailman/listinfo/bind-users