From ec60046d32fad0f59e435a67f0ec59fbbee2d59c Mon Sep 17 00:00:00 2001 From: Martin Nagy Date: Apr 27 2009 19:35:39 +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..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 @@ -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 #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 #include #include -@@ -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 + ++#include +#include +#include +#include +#include ++#include +#include +#include +#include @@ -208,6 +249,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 +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 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 32:9.6.1-0.2.b1 - update the patch for dynamic loading of database backends - fix dns_db_unregister()