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));