summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@fedoraproject.org>2009-04-27 19:35:39 +0000
committerMartin Nagy <mnagy@fedoraproject.org>2009-04-27 19:35:39 +0000
commitec60046d32fad0f59e435a67f0ec59fbbee2d59c (patch)
treec8013bea0c00fb42e118e1568a3290fb1b1083d1
parent3475d4ccbea143b79aab3d390a8552b12cfc3868 (diff)
downloadbind-ec60046d32fad0f59e435a67f0ec59fbbee2d59c.tar.gz
bind-ec60046d32fad0f59e435a67f0ec59fbbee2d59c.tar.xz
bind-ec60046d32fad0f59e435a67f0ec59fbbee2d59c.zip
- update the patch for dynamic loading of database backends
- create %{_libdir}/bind directory
-rw-r--r--bind-96-dyndb.patch189
-rw-r--r--bind.spec8
2 files changed, 122 insertions, 75 deletions
diff --git a/bind-96-dyndb.patch b/bind-96-dyndb.patch
index 2f5914f..ac1380a 100644
--- a/bind-96-dyndb.patch
+++ b/bind-96-dyndb.patch
@@ -1,6 +1,7 @@
-diff -up bind-9.6.1b1/bin/named/main.c.dyndb bind-9.6.1b1/bin/named/main.c
---- bind-9.6.1b1/bin/named/main.c.dyndb 2009-01-19 00:47:34.000000000 +0100
-+++ bind-9.6.1b1/bin/named/main.c 2009-04-24 17:09:55.747902371 +0200
+diff --git a/bin/named/main.c b/bin/named/main.c
+index aa6575a..aed2a55 100644
+--- a/bin/named/main.c
++++ b/bin/named/main.c
@@ -44,6 +44,7 @@
#include <isccc/result.h>
@@ -18,10 +19,11 @@ diff -up bind-9.6.1b1/bin/named/main.c.dyndb bind-9.6.1b1/bin/named/main.c
dns_name_destroy();
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
-diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
---- bind-9.6.1b1/bin/named/server.c.dyndb 2009-01-30 04:53:38.000000000 +0100
-+++ bind-9.6.1b1/bin/named/server.c 2009-04-24 17:12:06.467623220 +0200
-@@ -57,6 +57,7 @@
+diff --git a/bin/named/server.c b/bin/named/server.c
+index 31b2761..7670f1a 100644
+--- a/bin/named/server.c
++++ b/bin/named/server.c
+@@ -56,6 +56,7 @@
#ifdef DLZ
#include <dns/dlz.h>
#endif
@@ -29,7 +31,7 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
#include <dns/forward.h>
#include <dns/journal.h>
#include <dns/keytable.h>
-@@ -849,6 +850,72 @@ configure_peer(const cfg_obj_t *cpeer, i
+@@ -849,6 +850,72 @@ configure_peer(const cfg_obj_t *cpeer, isc_mem_t *mctx, dns_peer_t **peerp) {
}
static isc_result_t
@@ -102,7 +104,7 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) {
isc_result_t result;
const cfg_obj_t *algorithms;
-@@ -1016,6 +1083,7 @@ configure_view(dns_view_t *view, const c
+@@ -999,6 +1066,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
unsigned int dlzargc;
char **dlzargv;
#endif
@@ -110,8 +112,8 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
const cfg_obj_t *disabled;
const cfg_obj_t *obj;
const cfg_listelt_t *element;
-@@ -1238,6 +1306,37 @@ configure_view(dns_view_t *view, const c
- view->maxncachettl = 7 * 24 * 3600;
+@@ -1171,6 +1239,37 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
+ #endif
/*
+ * Configure dynamic databases.
@@ -148,7 +150,7 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
* Configure the view's cache. Try to reuse an existing
* cache if possible, otherwise create a new cache.
* Note that the ADB is not preserved in either case.
-@@ -2942,6 +3041,7 @@ load_configuration(const char *filename,
+@@ -2903,6 +3002,7 @@ load_configuration(const char *filename, ns_server_t *server,
result = isc_task_beginexclusive(server->task);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
@@ -156,7 +158,7 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
/*
* Parse the global default pseudo-config file.
*/
-@@ -4185,6 +4285,8 @@ loadconfig(ns_server_t *server) {
+@@ -4140,6 +4240,8 @@ loadconfig(ns_server_t *server) {
static isc_result_t
reload(ns_server_t *server) {
isc_result_t result;
@@ -165,10 +167,47 @@ diff -up bind-9.6.1b1/bin/named/server.c.dyndb bind-9.6.1b1/bin/named/server.c
CHECK(loadconfig(server));
result = load_zones(server, ISC_FALSE);
-diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
---- /dev/null 2009-04-24 12:29:41.524001256 +0200
-+++ bind-9.6.1b1/lib/dns/dynamic_db.c 2009-04-24 17:09:55.751902027 +0200
-@@ -0,0 +1,347 @@
+diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in
+index ef5c12a..97cc9fa 100644
+--- a/lib/dns/Makefile.in
++++ b/lib/dns/Makefile.in
+@@ -57,7 +57,8 @@ DSTOBJS = @DST_EXTRA_OBJS@ \
+ DNSOBJS = acache.@O@ acl.@O@ adb.@O@ byaddr.@O@ \
+ cache.@O@ callbacks.@O@ compress.@O@ \
+ db.@O@ dbiterator.@O@ dbtable.@O@ diff.@O@ dispatch.@O@ \
+- dlz.@O@ dnssec.@O@ ds.@O@ forward.@O@ iptable.@O@ journal.@O@ \
++ dlz.@O@ dnssec.@O@ ds.@O@ dynamic_db.@O@ forward.@O@ \
++ iptable.@O@ journal.@O@ \
+ keytable.@O@ lib.@O@ log.@O@ lookup.@O@ \
+ master.@O@ masterdump.@O@ message.@O@ \
+ name.@O@ ncache.@O@ nsec.@O@ nsec3.@O@ order.@O@ peer.@O@ portlist.@O@ \
+@@ -83,7 +84,7 @@ DSTSRCS = @DST_EXTRA_SRCS@ \
+ DNSSRCS = acache.c acl.c adb.c byaddr.c \
+ cache.c callbacks.c compress.c \
+ db.c dbiterator.c dbtable.c diff.c dispatch.c \
+- dlz.c dnssec.c ds.c forward.c iptable.c journal.c \
++ dlz.c dnssec.c ds.c dynamic_db.c forward.c iptable.c journal.c \
+ keytable.c lib.c log.c lookup.c \
+ master.c masterdump.c message.c \
+ name.c ncache.c nsec.c nsec3.c order.c peer.c portlist.c \
+@@ -114,6 +115,11 @@ version.@O@: version.c
+ -DLIBAGE=${LIBAGE} \
+ -c ${srcdir}/version.c
+
++dynamic_db.@O@: dynamic_db.c
++ ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
++ -DDYNDB_LIBDIR=\"@libdir@/bind/\" \
++ -c ${srcdir}/dynamic_db.c
++
+ libdns.@SA@: ${OBJS}
+ ${AR} ${ARFLAGS} $@ ${OBJS}
+ ${RANLIB} $@
+diff --git a/lib/dns/dynamic_db.c b/lib/dns/dynamic_db.c
+new file mode 100644
+index 0000000..25afaf5
+--- /dev/null
++++ b/lib/dns/dynamic_db.c
+@@ -0,0 +1,364 @@
+/*
+ * Copyright (C) 2008-2009 Red Hat, Inc.
+ *
@@ -188,10 +227,12 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+
+#include <config.h>
+
++#include <isc/buffer.h>
+#include <isc/mem.h>
+#include <isc/mutex.h>
+#include <isc/once.h>
+#include <isc/result.h>
++#include <isc/region.h>
+#include <isc/task.h>
+#include <isc/types.h>
+#include <isc/util.h>
@@ -208,6 +249,10 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+#include <dlfcn.h>
+#endif
+
++#ifndef DYNDB_LIBDIR
++#define DYNDB_LIBDIR ""
++#endif
++
+#define CHECK(op) \
+ do { result = (op); \
+ if (result != ISC_R_SUCCESS) goto cleanup; \
@@ -280,6 +325,9 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+load_library(isc_mem_t *mctx, const char *filename, dyndb_implementation_t **impp)
+{
+ isc_result_t result;
++ size_t module_size;
++ isc_buffer_t *module_buf = NULL;
++ isc_region_t module_region;
+ void *handle;
+ dyndb_implementation_t *imp;
+ register_func_t register_function = NULL;
@@ -287,7 +335,15 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+
+ REQUIRE(impp != NULL && *impp == NULL);
+
-+ handle = dlopen(filename, RTLD_LAZY);
++ /* Build up the full path. */
++ module_size = strlen(DYNDB_LIBDIR) + strlen(filename) + 1;
++ CHECK(isc_buffer_allocate(mctx, &module_buf, module_size));
++ isc_buffer_putstr(module_buf, DYNDB_LIBDIR);
++ isc_buffer_putstr(module_buf, filename);
++ isc_buffer_putuint8(module_buf, 0);
++ isc_buffer_region(module_buf, &module_region);
++
++ handle = dlopen((char *)module_region.base, RTLD_LAZY);
+ if (handle == NULL) {
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
+ DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
@@ -318,11 +374,11 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+
+ *impp = imp;
+
-+ return ISC_R_SUCCESS;
-+
+cleanup:
-+ if (handle != NULL)
++ if (result != ISC_R_SUCCESS && handle != NULL)
+ dlclose(handle);
++ if (module_buf != NULL)
++ isc_buffer_free(&module_buf);
+
+ return result;
+}
@@ -516,9 +572,24 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c
+
+ return args->timermgr;
+}
-diff -up /dev/null bind-9.6.1b1/lib/dns/include/dns/dynamic_db.h
---- /dev/null 2009-04-24 12:29:41.524001256 +0200
-+++ bind-9.6.1b1/lib/dns/include/dns/dynamic_db.h 2009-04-24 17:09:55.755932610 +0200
+diff --git a/lib/dns/include/dns/Makefile.in b/lib/dns/include/dns/Makefile.in
+index e9e049e..27fdc45 100644
+--- a/lib/dns/include/dns/Makefile.in
++++ b/lib/dns/include/dns/Makefile.in
+@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
+
+ HEADERS = acl.h adb.h byaddr.h cache.h callbacks.h \
+ cert.h compress.h \
+- db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h \
++ db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h dynamic_db.h \
+ dnssec.h ds.h events.h fixedname.h iptable.h journal.h keyflags.h \
+ keytable.h keyvalues.h lib.h log.h master.h masterdump.h \
+ message.h name.h ncache.h \
+diff --git a/lib/dns/include/dns/dynamic_db.h b/lib/dns/include/dns/dynamic_db.h
+new file mode 100644
+index 0000000..7b1c1ce
+--- /dev/null
++++ b/lib/dns/include/dns/dynamic_db.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008-2009 Red Hat, Inc.
@@ -570,10 +641,11 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/include/dns/dynamic_db.h
+isc_timermgr_t *dns_dyndb_get_timermgr(dns_dyndb_arguments_t *args);
+
+#endif
-diff -up bind-9.6.1b1/lib/dns/include/dns/log.h.dyndb bind-9.6.1b1/lib/dns/include/dns/log.h
---- bind-9.6.1b1/lib/dns/include/dns/log.h.dyndb 2009-01-19 00:47:41.000000000 +0100
-+++ bind-9.6.1b1/lib/dns/include/dns/log.h 2009-04-24 17:09:55.755932610 +0200
-@@ -73,6 +73,7 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodul
+diff --git a/lib/dns/include/dns/log.h b/lib/dns/include/dns/log.h
+index 5adcedd..e171028 100644
+--- a/lib/dns/include/dns/log.h
++++ b/lib/dns/include/dns/log.h
+@@ -73,6 +73,7 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodule_t dns_modules[];
#define DNS_LOGMODULE_HINTS (&dns_modules[24])
#define DNS_LOGMODULE_ACACHE (&dns_modules[25])
#define DNS_LOGMODULE_DLZ (&dns_modules[26])
@@ -581,22 +653,11 @@ diff -up bind-9.6.1b1/lib/dns/include/dns/log.h.dyndb bind-9.6.1b1/lib/dns/inclu
ISC_LANG_BEGINDECLS
-diff -up bind-9.6.1b1/lib/dns/include/dns/Makefile.in.dyndb bind-9.6.1b1/lib/dns/include/dns/Makefile.in
---- bind-9.6.1b1/lib/dns/include/dns/Makefile.in.dyndb 2008-11-15 00:47:33.000000000 +0100
-+++ bind-9.6.1b1/lib/dns/include/dns/Makefile.in 2009-04-24 17:09:55.755932610 +0200
-@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
-
- HEADERS = acl.h adb.h byaddr.h cache.h callbacks.h \
- cert.h compress.h \
-- db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h \
-+ db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h dynamic_db.h \
- dnssec.h ds.h events.h fixedname.h iptable.h journal.h keyflags.h \
- keytable.h keyvalues.h lib.h log.h master.h masterdump.h \
- message.h name.h ncache.h \
-diff -up bind-9.6.1b1/lib/dns/include/dns/types.h.dyndb bind-9.6.1b1/lib/dns/include/dns/types.h
---- bind-9.6.1b1/lib/dns/include/dns/types.h.dyndb 2009-01-29 23:40:35.000000000 +0100
-+++ bind-9.6.1b1/lib/dns/include/dns/types.h 2009-04-24 17:09:55.755932610 +0200
-@@ -56,6 +56,7 @@ typedef struct dns_dbtable dns_dbtable
+diff --git a/lib/dns/include/dns/types.h b/lib/dns/include/dns/types.h
+index 5223397..f434188 100644
+--- a/lib/dns/include/dns/types.h
++++ b/lib/dns/include/dns/types.h
+@@ -56,6 +56,7 @@ typedef struct dns_dbtable dns_dbtable_t;
typedef void dns_dbversion_t;
typedef struct dns_dlzimplementation dns_dlzimplementation_t;
typedef struct dns_dlzdb dns_dlzdb_t;
@@ -604,10 +665,11 @@ diff -up bind-9.6.1b1/lib/dns/include/dns/types.h.dyndb bind-9.6.1b1/lib/dns/inc
typedef struct dns_sdlzimplementation dns_sdlzimplementation_t;
typedef struct dns_decompress dns_decompress_t;
typedef struct dns_dispatch dns_dispatch_t;
-diff -up bind-9.6.1b1/lib/dns/log.c.dyndb bind-9.6.1b1/lib/dns/log.c
---- bind-9.6.1b1/lib/dns/log.c.dyndb 2007-06-19 01:47:40.000000000 +0200
-+++ bind-9.6.1b1/lib/dns/log.c 2009-04-24 17:09:55.755932610 +0200
-@@ -79,6 +79,7 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns
+diff --git a/lib/dns/log.c b/lib/dns/log.c
+index 7551e15..b9864eb 100644
+--- a/lib/dns/log.c
++++ b/lib/dns/log.c
+@@ -79,6 +79,7 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns_modules[] = {
{ "dns/hints", 0 },
{ "dns/acache", 0 },
{ "dns/dlz", 0 },
@@ -615,31 +677,10 @@ diff -up bind-9.6.1b1/lib/dns/log.c.dyndb bind-9.6.1b1/lib/dns/log.c
{ NULL, 0 }
};
-diff -up bind-9.6.1b1/lib/dns/Makefile.in.dyndb bind-9.6.1b1/lib/dns/Makefile.in
---- bind-9.6.1b1/lib/dns/Makefile.in.dyndb 2009-04-24 17:09:55.739922815 +0200
-+++ bind-9.6.1b1/lib/dns/Makefile.in 2009-04-24 17:09:55.751902027 +0200
-@@ -57,7 +57,8 @@ DSTOBJS = @DST_EXTRA_OBJS@ \
- DNSOBJS = acache.@O@ acl.@O@ adb.@O@ byaddr.@O@ \
- cache.@O@ callbacks.@O@ compress.@O@ \
- db.@O@ dbiterator.@O@ dbtable.@O@ diff.@O@ dispatch.@O@ \
-- dlz.@O@ dnssec.@O@ ds.@O@ forward.@O@ iptable.@O@ journal.@O@ \
-+ dlz.@O@ dnssec.@O@ ds.@O@ dynamic_db.@O@ forward.@O@ \
-+ iptable.@O@ journal.@O@ \
- keytable.@O@ lib.@O@ log.@O@ lookup.@O@ \
- master.@O@ masterdump.@O@ message.@O@ \
- name.@O@ ncache.@O@ nsec.@O@ nsec3.@O@ order.@O@ peer.@O@ portlist.@O@ \
-@@ -83,7 +84,7 @@ DSTSRCS = @DST_EXTRA_SRCS@ \
- DNSSRCS = acache.c acl.c adb.c byaddr.c \
- cache.c callbacks.c compress.c \
- db.c dbiterator.c dbtable.c diff.c dispatch.c \
-- dlz.c dnssec.c ds.c forward.c iptable.c journal.c \
-+ dlz.c dnssec.c ds.c dynamic_db.c forward.c iptable.c journal.c \
- keytable.c lib.c log.c lookup.c \
- master.c masterdump.c message.c \
- name.c ncache.c nsec.c nsec3.c order.c peer.c portlist.c \
-diff -up bind-9.6.1b1/lib/isccfg/namedconf.c.dyndb bind-9.6.1b1/lib/isccfg/namedconf.c
---- bind-9.6.1b1/lib/isccfg/namedconf.c.dyndb 2008-09-28 01:35:31.000000000 +0200
-+++ bind-9.6.1b1/lib/isccfg/namedconf.c 2009-04-24 17:09:55.755932610 +0200
+diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c
+index 0610489..a1dba32 100644
+--- a/lib/isccfg/namedconf.c
++++ b/lib/isccfg/namedconf.c
@@ -78,6 +78,7 @@ static cfg_type_t cfg_type_controls;
static cfg_type_t cfg_type_controls_sockaddr;
static cfg_type_t cfg_type_destinationlist;
@@ -656,7 +697,7 @@ diff -up bind-9.6.1b1/lib/isccfg/namedconf.c.dyndb bind-9.6.1b1/lib/isccfg/named
{ "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI },
{ "trusted-keys", &cfg_type_trustedkeys, CFG_CLAUSEFLAG_MULTI },
{ NULL, NULL, 0 }
-@@ -1365,6 +1367,40 @@ static cfg_type_t cfg_type_dialuptype =
+@@ -1365,6 +1367,40 @@ static cfg_type_t cfg_type_dialuptype = {
&cfg_rep_string, dialup_enums
};
diff --git a/bind.spec b/bind.spec
index 98440f6..75ba049 100644
--- a/bind.spec
+++ b/bind.spec
@@ -20,7 +20,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv
Name: bind
License: ISC
Version: 9.6.1
-Release: 0.2.%{PREVER}%{?dist}
+Release: 0.3.%{PREVER}%{?dist}
Epoch: 32
Url: http://www.isc.org/products/BIND/
Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -301,6 +301,7 @@ gzip -9 doc/rfc/*
# Build directory hierarchy
mkdir -p ${RPM_BUILD_ROOT}/etc/{rc.d/init.d,logrotate.d}
mkdir -p ${RPM_BUILD_ROOT}/usr/{bin,lib,sbin,include}
+mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/bind
mkdir -p ${RPM_BUILD_ROOT}/var/named/{slaves,data,dynamic}
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/{man1,man5,man8}
mkdir -p ${RPM_BUILD_ROOT}/var/run/named
@@ -482,6 +483,7 @@ rm -rf ${RPM_BUILD_ROOT}
%defattr(-,named,named,-)
%dir %{_localstatedir}/run/named
%defattr(-,root,root,-)
+%{_libdir}/bind
%config(noreplace) %{_sysconfdir}/sysconfig/named
%{_sysconfdir}/rc.d/init.d/named
%{_sbindir}/dnssec*
@@ -573,6 +575,10 @@ rm -rf ${RPM_BUILD_ROOT}
%ghost %{chroot_prefix}/etc/localtime
%changelog
+* Mon Apr 27 2009 Martin Nagy <mnagy redhat com> 32:9.6.1-0.3.b1
+- update the patch for dynamic loading of database backends
+- create %%{_libdir}/bind directory
+
* Fri Apr 24 2009 Martin Nagy <mnagy redhat com> 32:9.6.1-0.2.b1
- update the patch for dynamic loading of database backends
- fix dns_db_unregister()