rpms/bind/F-7 bind-9.4-dbus.patch, NONE, 1.1 .cvsignore, 1.30, 1.31 bind.spec, 1.189, 1.190 sources, 1.37, 1.38 bind-9.3.3rc2-dbus.patch, 1.3, NONE bind-9.3.4-sdb-sqlite-src.patch, 1.1, NONE bind-9.4-tsig-init.patch, 1.1, NONE bind-9.4.0-dbus-race-condition.patch, 1.1, NONE bind-bsdcompat.patch, 1.2, NONE

Adam Tkac (atkac) fedora-extras-commits at redhat.com
Wed Aug 22 10:57:25 UTC 2007


Author: atkac

Update of /cvs/pkgs/rpms/bind/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17209

Modified Files:
	.cvsignore bind.spec sources 
Added Files:
	bind-9.4-dbus.patch 
Removed Files:
	bind-9.3.3rc2-dbus.patch bind-9.3.4-sdb-sqlite-src.patch 
	bind-9.4-tsig-init.patch bind-9.4.0-dbus-race-condition.patch 
	bind-bsdcompat.patch 
Log Message:
- 9.4.2b1
- dropped patches
  - bind-bsdcompat (upstream)
  - bind-9.4-tsig-init (upstream)
  - bind-9.3.3rc2-dbus (obsoleted by bind-9.4-dbus.patch)
  - bind-9.4.0-dbus-race-condition.patch (upstream)
  - bind-9.3.4-sdb-sqlite-src.patch (upstream)


bind-9.4-dbus.patch:

--- NEW FILE bind-9.4-dbus.patch ---
diff -up bind-9.4.2b1/lib/isc/include/isc/socket.h.dbus bind-9.4.2b1/lib/isc/include/isc/socket.h
--- bind-9.4.2b1/lib/isc/include/isc/socket.h.dbus	2006-06-07 02:29:45.000000000 +0200
+++ bind-9.4.2b1/lib/isc/include/isc/socket.h	2007-08-21 12:57:33.000000000 +0200
@@ -135,6 +135,10 @@ struct isc_socket_connev {
 #define ISC_SOCKEVENT_NEWCONN	(ISC_EVENTCLASS_SOCKET + 3)
 #define ISC_SOCKEVENT_CONNECT	(ISC_EVENTCLASS_SOCKET + 4)
 
+#define ISC_SOCKEVENT_READ_READY  (ISC_EVENTCLASS_SOCKET + 5)
+#define ISC_SOCKEVENT_WRITE_READY (ISC_EVENTCLASS_SOCKET + 6)
+#define ISC_SOCKEVENT_SELECTED    (ISC_EVENTCLASS_SOCKET + 7)
+
 /*
  * Internal events.
  */
@@ -144,7 +148,8 @@ struct isc_socket_connev {
 typedef enum {
 	isc_sockettype_udp = 1,
 	isc_sockettype_tcp = 2,
-	isc_sockettype_unix = 3
+	isc_sockettype_unix = 3,
+	isc_sockettype_fd = 8
 } isc_sockettype_t;
 
 /*@{*/
@@ -747,6 +752,54 @@ isc_socket_permunix(isc_sockaddr_t *sock
  * \li	#ISC_R_FAILURE
  */
 
+isc_socketevent_t*
+isc_socket_fd_handle_reads( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when the isc_sockettype_fd sock 
+ * was select()-ed for read. If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+ 
+isc_socketevent_t*
+isc_socket_fd_handle_writes( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when the isc_sockettype_fd sock 
+ * was select()-ed for write. If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+
+isc_socketevent_t*
+isc_socket_fd_handle_selected( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when ALL isc_sockettype_fd sockets 
+ * have been select()-ed . If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+
+isc_socketevent_t*
+isc_socket_fd_handle_reads( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when the isc_sockettype_fd sock 
+ * was select()-ed for read. If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+ 
+isc_socketevent_t*
+isc_socket_fd_handle_writes( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when the isc_sockettype_fd sock 
+ * was select()-ed for write. If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+
+isc_socketevent_t*
+isc_socket_fd_handle_selected( isc_socket_t *sock, isc_socketevent_t *dev );
+/* register the "dev" event to be sent when ALL isc_sockettype_fd sockets 
+ * have been select()-ed . If there is already an event registered, it
+ * is returned, otherwise 0 is returned. If dev is 0, removes any existing
+ * registered event.
+ */
+
 ISC_LANG_ENDDECLS
 
 #endif /* ISC_SOCKET_H */
diff -up bind-9.4.2b1/lib/isc/unix/socket.c.dbus bind-9.4.2b1/lib/isc/unix/socket.c
--- bind-9.4.2b1/lib/isc/unix/socket.c.dbus	2007-05-21 03:56:11.000000000 +0200
+++ bind-9.4.2b1/lib/isc/unix/socket.c	2007-08-21 13:06:09.000000000 +0200
@@ -165,6 +165,11 @@ struct isc_socket {
 	ISC_LIST(isc_socketevent_t)		recv_list;
 	ISC_LIST(isc_socket_newconnev_t)	accept_list;
 	isc_socket_connev_t		       *connect_ev;
+        
+        /* these are used only by isc_sockettype_fd sockets:*/
+        isc_socketevent_t      *read_ready_event;
+        isc_socketevent_t      *write_ready_event;
+        isc_socketevent_t      *selected_event;
 
 	/*
 	 * Internal events.  Posted when a descriptor is readable or
@@ -321,7 +326,7 @@ socket_log(isc_socket_t *sock, isc_socka
 
 static void
 wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) {
-	isc_socket_t *sock;
+	isc_socket_t *sock=0L;
 
 	/*
 	 * This is a wakeup on a socket.  If the socket is not in the
@@ -1317,6 +1322,9 @@ allocate_socket(isc_socketmgr_t *manager
 	sock->connected = 0;
 	sock->connecting = 0;
 	sock->bound = 0;
+	sock->read_ready_event = 0L;
+	sock->write_ready_event = 0L;
+	sock->selected_event = 0L;
 
 	/*
 	 * initialize the lock
@@ -1472,6 +1480,9 @@ isc_socket_create(isc_socketmgr_t *manag
 	case isc_sockettype_unix:
 		sock->fd = socket(pf, SOCK_STREAM, 0);
 		break;
+	case isc_sockettype_fd:
+		sock->fd = pf;
+		break;
 	}
 	if (sock->fd == -1 && errno == EINTR && try++ < 42)
 		goto again;
@@ -1480,7 +1491,7 @@ isc_socket_create(isc_socketmgr_t *manag
 	/*
 	 * Leave a space for stdio to work in.
 	 */
-	if (sock->fd >= 0 && sock->fd < 20) {
+	if ( (type != isc_sockettype_fd) && (sock->fd >= 0) && (sock->fd < 20) ) {
 		int new, tmp;
 		new = fcntl(sock->fd, F_DUPFD, 20);
 		tmp = errno;
@@ -1534,7 +1545,7 @@ isc_socket_create(isc_socketmgr_t *manag
 		}
 	}
 
-	if (make_nonblock(sock->fd) != ISC_R_SUCCESS) {
+	if ((type != isc_sockettype_fd) && (make_nonblock(sock->fd) != ISC_R_SUCCESS)) {
 		(void)close(sock->fd);
 		free_socket(&sock);
 		return (ISC_R_UNEXPECTED);
@@ -1827,6 +1838,38 @@ dispatch_connect(isc_socket_t *sock) {
 	isc_task_send(ev->ev_sender, (isc_event_t **)&iev);
 }
 
+static
+isc_event_t *dispatch_read_ready(isc_socketmgr_t *manager, isc_socket_t *sock)
+{
+    isc_event_t *dev = (isc_event_t*)sock->read_ready_event, *ev;
+    
+    ev = isc_mem_get(manager->mctx, dev->ev_size);
+    memcpy(ev,dev,dev->ev_size);
+    ISC_LINK_INIT(ev,ev_link);
+    isc_task_send(dev->ev_sender, &ev );
+    return (isc_event_t *)sock->selected_event;
+}
+
+static
+isc_event_t *dispatch_write_ready(isc_socketmgr_t *manager,isc_socket_t *sock)
+{
+    isc_event_t *dev = (isc_event_t*)sock->write_ready_event, *ev;
+    ev = isc_mem_get(manager->mctx, dev->ev_size);
+    memcpy(ev,dev,dev->ev_size);
+    ISC_LINK_INIT(ev,ev_link);
+    isc_task_send(dev->ev_sender, &ev );
+    return (isc_event_t *)sock->selected_event;
+}
+
+static
+void dispatch_selected(isc_socketmgr_t *manager, isc_event_t *dev)
+{   isc_event_t *ev;
+    ev = isc_mem_get(manager->mctx, dev->ev_size);
+    memcpy(ev,dev,dev->ev_size);
+    ISC_LINK_INIT(ev,ev_link);
+    isc_task_send(dev->ev_sender, &ev );
+}
+
 /*
  * Dequeue an item off the given socket's read queue, set the result code
  * in the done event to the one provided, and send it to the task it was
@@ -2234,6 +2277,7 @@ process_fds(isc_socketmgr_t *manager, in
 	int i;
 	isc_socket_t *sock;
 	isc_boolean_t unlock_sock;
+	isc_event_t *sock_selected = 0L;
 
 	REQUIRE(maxfd <= (int)FD_SETSIZE);
 
@@ -2267,11 +2311,14 @@ process_fds(isc_socketmgr_t *manager, in
 			unlock_sock = ISC_TRUE;
 			LOCK(&sock->lock);
 			if (!SOCK_DEAD(sock)) {
-				if (sock->listener)
-					dispatch_accept(sock);
-				else
-					dispatch_recv(sock);
-			}
+				if( sock->type != isc_sockettype_fd ) {
+					if (sock->listener)
+						dispatch_accept(sock);
+					else
+						dispatch_recv(sock);
+				} else			    
+					sock_selected = dispatch_read_ready(manager,sock);
+			}			    
 			FD_CLR(i, &manager->read_fds);
 		}
 	check_write:
@@ -2285,16 +2332,21 @@ process_fds(isc_socketmgr_t *manager, in
 				LOCK(&sock->lock);
 			}
 			if (!SOCK_DEAD(sock)) {
-				if (sock->connecting)
-					dispatch_connect(sock);
-				else
-					dispatch_send(sock);
+				if( sock->type != isc_sockettype_fd ) {
+					if (sock->connecting)
+						dispatch_connect(sock);
+					else
+						dispatch_send(sock);
+				} else			   
+					sock_selected =	dispatch_write_ready(manager,sock);
 			}
 			FD_CLR(i, &manager->write_fds);
 		}
 		if (unlock_sock)
 			UNLOCK(&sock->lock);
 	}
+	if( sock_selected != 0L )
+	    dispatch_selected(manager, sock_selected);
 }
 
 #ifdef ISC_PLATFORM_USETHREADS
@@ -2313,7 +2365,7 @@ watcher(void *uap) {
 	int cc;
 	fd_set readfds;
 	fd_set writefds;
-	int msg, fd;
+	int msg, fd = -1;
 	int maxfd;
 	char strbuf[ISC_STRERRORSIZE];
 
@@ -3834,3 +3886,55 @@ isc__socketmgr_dispatch(fd_set *readset,
 	return (ISC_R_SUCCESS);
 }
 #endif /* ISC_PLATFORM_USETHREADS */
+
+isc_socketevent_t*
+isc_socket_fd_handle_reads( isc_socket_t *sock, isc_socketevent_t *dev )
+{    
+    REQUIRE(VALID_SOCKET(sock));   
+    if(dev != 0L) 
+    {
+	sock->references=1;
+	sock->read_ready_event = dev;
+	select_poke(sock->manager, sock->fd, SELECT_POKE_READ);
+    }else
+    {
+	dev = sock->read_ready_event ;
+	sock->read_ready_event = 0L ;
+    }
+    return dev;
+}
+
+isc_socketevent_t*
+isc_socket_fd_handle_writes( isc_socket_t *sock, isc_socketevent_t *dev )
+{
+    REQUIRE(VALID_SOCKET(sock));   
+    if(dev != 0L) 
+    {
+	sock->references=1;
+	sock->write_ready_event = dev;
+	select_poke(sock->manager, sock->fd, SELECT_POKE_WRITE);    
+    }else
+    {
+	dev = sock->write_ready_event;
+	sock->write_ready_event = 0L;
+    }
+    return dev;
+}
+
+isc_socketevent_t*
+isc_socket_fd_handle_selected( isc_socket_t *sock, isc_socketevent_t *dev )
+{
+    REQUIRE(VALID_SOCKET(sock));
+    if(dev != 0L) 
+    {
+	sock->references=1;
+	sock->selected_event = dev;
+    }else
+    {
+	dev = sock->selected_event;
+	sock->selected_event = 0L;
+	sock->references=0;
+	destroy(&sock);
+    }
+    return dev;
+}
diff -up bind-9.4.2b1/lib/dns/forward.c.dbus bind-9.4.2b1/lib/dns/forward.c
--- bind-9.4.2b1/lib/dns/forward.c.dbus	2005-07-12 03:22:20.000000000 +0200
+++ bind-9.4.2b1/lib/dns/forward.c	2007-08-21 12:57:33.000000000 +0200
@@ -197,3 +197,89 @@ auto_detach(void *data, void *arg) {
 	}
 	isc_mem_put(fwdtable->mctx, forwarders, sizeof(dns_forwarders_t));
 }
+
+/***
+ *** new D-BUS Dynamic Forwarding Zones functions:
+ ***/
+isc_result_t
+dns_fwdtable_delete(dns_fwdtable_t *fwdtable, dns_name_t *name )
+{
+	isc_result_t result;
+
+	REQUIRE(VALID_FWDTABLE(fwdtable));
+
+	RWLOCK(&fwdtable->rwlock, isc_rwlocktype_write);
+
+	result = dns_rbt_deletename(fwdtable->table, name, ISC_FALSE);
+
+	RWUNLOCK(&fwdtable->rwlock, isc_rwlocktype_write);		    
+
+	return (result);
+}
+
+isc_result_t
+dns_fwdtable_find_closest(dns_fwdtable_t *fwdtable, 
+			  dns_name_t *name, 
+			  dns_name_t *foundname,
+			  dns_forwarders_t **forwardersp)
+{
+	isc_result_t result;
+
+	REQUIRE(VALID_FWDTABLE(fwdtable));
+	
+	RWLOCK(&fwdtable->rwlock, isc_rwlocktype_read);
+
+	result = dns_rbt_findname(fwdtable->table, name, 0, foundname,
+				  (void **)forwardersp);
+	
+	if(result == DNS_R_PARTIALMATCH)
+	    result = ISC_R_SUCCESS;
+
+	RWUNLOCK(&fwdtable->rwlock, isc_rwlocktype_read);
+
+	return (result);
+}
+
+isc_result_t
+dns_fwdtable_find_exact(dns_fwdtable_t *fwdtable, dns_name_t *name,
+		  dns_forwarders_t **forwardersp)
+{
+	isc_result_t result;
+
+	REQUIRE(VALID_FWDTABLE(fwdtable));
+
+	REQUIRE(forwardersp != 0L);
+
+	RWLOCK(&fwdtable->rwlock, isc_rwlocktype_read);
+
+	result = dns_rbt_findname(fwdtable->table, name, 0, NULL,
+				  (void **)forwardersp);
+	
+	if( result != ISC_R_SUCCESS )
+	    *forwardersp = 0L;
+
+	RWUNLOCK(&fwdtable->rwlock, isc_rwlocktype_read);
+
+	return (result);
+}
+
+static 
+void dns_fwdtable_traverse
+(   
+    dns_name_t *name,
+    void *node_data,
+    void *cbp,
+    void *cb_arg
+)
+{
+    dns_fwdtable_callback_t  cb = (dns_fwdtable_callback_t) cbp;
+    
+    (*cb)( name, node_data, cb_arg);
+}
+
+void dns_fwdtable_foreach(dns_fwdtable_t *fwdtable, dns_fwdtable_callback_t cb, void *cb_arg )
+{
+    REQUIRE(VALID_FWDTABLE(fwdtable));
+
+    dns_rbt_traverse( fwdtable->table, dns_fwdtable_traverse, cb, cb_arg );
+}
diff -up bind-9.4.2b1/lib/dns/rbt.c.dbus bind-9.4.2b1/lib/dns/rbt.c
--- bind-9.4.2b1/lib/dns/rbt.c.dbus	2005-10-13 03:26:06.000000000 +0200
+++ bind-9.4.2b1/lib/dns/rbt.c	2007-08-21 12:57:33.000000000 +0200
@@ -2175,6 +2175,47 @@ dns_rbt_printall(dns_rbt_t *rbt) {
 	dns_rbt_printtree(rbt->root, NULL, 0);
 }
 
+static void
+dns_rbt_traverse_tree(dns_rbtnode_t *root,  dns_rbt_traverse_callback_t cb, void *cb_arg1, void *cb_arg2 ) {
+/*
+ * This is used ONLY to traverse the forward table by dbus_mgr at the moment.
+ * Since the forward table is not likely to be large, this can be recursive.
+ */
+	dns_name_t name;
+	dns_offsets_t offsets;
+	char buf[DNS_NAME_MAXWIRE];
+	isc_buffer_t buffer;
+
+	if (root != NULL) {
+
+		if (DOWN(root)) 
+			dns_rbt_traverse_tree(DOWN(root), cb, cb_arg1, cb_arg2);
+
+		if( LEFT(root) != NULL )
+		        dns_rbt_traverse_tree(LEFT(root), cb, cb_arg1, cb_arg2);
+
+		if( RIGHT(root) != NULL )
+		        dns_rbt_traverse_tree(RIGHT(root), cb, cb_arg1, cb_arg2);
+
+		if( DATA(root) == 0L )
+		    return;
+
+		dns_name_init(&name, offsets);
+		isc_buffer_init(&buffer, buf, DNS_NAME_MAXWIRE);
+		dns_name_setbuffer( &name, &buffer);
+		dns_rbt_fullnamefromnode(root, &name);
+		
+		(*cb)(&name, DATA(root), cb_arg1, cb_arg2);		
+	} 
+}
+
+void dns_rbt_traverse( dns_rbt_t *rbt, dns_rbt_traverse_callback_t cb, void *cb_arg1, void *cb_arg2  )
+{
+        REQUIRE(VALID_RBT(rbt));
+
+	dns_rbt_traverse_tree( rbt->root, cb, cb_arg1, cb_arg2 );       
+}
+
 /*
  * Chain Functions
  */
diff -up bind-9.4.2b1/lib/dns/include/dns/rbt.h.dbus bind-9.4.2b1/lib/dns/include/dns/rbt.h
--- bind-9.4.2b1/lib/dns/include/dns/rbt.h.dbus	2005-10-13 03:26:07.000000000 +0200
+++ bind-9.4.2b1/lib/dns/include/dns/rbt.h	2007-08-21 12:57:33.000000000 +0200
@@ -911,6 +911,17 @@ dns_rbtnodechain_next(dns_rbtnodechain_t
 	} while (0) 
 #endif /* DNS_RBT_USEISCREFCOUNT */
 
+
+typedef void (*dns_rbt_traverse_callback_t)(  dns_name_t *name,
+					      void *node_data,
+					      void *cb_arg1,
+					      void *cb_arg2);
+
+void dns_rbt_traverse( dns_rbt_t *rbt, dns_rbt_traverse_callback_t cb, void *cb_arg1, void *cb_arg2 );
+/* tree traversal function (only used by D-BUS dynamic forwarding dbus_mgr at
+ * the moment)
+ */
+
 ISC_LANG_ENDDECLS
 
 #endif /* DNS_RBT_H */
diff -up bind-9.4.2b1/lib/dns/include/dns/forward.h.dbus bind-9.4.2b1/lib/dns/include/dns/forward.h
--- bind-9.4.2b1/lib/dns/include/dns/forward.h.dbus	2005-04-27 07:01:33.000000000 +0200
+++ bind-9.4.2b1/lib/dns/include/dns/forward.h	2007-08-21 12:57:33.000000000 +0200
@@ -113,6 +113,37 @@ dns_fwdtable_destroy(dns_fwdtable_t **fw
  * \li	all memory associated with the forwarding table is freed.
  */
 
+
+/* These are ONLY used by dbus_mgr :
+ */
+
+isc_result_t
+dns_fwdtable_delete( dns_fwdtable_t *fwdtable, dns_name_t *name );
+/* 
+ * Removes an entry from the forwarding table.
+ */
+
+isc_result_t
+dns_fwdtable_find_exact(dns_fwdtable_t *fwdtable, dns_name_t *name,
+		  dns_forwarders_t **forwardersp);
+/*
+ * Finds an exact match for "name" in the forwarding table.  
+ */
+
+isc_result_t
+dns_fwdtable_find_closest(dns_fwdtable_t *fwdtable, dns_name_t *name, dns_name_t *foundname,
+		  dns_forwarders_t **forwardersp);
+/*
+ * Finds the closest match for "*name" in the forwarding table, returning  
+ * the actual name matching in *name if different to *name passed in. 
+ */
+
+typedef void (*dns_fwdtable_callback_t)( dns_name_t *, dns_forwarders_t *, void *);
+void dns_fwdtable_foreach(dns_fwdtable_t *fwdtable, dns_fwdtable_callback_t cb, void * );
+/* Invoke cb for each member of fwdtable 
+ */
+
+
 ISC_LANG_ENDDECLS
 
 #endif /* DNS_FORWARD_H */
diff -up bind-9.4.2b1/bin/named/main.c.dbus bind-9.4.2b1/bin/named/main.c
--- bind-9.4.2b1/bin/named/main.c.dbus	2006-11-10 19:51:14.000000000 +0100
+++ bind-9.4.2b1/bin/named/main.c	2007-08-21 12:57:33.000000000 +0200
@@ -248,7 +248,8 @@ usage(void) {
 		"usage: named [-4|-6] [-c conffile] [-d debuglevel] "
 		"[-f|-g] [-n number_of_cpus]\n"
 		"             [-p port] [-s] [-t chrootdir] [-u username]\n"
-		"             [-m {usage|trace|record|size|mctx}]\n");
+		"             [-m {usage|trace|record|size|mctx}]\n"
+		"	      [-D ]\n");
 }
 
 static void
@@ -356,7 +357,7 @@ parse_command_line(int argc, char *argv[
 
 	isc_commandline_errprint = ISC_FALSE;
 	while ((ch = isc_commandline_parse(argc, argv,
-			           "46c:C:d:fgi:lm:n:N:p:P:st:u:vx:")) != -1) {
+			           "46c:C:d:fgi:lm:n:N:p:P:st:u:vx:D")) != -1) {
 		switch (ch) {
 		case '4':
 			if (disable4)
@@ -445,6 +446,9 @@ parse_command_line(int argc, char *argv[
 		case 'v':
 			printf("BIND %s\n", ns_g_version);
 			exit(0);
+		case 'D':
+		        ns_g_dbus = 1;
+			break;
 		case '?':
 			usage();
 			ns_main_earlyfatal("unknown option '-%c'",
diff -up bind-9.4.2b1/bin/named/log.c.dbus bind-9.4.2b1/bin/named/log.c
--- bind-9.4.2b1/bin/named/log.c.dbus	2006-06-09 02:54:08.000000000 +0200
+++ bind-9.4.2b1/bin/named/log.c	2007-08-21 12:57:33.000000000 +0200
@@ -44,6 +44,7 @@ static isc_logcategory_t categories[] = 
 	{ "queries",	 		0 },
 	{ "unmatched",	 		0 },
 	{ "update-security",		0 },
+	{ "dbus",                       0 },
 	{ NULL, 			0 }
 };
 
@@ -63,6 +64,7 @@ static isc_logmodule_t modules[] = {
 	{ "notify",	 		0 },
 	{ "control",	 		0 },
 	{ "lwresd",	 		0 },
+	{ "dbus",                       0 },
 	{ NULL, 			0 }
 };
 
diff -up bind-9.4.2b1/bin/named/include/named/server.h.dbus bind-9.4.2b1/bin/named/include/named/server.h
--- bind-9.4.2b1/bin/named/include/named/server.h.dbus	2006-03-10 00:46:20.000000000 +0100
+++ bind-9.4.2b1/bin/named/include/named/server.h	2007-08-21 12:57:33.000000000 +0200
@@ -97,6 +97,8 @@ struct ns_server {
 	ns_dispatchlist_t	dispatches;
 
 	dns_acache_t		*acache;
+
+	ns_dbus_mgr_t *         dbus_mgr;
 };
 
 #define NS_SERVER_MAGIC			ISC_MAGIC('S','V','E','R')
diff -up bind-9.4.2b1/bin/named/include/named/types.h.dbus bind-9.4.2b1/bin/named/include/named/types.h
--- bind-9.4.2b1/bin/named/include/named/types.h.dbus	2005-04-29 02:15:38.000000000 +0200
+++ bind-9.4.2b1/bin/named/include/named/types.h	2007-08-21 12:57:33.000000000 +0200
@@ -40,4 +40,6 @@ typedef struct ns_controls		ns_controls_
 typedef struct ns_dispatch		ns_dispatch_t;
 typedef ISC_LIST(ns_dispatch_t)		ns_dispatchlist_t;
 
+typedef struct ns_dbus_mgr              ns_dbus_mgr_t ;
+
 #endif /* NAMED_TYPES_H */
diff -up bind-9.4.2b1/bin/named/include/named/globals.h.dbus bind-9.4.2b1/bin/named/include/named/globals.h
--- bind-9.4.2b1/bin/named/include/named/globals.h.dbus	2007-08-21 12:57:33.000000000 +0200
+++ bind-9.4.2b1/bin/named/include/named/globals.h	2007-08-21 12:57:33.000000000 +0200
@@ -114,6 +114,8 @@ EXTERN const char *		ns_g_username		INIT
 
 EXTERN int			ns_g_listen		INIT(3);
 
+EXTERN int                      ns_g_dbus               INIT(0);
+
 #undef EXTERN
 #undef INIT
 
diff -up bind-9.4.2b1/bin/named/include/named/log.h.dbus bind-9.4.2b1/bin/named/include/named/log.h
--- bind-9.4.2b1/bin/named/include/named/log.h.dbus	2005-04-29 02:15:35.000000000 +0200
+++ bind-9.4.2b1/bin/named/include/named/log.h	2007-08-21 12:57:33.000000000 +0200
@@ -36,6 +36,7 @@
 #define NS_LOGCATEGORY_QUERIES		(&ns_g_categories[4])
 #define NS_LOGCATEGORY_UNMATCHED	(&ns_g_categories[5])
 #define NS_LOGCATEGORY_UPDATE_SECURITY	(&ns_g_categories[6])
+#define NS_LOGCATEGORY_DBUS      	(&ns_g_categories[7])
 
 /*
  * Backwards compatibility.
@@ -53,6 +54,7 @@
 #define NS_LOGMODULE_NOTIFY		(&ns_g_modules[8])
 #define NS_LOGMODULE_CONTROL		(&ns_g_modules[9])
 #define NS_LOGMODULE_LWRESD		(&ns_g_modules[10])
+#define NS_LOGMODULE_DBUS		(&ns_g_modules[11])
 
 isc_result_t
 ns_log_init(isc_boolean_t safe);
diff -up bind-9.4.2b1/bin/named/server.c.dbus bind-9.4.2b1/bin/named/server.c
--- bind-9.4.2b1/bin/named/server.c.dbus	2007-07-09 04:18:49.000000000 +0200
+++ bind-9.4.2b1/bin/named/server.c	2007-08-21 12:57:33.000000000 +0200
@@ -167,6 +167,8 @@ struct zonelistentry {
 	ISC_LINK(struct zonelistentry)	link;
 };
 
+#include <named/dbus_mgr.h>
+
 /*
  * These zones should not leak onto the Internet.
  */
@@ -2004,12 +2006,12 @@ configure_forward(const cfg_obj_t *confi
 	if (result != ISC_R_SUCCESS) {
 		char namebuf[DNS_NAME_FORMATSIZE];
 		dns_name_format(origin, namebuf, sizeof(namebuf));
-		cfg_obj_log(forwarders, ns_g_lctx, ISC_LOG_WARNING,
-			    "could not set up forwarding for domain '%s': %s",
+		cfg_obj_log(forwarders, ns_g_lctx, ISC_LOG_NOTICE,
+			    "setting up forwarding failed for domain '%s': %s",
 			    namebuf, isc_result_totext(result));
 		goto cleanup;
 	}
-
+		
 	result = ISC_R_SUCCESS;
 
  cleanup:
@@ -3437,6 +3439,20 @@ run_server(isc_task_t *task, isc_event_t
 
 	CHECKFATAL(load_zones(server, ISC_FALSE), "loading zones");
 
+	server->dbus_mgr = 0L;
+	if( ns_g_dbus )	
+	    if( dbus_mgr_create
+	        (  ns_g_mctx, ns_g_taskmgr, ns_g_socketmgr, ns_g_timermgr,
+		   &server->dbus_mgr
+		) != ISC_R_SUCCESS
+	      )
+	    {
+		isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+			      NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
+			      "dbus_mgr initialization failed. D-BUS service is disabled."
+		             );
+	    }
+
 	ns_os_started();
 	isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
 		      ISC_LOG_NOTICE, "running");
@@ -3500,6 +3516,9 @@ shutdown_server(isc_task_t *task, isc_ev
 
 	dns_db_detach(&server->in_roothints);
 
+	if( server->dbus_mgr != 0L )
+	    dbus_mgr_shutdown(server->dbus_mgr);
+
 	isc_task_endexclusive(server->task);
 
 	isc_task_detach(&server->task);
diff -up bind-9.4.2b1/bin/named/Makefile.in.dbus bind-9.4.2b1/bin/named/Makefile.in
--- bind-9.4.2b1/bin/named/Makefile.in.dbus	2007-08-21 12:57:33.000000000 +0200
+++ bind-9.4.2b1/bin/named/Makefile.in	2007-08-21 12:57:33.000000000 +0200
@@ -43,6 +43,9 @@ CINCLUDES =	-I${srcdir}/include -I${srcd
 		${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
 		${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES}
 
+DBUS_INCLUDES = \
+        -I/usr/lib/dbus-1.0/include -I/usr/include/dbus-1.0
+
 CDEFINES =      @USE_DLZ@
 
 CWARNINGS =
@@ -60,6 +63,7 @@ ISCCCDEPLIBS =	../../lib/isccc/libisccc.
 ISCDEPLIBS =	../../lib/isc/libisc. at A@
 LWRESDEPLIBS =	../../lib/lwres/liblwres. at A@
 BIND9DEPLIBS =	../../lib/bind9/libbind9. at A@
+DBUSLIBS=       -ldbus-1
 
 DEPLIBS =	${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
 		${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}
@@ -80,6 +84,7 @@ OBJS =		builtin.o client.o config.o cont
 		zoneconf.o \
 		lwaddr.o lwresd.o lwdclient.o lwderror.o lwdgabn.o \
 		lwdgnba.o lwdgrbn.o lwdnoop.o lwsearch.o \
+		dbus_service.o dbus_mgr.o \
 		${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
 
 UOBJS =		unix/os.o
@@ -92,6 +97,7 @@ SRCS =		builtin.c client.c config.c cont
 		zoneconf.c \
 		lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
 		lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \
+		dbus_service.c dbus_mgr.c \
 		${DLZDRIVER_SRCS} ${DBDRIVER_SRCS}
 
 MANPAGES =	named.8 lwresd.8 named.conf.5
@@ -120,9 +126,14 @@ config.o: config.c
 		-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
 		-c ${srcdir}/config.c
 
+dbus_service.o: dbus_service.c
+	${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+	        ${DBUS_INCLUDES} \
+		-c ${srcdir}/dbus_service.c
+
 named at EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
 	${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-	${OBJS} ${UOBJS} ${LIBS}
+	${OBJS} ${UOBJS} ${LIBS} ${DBUSLIBS}
 
 lwresd at EXEEXT@: named at EXEEXT@
 	rm -f lwresd at EXEEXT@
diff -up bind-9.4.2b1/bin/named/named.8.dbus bind-9.4.2b1/bin/named/named.8
--- bind-9.4.2b1/bin/named/named.8.dbus	2007-08-21 12:57:33.000000000 +0200
+++ bind-9.4.2b1/bin/named/named.8	2007-08-21 13:07:29.000000000 +0200
@@ -33,7 +33,7 @@
 named \- Internet domain name server
 .SH "SYNOPSIS"
 .HP 6
-\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR]
+\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR] [\fB\-D\fR]
 .SH "DESCRIPTION"
 .PP
 \fBnamed\fR
@@ -181,6 +181,13 @@ into the cache of the default view.
 This option must not be used. It is only of interest to BIND 9 developers and may be removed or changed in a future release.
 .RE
 .RE
+.sp
+.TP
+\fB\-D\fR
+Enable dynamic management of the forwarding table with D-BUS
+messages. This option is required for Red Hat NetworkManager
+support. See doc/README.DBUS .
+.sp
 .SH "SIGNALS"
 .PP
 In routine operation, signals should not be used to control the nameserver;


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/bind/F-7/.cvsignore,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- .cvsignore	24 Jul 2007 09:13:46 -0000	1.30
+++ .cvsignore	22 Aug 2007 10:56:52 -0000	1.31
@@ -1 +1,4 @@
-bind-9.4.1-P1.tar.gz
+bind-9.4.2b1.tar.gz
+bind-chroot.tar.bz2
+libbind-man.tar.gz
+config.tar


Index: bind.spec
===================================================================
RCS file: /cvs/pkgs/rpms/bind/F-7/bind.spec,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -r1.189 -r1.190
--- bind.spec	14 Aug 2007 10:00:47 -0000	1.189
+++ bind.spec	22 Aug 2007 10:56:52 -0000	1.190
@@ -2,7 +2,7 @@
 #               Red Hat BIND package .spec file
 #
 
-%define RELEASEVER P1
+%define RELEASEVER b1
 
 %{?!SDB:        %define SDB         1}
 %{?!LIBBIND:    %define LIBBIND	    1}
@@ -19,14 +19,14 @@
 Summary: 	The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server.
 Name: 		bind
 License: 	BSD-like
-Version: 	9.4.1
-Release: 	9.%{RELEASEVER}%{?dist}
+Version: 	9.4.2
+Release: 	0.1.%{RELEASEVER}%{?dist}
 Epoch:   	31
 Url: 		http://www.isc.org/products/BIND/
 Buildroot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Group: 		System Environment/Daemons
 #
-Source: 	ftp://ftp.isc.org/isc/bind9/%{version}/bind-%{version}-%{RELEASEVER}.tar.gz
+Source: 	ftp://ftp.isc.org/isc/bind9/%{version}/bind-%{version}%{RELEASEVER}.tar.gz
 Source1: 	named.sysconfig
 Source2: 	named.init
 Source3: 	named.logrotate
@@ -50,7 +50,6 @@
 Patch:  	bind-9.2.0rc3-varrun.patch
 Patch1: 	bind-9.3.3rc2-rndckey.patch
 Patch2: 	bind-9.3.1beta2-openssl-suffix.patch
-Patch4: 	bind-bsdcompat.patch
 Patch5: 	bind-nonexec.patch
 Patch6: 	bind-9.2.2-nsl.patch
 Patch10: 	bind-9.3.2b1-PIE.patch
@@ -58,14 +57,12 @@
 Patch12: 	bind-9.3.1rc1-sdb.patch
 Patch13: 	bind-9.3.1rc1-fix_libbind_includedir.patch
 Patch14: 	libbind-9.3.1rc1-fix_h_errno.patch
-Patch15: 	bind-9.3.3rc2-dbus.patch
 Patch16: 	bind-9.3.2-redhat_doc.patch
 Patch17: 	bind-9.3.2b1-fix_sdb_ldap.patch
 Patch22: 	bind-9.3.1-sdb_dbus.patch
 Patch23: 	bind-9.3.1-dbus_archdep_libdir.patch
 Patch32:	bind-9.3.2-prctl_set_dumpable.patch
 Patch52:	bind-9.3.3-edns.patch
-Patch61:        bind-9.3.4-sdb-sqlite-src.patch
 Patch62:        bind-9.4.0-sdb-sqlite-bld.patch
 Patch63:	bind-9.4.0-dnssec-directory.patch
 %if %{IDN}
@@ -73,10 +70,9 @@
 Patch65:	bind-9.4.0-dig-idn.patch
 %endif
 Patch66:	bind-9.4.0-zone-freeze.patch
-Patch67:	bind-9.4.0-dbus-race-condition.patch
 Patch68:	bind-9.4.1-ldap-api.patch
-Patch69:	bind-9.4-tsig-init.patch
 Patch70:	bind-9.4-update.patch
+Patch71:	bind-9.4-dbus.patch
 #
 Requires:	bind-libs = %{epoch}:%{version}-%{release}, glibc  >= 2.2, mktemp
 Requires(post): grep, chkconfig >= 1.3.26
@@ -229,18 +225,15 @@
 
 
 %prep
-%setup -q -n %{name}-%{version}-%{RELEASEVER}
+%setup -q -n %{name}-%{version}%{RELEASEVER}
 %patch -p1 -b .varrun
 %patch1 -p1 -b .key
 %patch2 -p1 -b .openssl_suffix
-%patch4 -p1 -b .bsdcompat
 %patch5 -p1 -b .nonexec
 %patch6 -p1 -b .nsl
 %patch10 -p1 -b .PIE
-%patch69 -p1 -b .tsig-init
 %if %{SDB}
 %patch11 -p1 -b .sdbsrc
-%patch61 -p1 -b .sdb-sqlite-src
 # BUILD 'Simplified Database Backend' (SDB) version of named: named_sdb
 cp -rfp bin/named bin/named_sdb
 # SDB ldap
@@ -269,7 +262,7 @@
 %endif
 %patch16 -p1 -b .redhat_doc
 %if %{WITH_DBUS}
-%patch15 -p1 -b .dbus
+%patch71 -p1 -b .dbus
 %if %{SDB}
 %patch22 -p1 -b .sdb_dbus
 %endif
@@ -282,7 +275,6 @@
 #
 # this must follow all dbus patches:
 #
-%patch67 -p1 -b .race-condition
 cp -fp contrib/dbus/{dbus_mgr.c,dbus_service.c} bin/named
 cp -fp contrib/dbus/{dbus_mgr.h,dbus_service.h} bin/named/include/named
 %if %{SDB}
@@ -791,6 +783,15 @@
 
 
 %changelog
+* Tue Aug 21 2007 Adam Tkac <atkac redhat com> 31:9.4.2-0.1.b1
+- updated to 9.4.2b1
+- dropped patches
+  - bind-bsdcompat (upstream)
+  - bind-9.4-tsig-init (upstream)
+  - bind-9.3.3rc2-dbus (obsoleted by bind-9.4-dbus.patch)
+  - bind-9.4.0-dbus-race-condition.patch (upstream)
+  - bind-9.3.4-sdb-sqlite-src.patch (upstream)
+
 * Wed Aug 14 2007 Adam Tkac <atkac redhat com> 31:9.4.1-9.P1
 - named could crash when deleting SRV record with UPDATE (#251336)
 


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/bind/F-7/sources,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- sources	24 Jul 2007 09:13:46 -0000	1.37
+++ sources	22 Aug 2007 10:56:52 -0000	1.38
@@ -1,4 +1,4 @@
-44e0514e6105ddaa235394045d9aeb0c  bind-9.4.1-P1.tar.gz
+b0b04a79cbc5ee637475e00777dce528  bind-9.4.2b1.tar.gz
 5306e4032389c2a8ddba678882bc82ad  bind-chroot.tar.bz2
 13fef79f99fcefebb51d84b08805de51  libbind-man.tar.gz
 be1c17ce7c3ec560fd67fc006b7a20f9  config.tar


--- bind-9.3.3rc2-dbus.patch DELETED ---


--- bind-9.3.4-sdb-sqlite-src.patch DELETED ---


--- bind-9.4-tsig-init.patch DELETED ---


--- bind-9.4.0-dbus-race-condition.patch DELETED ---


--- bind-bsdcompat.patch DELETED ---




More information about the fedora-extras-commits mailing list