[bind10-dev] Windows support status
Shane Kerr
shane at isc.org
Tue Apr 26 10:03:23 UTC 2011
Francis,
On Fri, 2011-04-22 at 14:26 +0000, Francis Dupont wrote:
> I first tried to build libraries as DLL but in fact the DLL idea is
> very bound to C and is incompatible with C++, so I changed my mind
> and built static libraries. Note if we create a C++ -> C wrapper
> to use bind10 libraries from C, wrapped objects will be good
> candidates for DLLs.
Interesting... this exact same problem exists in Unix, and would
probably be solved in the same way (C++ -> C wrappers).
> I found two problems which can't be simply solved (so I stopped at
> the cc library, I ported only exception and dns libraries):
> - the cc library uses local (aka PF_UNIX) sockets. The obvious fix
> is to moved to local TCP/IP sockets or to switch to something else,
> but this is not trivial and needs some coordination.
As discussed, we're probably going to be replacing the existing msgq
communication channel stuff. We have a ticket for this:
http://bind10.isc.org/ticket/765
It's currently lower priority than getting our TSIG and logging working,
but will probably pop up at the beginning of the next 6-week release
planning. :)
> - open socket file descriptors are transmitted using a PF_UNIX socket
> feature. This is highly not portable but the function can be
> performed another way on Windows so I proposed a two step plan:
> * offer as an alternative the use of /proc (note the idea is
> not to replace PF_UNIX, /proc is in fact less portable but
> its interface is very closed to the second step)
> * use WSADuplicateSocket() on Windows (the another way)
I'm still not sure why /proc would be helpful here. The code is in
src/lib/util/io/fd_share.{cc,h} and is about 200 lines, although that is
closer to 150 without header copyright boilerplate. Make a completely
separate implementation for Windows seems like the easiest way forward,
IMHO.
Another issue for a straight Windows port is the Boss process (the main
BIND 10 program). It uses the Python subprocess module, so there should
not be too many issues in terms of starting/stopping processes, but the
signal handling will need to be investigated (probably skipped
completely in Windows).
A more tricky issue is that ideally BIND 10 will be a "nice" Windows
program, with a graphical installer (and configuration?) and integration
with Windows start-up and so on. I'd like to see a nice system tray
thingy for integrating with the resolver, for example.
An even bigger issue is that AFAICT everybody runs BIND 9 on Unix
systems, so nobody really cares about BIND under Windows. Maybe we can
change that though?
--
Shane
More information about the bind10-dev
mailing list