Writing backends without access to the full PDNS source means that you need to write code that can be loaded by PDNS at runtime. This in turn means that you need to use the same compiler that we do. For linux, this is currently GCC 3.0.4, although any 3.0.x compiler is probably fine. In tests, even 3.1 works.
For FreeBSD we use GCC 2.95.2.
Furthermore, your pdns_server executable must be dynamically linked. The default .rpm PDNS contains a static binary so you need to retrieve the dynamic rpm or the dynamic tar.gz or the Debian unstable ('Woody') deb. FreeBSD dynamic releases are forthcoming.
A: 'Probably'. We make no guarantees. Efforts have been made to keep the interface between the backend and PDNS as thin as possible. For example, a backend compiled with the 1.99.11 backend development kit works with 1.99.10. But don't count on it. We will notify when we think an incompatible API change has occured but you are best off recompiling your driver for each new PDNS release.
A: For reasons outlined above, you should treat that pointer as opaque and only access it via the getRemote()
functions made available and documented above. The DNSPacket class changes a lot and this level of indirection allows for greater
changes to be made without changing the API to the backend coder.
A: MIT X11, a very liberal license permitting basically everything.
A: Please do! If you tell us about it we will list you on our page.
A: You can. Again, if you tell us about them we will list your backend on the site. You can keep the source of your backend secret if you want, or you can share it with the world under any license of your chosing.
A: If your license permits it and we like your backend, we sure will. If your license does not permit it but we like your backend anyway we may contact you.
A: Your pdns_server binary is static and cannot load a backend driver at runtime. Get a dynamic version of pdns, or complain to pdns@powerdns.com if one isn't available. To check what kind of binary you have, execute 'file $(which pdns_server)'.
A: You compiled with the wrong GCC. Use GCC 3.x for Linux, 2.95.x for FreeBSD. You may want to change g++ to g++-3.0 in the Makefile, or change your path so that 3.x is used.
A: Run 'ldd' on the pdns_server binary and figure out what libraries you are missing. Most likely you need to install gcc 3.0 libraries, RedHat 7.1 and 7.2 have packages available, Debian installs these by default if you use the 'unstable deb' of PDNS.
A: This name has historical reasons and has no significance.
A: Yes, we also do custom development. Contact us at pdns@powerdns.com.