Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 6e3f21ce1d62a9e7001f9d653bfca859 > files > 41

bind-9.3.6-20.P1.el5_8.5.src.rpm

diff -up bind-9.3.6-P1/bin/named/zoneconf.c.rh477651 bind-9.3.6-P1/bin/named/zoneconf.c
--- bind-9.3.6-P1/bin/named/zoneconf.c.rh477651	2009-04-06 13:09:21.294004069 +0200
+++ bind-9.3.6-P1/bin/named/zoneconf.c	2009-04-06 13:10:10.970004441 +0200
@@ -474,6 +474,8 @@ ns_zone_configure(const cfg_obj_t *confi
 			const char *notifystr = cfg_obj_asstring(obj);
 			if (strcasecmp(notifystr, "explicit") == 0)
 				notifytype = dns_notifytype_explicit;
+			else if (strcasecmp(notifystr, "master-only") == 0)
+				notifytype = dns_notifytype_masteronly;
 			else
 				INSIST(0);
 		}
diff -up bind-9.3.6-P1/lib/dns/include/dns/types.h.rh477651 bind-9.3.6-P1/lib/dns/include/dns/types.h
--- bind-9.3.6-P1/lib/dns/include/dns/types.h.rh477651	2009-04-06 13:12:27.026049009 +0200
+++ bind-9.3.6-P1/lib/dns/include/dns/types.h	2009-04-06 13:12:44.674003290 +0200
@@ -138,7 +138,8 @@ typedef enum {
 typedef enum {
 	dns_notifytype_no = 0,
 	dns_notifytype_yes = 1,
-	dns_notifytype_explicit = 2
+	dns_notifytype_explicit = 2,
+	dns_notifytype_masteronly = 3
 } dns_notifytype_t;
 
 typedef enum {
diff -up bind-9.3.6-P1/lib/dns/zone.c.rh477651 bind-9.3.6-P1/lib/dns/zone.c
--- bind-9.3.6-P1/lib/dns/zone.c.rh477651	2009-04-06 13:10:52.138003729 +0200
+++ bind-9.3.6-P1/lib/dns/zone.c	2009-04-06 13:12:04.130196749 +0200
@@ -3152,6 +3152,10 @@ zone_notify(dns_zone_t *zone) {
 	if (notifytype == dns_notifytype_no)
 		return;
 
+	if (notifytype == dns_notifytype_masteronly &&
+	    zone->type != dns_zone_master)
+		return;
+
 	LOCK_ZONE(zone);
 	if (zone->db != NULL)
 		dns_db_attach(zone->db, &db);
diff -up bind-9.3.6-P1/lib/isccfg/namedconf.c.rh477651 bind-9.3.6-P1/lib/isccfg/namedconf.c
--- bind-9.3.6-P1/lib/isccfg/namedconf.c.rh477651	2009-04-06 13:08:04.226003837 +0200
+++ bind-9.3.6-P1/lib/isccfg/namedconf.c	2009-04-06 13:08:23.250003739 +0200
@@ -1218,7 +1218,7 @@ static cfg_type_t cfg_type_dialuptype = 
 	&cfg_rep_string, dialup_enums
 };
 
-static const char *notify_enums[] = { "explicit", NULL };
+static const char *notify_enums[] = { "explicit", "master-only", NULL };
 static isc_result_t
 parse_notify_type(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) {
 	return (parse_enum_or_other(pctx, type, &cfg_type_boolean, ret));