tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PROPSAL: import Apple's mDNSResponder



I'd like to import Apple's mDNSResponder to the system. I think zeroconf is becoming more basic functionality, and is desirable across NetBSD's range of markets these days. Embedded devices and servers want to advertise services this way, and desktops want to access them.

There seem to be three potential choices out there for mDNS these days: Avahi, Apple's mDNSResponder, and the NetBSD SoC zeroconf.

Avahi is LGPL. mDNSResponder used to be APSL. Neither of those being acceptable, I believe that led to the SoC project. That project is still unfinished however, and in the meantime mDNSResponder has been relicensed in a combination of Apache2 (server) and BSD 3-clause (client library). As it is effectively the reference implementation, is externally maintained, and used in at least two other OSes (OS X of course, and it looks like OpenSolaris as well), it seems like the clear choice to me.


So, I would like to proceed as follows. There are a number of open questions or options.

1) Import mDNSResponder (currently 212.1, vs ancient 108 in pkgsrc) in src/external/apache2/dist. It will need a prepare-import.sh script to nuke the $Log$ lines in the sources (ugh!) and we can also prune out the Windows, OS X, MacOS 9, vxWorks, etc. sources.

2) Add reachover makefile for mdnsd. (QUESTION: do we want to call it mdnsd, which is how the supplied makefile builds it for "posix", or mDNSResponder, which is what OS/X calls it? OpenSolaris went with mdnsd)

3) dnsetxd has yacc source that requires a feature not present in our current yacc (YYPARSE_PARAM), so it will not be built for now.

4) OPTION: the pkg currently installs some debugging tools like mDNSIdentify, mDNSClientPosix, etc. These don't ship in OS X. Do we reachover these as well? My feeling is no -- get them from pkgsrc if you need them.

5) Create a _mdnsd (_mdnsresponder?) user/group and get mdnsd to run under it. The issue is writing the socket and pid file in /var/run, which it doesn't have permissions to. Other than that it works fine. My idea is to create /var/run/mdnsd, owned by _mdnsd, and change the code to create the socket & pid file under there instead of in /var/run.

6) Create a rc.d script for it (QUESTION: does it default on or off?)

7) Supply client library functionality (QUESTION: separate libdns_sd, or include in libc a'la OS X? OpenSolaris went separate.)

8) I would like to reachover for dns-sd(1) as well, but that one file seems to still bear a APSL license. I will contact Apple about getting that relicensed.

9) Write a new nss_mdns plugin. The current pkgsrc one is a wrapper around one written for Linux, and it has issues. (OPTION: separate nss_mdns.so plugin, or if we build the client functionality into libc, do we build in the nss plugin too?) I have open questions about how this integrates with regular DNS-SD (a'la PR 32373 -- see David Young's message on tech-net from 20090303)



Home | Main Index | Thread Index | Old Index