* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: update.c,v 1.111 2004/05/05 01:32:56 marka Exp $ */
+/* $Id: update.c,v 1.112 2004/05/12 06:38:37 marka Exp $ */
#include <config.h>
static isc_result_t
checkupdateacl(ns_client_t *client, dns_acl_t *acl, const char *message,
- dns_name_t *zonename)
+ dns_name_t *zonename, isc_boolean_t slave)
{
char namebuf[DNS_NAME_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
const char *msg = "denied";
isc_result_t result;
+ if (slave && acl == NULL)
+ return (DNS_R_NOTIMP);
result = ns_client_checkaclsilent(client, acl, ISC_FALSE);
if (result == ISC_R_SUCCESS) {
break;
case dns_zone_slave:
CHECK(checkupdateacl(client, dns_zone_getforwardacl(zone),
- "update forwarding", zonename));
+ "update forwarding", zonename, ISC_TRUE));
CHECK(send_forward_event(client, zone));
break;
default:
result = ISC_R_SUCCESS;
if (ssutable == NULL)
CHECK(checkupdateacl(client, dns_zone_getupdateacl(zone),
- "update", zonename));
+ "update", zonename, ISC_FALSE));
else if (client->signer == NULL)
- CHECK(checkupdateacl(client, NULL, "update", zonename));
+ CHECK(checkupdateacl(client, NULL, "update", zonename,
+ ISC_FALSE));
if (dns_zone_getupdatedisabled(zone))
FAILC(DNS_R_REFUSED, "dynamic update temporarily disabled");