aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/Config.in1
-rw-r--r--package/bind/Config.in22
-rw-r--r--package/bind/bind-cross-fix.patch43
-rw-r--r--package/bind/bind-dlopen.patch89
-rw-r--r--package/bind/bind.mk101
-rw-r--r--package/bind/bind.sysvinit52
-rw-r--r--package/bind/bind957
7 files changed, 365 insertions, 0 deletions
diff --git a/package/Config.in b/package/Config.in
index 0a579ba832..ffdd43748b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -30,6 +30,7 @@ source "package/at/Config.in"
source "package/autoconf/Config.in"
source "package/automake/Config.in"
source "package/berkeleydb/Config.in"
+source "package/bind/Config.in"
source "package/bison/Config.in"
source "package/boa/Config.in"
source "package/bridge/Config.in"
diff --git a/package/bind/Config.in b/package/bind/Config.in
new file mode 100644
index 0000000000..19d306852d
--- /dev/null
+++ b/package/bind/Config.in
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_BIND
+ bool "bind"
+ default n
+ help
+ BIND (Berkeley Internet Name Domain) is an implementation of
+ the Domain Name System (DNS) protocols and provides an openly
+ redistributable reference implementation of the major
+ components of the Domain Name System, including:
+
+ * a Domain Name System server (named)
+ * a Domain Name System resolver library
+ * tools for verifying the proper operation of the DNS server
+
+ The BIND DNS Server is used on the vast majority of name
+ serving machines on the Internet, providing a robust and
+ stable architecture on top of which an organization's naming
+ architecture can be built. The resolver library included in
+ the BIND distribution provides the standard APIs for
+ translation between domain names and Internet addresses and is
+ intended to be linked with applications requiring name service.
+
+ http://www.isc.org/sw/bind/
diff --git a/package/bind/bind-cross-fix.patch b/package/bind/bind-cross-fix.patch
new file mode 100644
index 0000000000..07a9084677
--- /dev/null
+++ b/package/bind/bind-cross-fix.patch
@@ -0,0 +1,43 @@
+diff -Naur bind-9.3.1/configure bind/configure
+--- bind-9.3.1/configure 2004-12-08 20:09:03.000000000 -0800
++++ bind/configure 2005-09-09 16:06:50.000000000 -0700
+@@ -23678,11 +23678,9 @@
+ echo "$as_me:$LINENO: checking for inet_ntop with IPv6 support" >&5
+ echo $ECHO_N "checking for inet_ntop with IPv6 support... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
++ echo "$as_me:$LINENO: result: assuming target platform has working inet_ntop" >&5
++echo "${ECHO_T}assuming target platform has working inet_ntop" >&6
++ ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+diff -Naur bind-9.3.1/configure.in bind/configure.in
+--- bind-9.3.1/configure.in 2004-12-08 20:07:10.000000000 -0800
++++ bind/configure.in 2005-09-09 16:06:39.000000000 -0700
+@@ -1414,7 +1414,9 @@
+ [AC_MSG_RESULT(no)
+ ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O"
+ ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c"
+- ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])
++ ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"],
++ [AC_MSG_RESULT(assuming target platform has working inet_ntop)
++ ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"])
+
+
+ # On NetBSD 1.4.2 and maybe others, inet_pton() incorrectly accepts
+--- bind-9.3.1/lib/dns/Makefile.in 2005-09-09 16:21:34.000000000 -0700
++++ bind/lib/dns/Makefile.in 2005-09-09 16:28:16.000000000 -0700
+@@ -156,7 +156,7 @@
+ ./gen -s ${srcdir} > code.h
+
+ gen: gen.c
+- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
++ cc ${ALL_CFLAGS} -o $@ ${srcdir}/gen.c
+
+ rbtdb64.@O@: rbtdb.c
+
diff --git a/package/bind/bind-dlopen.patch b/package/bind/bind-dlopen.patch
new file mode 100644
index 0000000000..b846d471b4
--- /dev/null
+++ b/package/bind/bind-dlopen.patch
@@ -0,0 +1,89 @@
+--- bind-9.3.1/bin/named/Makefile.in 2004-09-06 14:47:25.000000000 -0700
++++ bind/bin/named/Makefile.in 2005-09-19 15:55:17.000000000 -0700
+@@ -29,7 +29,7 @@
+ DBDRIVER_OBJS =
+ DBDRIVER_SRCS =
+ DBDRIVER_INCLUDES =
+-DBDRIVER_LIBS =
++DBDRIVER_LIBS = -ldl
+
+ CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include \
+ ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
+diff -aur bind-9.3.1/bin/named/main.c bind/bin/named/main.c
+--- bind-9.3.1/bin/named/main.c 2004-10-24 17:42:54.000000000 -0700
++++ bind/bin/named/main.c 2005-09-14 10:49:28.000000000 -0700
+@@ -22,6 +22,7 @@
+ #include <ctype.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <dlfcn.h>
+
+ #include <isc/app.h>
+ #include <isc/commandline.h>
+@@ -540,6 +541,7 @@
+ static void
+ setup(void) {
+ isc_result_t result;
++ void *handle;
+
+ /*
+ * Get the user and group information before changing the root
+@@ -655,13 +657,33 @@
+ /*
+ * Add calls to register sdb drivers here.
+ */
+- /* xxdb_init(); */
+-
++ handle = dlopen ("cadb.so", RTLD_NOW);
++ if (!handle) {
++ fprintf (stderr, "failed to load cadb driver: %s\n", dlerror());
++ } else {
++ isc_result_t (*cadbinit)(void);
++ const char *error;
++
++ dlerror(); /* Clear any existing error */
++ *(void **) (&cadbinit) = dlsym(handle, "cadb_init");
++ if ((error = dlerror()) != NULL) {
++ fprintf (stderr, "failing loading cadbinit symbol: %s\n", error);
++ exit(1);
++ }
++
++ if((*cadbinit)() != ISC_R_SUCCESS) {
++ fprintf (stderr, "cadbinit failed");
++ exit(1);
++ }
++ }
++
+ ns_server_create(ns_g_mctx, &ns_g_server);
+ }
+
+ static void
+ cleanup(void) {
++ void *handle;
++
+ destroy_managers();
+
+ ns_server_destroy(&ns_g_server);
+@@ -671,7 +693,21 @@
+ /*
+ * Add calls to unregister sdb drivers here.
+ */
+- /* xxdb_clear(); */
++ handle = dlopen ("cadb.so", RTLD_NOW);
++ if (!handle) {
++ fprintf (stderr, "failed to load cadb driver: %s\n", dlerror());
++ } else {
++ isc_result_t (*cadbclear)(void);
++ const char *error;
++
++ dlerror(); /* Clear any existing error */
++ *(void **) (&cadbclear) = dlsym(handle, "cadb_clear");
++ if ((error = dlerror()) != NULL) {
++ fprintf (stderr, "failing loading cadbclear symbol: %s\n", error);
++ } else {
++ (*cadbclear)();
++ }
++ }
+
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
+ ISC_LOG_NOTICE, "exiting");
diff --git a/package/bind/bind.mk b/package/bind/bind.mk
new file mode 100644
index 0000000000..c321cabecd
--- /dev/null
+++ b/package/bind/bind.mk
@@ -0,0 +1,101 @@
+#############################################################
+#
+# bind
+#
+#############################################################
+BIND_VER:=9.3.1
+BIND_SOURCE:=bind-$(BIND_VER).tar.gz
+BIND_SITE:=ftp://ftp.isc.org/isc/bind9/$(BIND_VER)
+BIND_DIR1:=$(TOOL_BUILD_DIR)/bind-$(BIND_VER)
+BIND_DIR2:=$(BUILD_DIR)/bind-$(BIND_VER)
+BIND_CAT:=zcat
+BIND_BINARY:=bin/named/named
+BIND_TARGET_BINARY:=usr/sbin/named
+
+$(DL_DIR)/$(BIND_SOURCE):
+ $(WGET) -P $(DL_DIR) $(BIND_SITE)/$(BIND_SOURCE)
+
+bind-source: $(DL_DIR)/$(BIND_SOURCE)
+
+#############################################################
+#
+# build bind for use on the target system
+#
+#############################################################
+$(BIND_DIR2)/.unpacked: $(DL_DIR)/$(BIND_SOURCE)
+ $(BIND_CAT) $(DL_DIR)/$(BIND_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(BIND_DIR2) package/bind/ bind\*.patch
+ touch $(BIND_DIR2)/.unpacked
+
+$(BIND_DIR2)/Makefile: $(BIND_DIR2)/.unpacked
+ (cd $(BIND_DIR2); rm -rf config.cache; \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ ./configure \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --libdir=/lib \
+ --includedir=/include \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --without-openssl \
+ --with-randomdev=/dev/random \
+ --enable-ipv6 \
+ --disable-static \
+ --with-libtool \
+ );
+
+$(BIND_DIR2)/$(BIND_BINARY): $(BIND_DIR2)/Makefile
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 -C $(BIND_DIR2)
+ touch -c $(BIND_DIR2)/$(BIND_BINARY)
+
+#############################################################
+#
+# install bind binaries
+#
+#############################################################
+$(TARGET_DIR)/$(BIND_TARGET_BINARY): $(BIND_DIR2)/$(BIND_BINARY)
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 MAKEDEFS="INSTALL_DATA=true" \
+ DESTDIR=$(TARGET_DIR) -C $(BIND_DIR2)/bin install
+ cd $(TARGET_DIR)/usr/man; rmdir --ignore-fail-on-non-empty man8 man5 `pwd`
+ $(INSTALL) -m 0755 -D package/bind/bind.sysvinit $(TARGET_DIR)/etc/init.d/S81named
+
+bind-bin: $(TARGET_DIR)/$(BIND_TARGET_BINARY) bind-lib
+
+#############################################################
+#
+# install bind libraries
+#
+#############################################################
+$(STAGING_DIR)/lib/libdns.so: $(BIND_DIR2)/$(BIND_BINARY)
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 DESTDIR=$(STAGING_DIR) -C $(BIND_DIR2)/lib install
+
+$(TARGET_DIR)/usr/lib/libdns.so: $(STAGING_DIR)/lib/libdns.so
+ mkdir -p $(TARGET_DIR)/usr/lib
+ cd $(STAGING_DIR)/lib; \
+ cp -a libdns.* libisc.* libisccc.* libbind9.* liblwres.* libisccfg.* \
+ $(TARGET_DIR)/usr/lib
+
+bind-lib: $(STAGING_DIR)/lib/libdns.so $(TARGET_DIR)/usr/lib/libdns.so
+
+bind: uclibc bind-bin bind-lib
+
+bind-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(BIND_DIR2) uninstall
+ -$(MAKE) -C $(BIND_DIR2) clean
+
+bind-dirclean:
+ rm -rf $(BIND_DIR2)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_BIND)),y)
+TARGETS+=bind
+endif
+
diff --git a/package/bind/bind.sysvinit b/package/bind/bind.sysvinit
new file mode 100644
index 0000000000..a9babd2153
--- /dev/null
+++ b/package/bind/bind.sysvinit
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# System-V init to control the bind DNS Daemon
+#
+
+NAME=named
+DAEMON=/usr/sbin/$NAME
+
+# this file contains a few tunable parameters
+test -r /etc/default/named && . /etc/default/named
+
+test -f $DAEMON || exit 0
+
+set -e
+
+case "$1" in
+ start)
+ test -z "$CHROOT" || ARGS="$ARGS -t $CHROOT"
+ test -z "$SETUID" || ARGS="$ARGS -u $SETUID"
+ if [ ! -f $CHROOT/etc/rndc.key ]; then
+ echo -n "Initializing $NAME control key: rndc-confgen"
+ set +e
+ touch $CHROOT/etc/rndc.key # handle symlinks
+ rndc-confgen -a -r /dev/urandom $ARGS || echo "."
+ set -e
+ fi
+ test -z "$CONF" || ARGS="$ARGS -c $CONF"
+ echo -n "Starting domain name daemon: $NAME"
+ trap 'echo failed' 0
+ start-stop-daemon -S -x $DAEMON -- $ARGS
+ trap - 0
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping domain name daemon: $NAME"
+ rndc stop || start-stop-daemon -K -x $DAEMON
+ echo "."
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start && exit $?
+ ;;
+ reload|force-reload)
+ rndc reload && exit $?
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/package/bind/bind9 b/package/bind/bind9
new file mode 100644
index 0000000000..aa07b41a92
--- /dev/null
+++ b/package/bind/bind9
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# for a chrooted server: "-u bind -t /var/lib/named"
+OPTIONS=""
+
+test -x /usr/sbin/rndc || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting domain name service: named"
+
+ # dirs under /var/run can go away on reboots.
+ mkdir -p /var/run/bind/run
+ chmod 775 /var/run/bind/run
+ chown root:bind /var/run/bind/run >/dev/null 2>&1 || true
+
+ if [ ! -x /usr/sbin/named ]; then
+ echo "named binary missing - not starting"
+ exit 1
+ fi
+ if start-stop-daemon --start --quiet --exec /usr/sbin/named \
+ --pidfile /var/run/bind/run/named.pid -- $OPTIONS; then
+ if [ -x /sbin/resolvconf ] ; then
+ echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo
+ fi
+ fi
+ echo "."
+ ;;
+
+ stop)
+ echo -n "Stopping domain name service: named"
+ if [ -x /sbin/resolvconf ]; then
+ /sbin/resolvconf -d lo
+ fi
+ /usr/sbin/rndc stop
+ echo "."
+ ;;
+
+ reload)
+ /usr/sbin/rndc reload
+ ;;
+
+ restart|force-reload)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+
+ *)
+ echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0