From 167651f0cd6eebf616138ffa6f59337d0733ff16 Mon Sep 17 00:00:00 2001 From: Martin Nagy Date: Apr 28 2009 17:18:06 +0000 Subject: - update the patch for dynamic loading of database backends - create %{_libdir}/bind directory --- diff --git a/bind-96-dyndb.patch b/bind-96-dyndb.patch index 2f5914f..bc2e839 100644 --- a/bind-96-dyndb.patch +++ b/bind-96-dyndb.patch @@ -1,6 +1,5 @@ -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 +--- a/bin/named/main.c ++++ b/bin/named/main.c @@ -44,6 +44,7 @@ #include @@ -18,9 +17,8 @@ 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 +--- a/bin/named/server.c ++++ b/bin/named/server.c @@ -57,6 +57,7 @@ #ifdef DLZ #include @@ -110,8 +108,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; +@@ -1189,6 +1257,37 @@ configure_view(dns_view_t *view, const c + #endif /* + * Configure dynamic databases. @@ -145,9 +143,9 @@ 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. + * Obtain configuration parameters that affect the decision of whether + * we can reuse/share an existing cache. + */ @@ -2942,6 +3041,7 @@ load_configuration(const char *filename, result = isc_task_beginexclusive(server->task); RUNTIME_CHECK(result == ISC_R_SUCCESS); @@ -165,10 +163,42 @@ 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 @@ +--- 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} $@ +--- /dev/null ++++ b/lib/dns/dynamic_db.c +@@ -0,0 +1,364 @@ +/* + * Copyright (C) 2008-2009 Red Hat, Inc. + * @@ -188,10 +218,12 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c + +#include + ++#include +#include +#include +#include +#include ++#include +#include +#include +#include @@ -208,6 +240,10 @@ diff -up /dev/null bind-9.6.1b1/lib/dns/dynamic_db.c +#include +#endif + ++#ifndef DYNDB_LIBDIR ++#define DYNDB_LIBDIR "" ++#endif ++ +#define CHECK(op) \ + do { result = (op); \ + if (result != ISC_R_SUCCESS) goto cleanup; \ @@ -280,6 +316,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 +326,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 +365,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 +563,19 @@ 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 +--- 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 \ +--- /dev/null ++++ b/lib/dns/include/dns/dynamic_db.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2008-2009 Red Hat, Inc. @@ -570,9 +627,8 @@ 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 +--- a/lib/dns/include/dns/log.h ++++ b/lib/dns/include/dns/log.h @@ -73,6 +73,7 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodul #define DNS_LOGMODULE_HINTS (&dns_modules[24]) #define DNS_LOGMODULE_ACACHE (&dns_modules[25]) @@ -581,21 +637,8 @@ 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 +--- a/lib/dns/include/dns/types.h ++++ b/lib/dns/include/dns/types.h @@ -56,6 +56,7 @@ typedef struct dns_dbtable dns_dbtable typedef void dns_dbversion_t; typedef struct dns_dlzimplementation dns_dlzimplementation_t; @@ -604,9 +647,8 @@ 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 +--- a/lib/dns/log.c ++++ b/lib/dns/log.c @@ -79,6 +79,7 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns { "dns/hints", 0 }, { "dns/acache", 0 }, @@ -615,31 +657,8 @@ 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 +--- 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;