A contribuição "sdb/pgsqldb" foi incluída na versão 9.1.3 do
Bind e vem sendo mantida pela ISC até a versão atual do mesmo. A própria ISC, mantenedora do Bind, relata que esta contribuição não é totalmente estável. Estou utilizando a contribuição e até o momento não tive nenhum problema relacionado. Esta contribuição possibilita que o bind consulte suas zonas de DNS diretamente no banco de dados PostgreSQL. Softwares e versões utilizados na experiência:
- OpenBSD 4.0
- bind 9.3.3
- PostgreSQL Server/Client 8.1.4
- pgsqldb.c 1.12.4.2.8.2
Obtendo, configurando e compilando o source code do bind
Primeiramente é necessário realizar o download do source code do bind, após este procedimento é necessário descompactar o pacote:
$ wget ftp://ftp.isc.org/isc/bind9/9.3.3/bind-9.3.3.tar.gz
$ tar -zxvf bind-9.3.3.tar.gz -C /dir-source-bind/
Após este processo acesse o diretório onde o pacote foi descompactado e copie as bibliotecas do pgsqldb para o diretório onde se encontra o source code do named:
$ cd /dir-source-bind/
$ cp ./contrib/sdb/pgsqldb/* ./bin/named/
É necessário alterar alguns parâmetros no Makefile.in (/dir-source-bind/bin/named/Makefile.in) do named, as linhas dos parâmetros estão vazias, estas linhas estão localizadas logo abaixo do comentário "# Add database drivers here". Elas devem ser preenchidas da seguinte forma:
DBDRIVER_OBJS = pgsqldb.@O@
DBDRIVER_SRCS = pgsqldb.c
DBDRIVER_INCLUDES = -I/usr/local/includes/postgresql/
DBDRIVER_LIBS = -lpq -L/usr/local/lib/postgresql/
No próximo procedimento devemos inserir o caminho da biblioteca pgsqldb.h no source code do named(/dir-source-bind/bin/named/main.c), abaixo do comentário "/* #include "xxdb.h" */" inserir a seguinte linha:
#include "pgsqldb.h"
No mesmo arquivo deve-se adicionar após o comentário "/* xxdb_init(); */" a seguinte linha:
pgsqldb_init();
O mesmo deve ser feito após o comentário /* xxdb_clear(); */ adicionando a seguinte linha:
pgsqldb_clear();
Antes de iniciar o processo de compilação é necessário criar os seguintes links simbólicos:
# ln -fs /usr/local/include/postgresql/ /usr/local/include/postgresql/pgsql
# ln -s /usr/local/lib/libpq.so.4.1 /usr/local/lib/postgresql/
Após todo procedimento, pode-se dar início a compilação do bind.
# cd /dir-source-bind/
# ./configure --prefix=PREFIX --exec-prefix=EPREFIX
# make
# make install