mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Introduce notify source code files
Part of refactoring zone.c is to move the notify code into its own source files. This commit initiates this work by creating notify.[c,h] and move notify_create() and the notify state and context there. The function notify_create() cannot fail, so it can return void instead of isc_result_t.
This commit is contained in:
parent
35bdc94f51
commit
e8eebf1ad6
5 changed files with 162 additions and 109 deletions
74
lib/dns/include/dns/notify.h
Normal file
74
lib/dns/include/dns/notify.h
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/*! \file dns/notify.h */
|
||||
|
||||
#include <isc/sockaddr.h>
|
||||
|
||||
#include <dns/name.h>
|
||||
#include <dns/types.h>
|
||||
|
||||
#define NOTIFY_MAGIC ISC_MAGIC('N', 't', 'f', 'y')
|
||||
#define DNS_NOTIFY_VALID(notify) ISC_MAGIC_VALID(notify, NOTIFY_MAGIC)
|
||||
|
||||
/*%
|
||||
* Hold notify contxt.
|
||||
*/
|
||||
struct dns_notifyctx {
|
||||
dns_acl_t *notify_acl;
|
||||
|
||||
isc_sockaddr_t notifyfrom;
|
||||
dns_notifylist_t notifies;
|
||||
|
||||
/* Configuration data. */
|
||||
dns_notifytype_t notifytype;
|
||||
isc_sockaddr_t notifysrc4;
|
||||
isc_sockaddr_t notifysrc6;
|
||||
};
|
||||
|
||||
/*%
|
||||
* Hold notify state.
|
||||
*/
|
||||
struct dns_notify {
|
||||
unsigned int magic;
|
||||
unsigned int flags;
|
||||
isc_mem_t *mctx;
|
||||
dns_zone_t *zone;
|
||||
dns_adbfind_t *find;
|
||||
dns_request_t *request;
|
||||
dns_name_t ns;
|
||||
isc_sockaddr_t src;
|
||||
isc_sockaddr_t dst;
|
||||
dns_tsigkey_t *key;
|
||||
dns_transport_t *transport;
|
||||
ISC_LINK(dns_notify_t) link;
|
||||
isc_rlevent_t *rlevent;
|
||||
};
|
||||
|
||||
typedef enum dns_notify_flags {
|
||||
DNS_NOTIFY_NOSOA = 1 << 0,
|
||||
DNS_NOTIFY_STARTUP = 1 << 1,
|
||||
DNS_NOTIFY_TCP = 1 << 2,
|
||||
} dns_notify_flags_t;
|
||||
|
||||
void
|
||||
dns_notify_create(isc_mem_t *mctx, unsigned int flags, dns_notify_t **notifyp);
|
||||
/*%<
|
||||
* Create a notify structure to maintain state.
|
||||
*
|
||||
* Requires:
|
||||
* 'mctx' is not NULL.
|
||||
* 'notifyp' is not NULL and '*notifyp' is NULL.
|
||||
*/
|
||||
|
|
@ -121,6 +121,9 @@ typedef isc_region_t dns_label_t;
|
|||
typedef struct dns_name dns_name_t;
|
||||
typedef struct dns_nametree dns_nametree_t;
|
||||
typedef ISC_LIST(dns_name_t) dns_namelist_t;
|
||||
typedef struct dns_notify dns_notify_t;
|
||||
typedef struct dns_notifyctx dns_notifyctx_t;
|
||||
typedef ISC_LIST(dns_notify_t) dns_notifylist_t;
|
||||
typedef struct dns_ntatable dns_ntatable_t;
|
||||
typedef struct dns_ntnode dns_ntnode_t;
|
||||
typedef enum dns_opcode dns_opcode_t;
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ dns_srcset.add(
|
|||
'name.c',
|
||||
'nametree.c',
|
||||
'ncache.c',
|
||||
'notify.c',
|
||||
'nsec.c',
|
||||
'nsec3.c',
|
||||
'nta.c',
|
||||
|
|
|
|||
38
lib/dns/notify.c
Normal file
38
lib/dns/notify.c
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*! \file */
|
||||
|
||||
#include <isc/result.h>
|
||||
|
||||
#include <dns/notify.h>
|
||||
|
||||
void
|
||||
dns_notify_create(isc_mem_t *mctx, unsigned int flags, dns_notify_t **notifyp) {
|
||||
dns_notify_t *notify;
|
||||
|
||||
REQUIRE(notifyp != NULL && *notifyp == NULL);
|
||||
|
||||
notify = isc_mem_get(mctx, sizeof(*notify));
|
||||
*notify = (dns_notify_t){
|
||||
.flags = flags,
|
||||
};
|
||||
|
||||
isc_mem_attach(mctx, ¬ify->mctx);
|
||||
isc_sockaddr_any(¬ify->src);
|
||||
isc_sockaddr_any(¬ify->dst);
|
||||
dns_name_init(¬ify->ns);
|
||||
ISC_LINK_INIT(notify, link);
|
||||
notify->magic = NOTIFY_MAGIC;
|
||||
*notifyp = notify;
|
||||
}
|
||||
155
lib/dns/zone.c
155
lib/dns/zone.c
|
|
@ -63,6 +63,7 @@
|
|||
#include <dns/masterdump.h>
|
||||
#include <dns/message.h>
|
||||
#include <dns/name.h>
|
||||
#include <dns/notify.h>
|
||||
#include <dns/nsec.h>
|
||||
#include <dns/nsec3.h>
|
||||
#include <dns/opcode.h>
|
||||
|
|
@ -101,9 +102,6 @@
|
|||
#define ZONE_MAGIC ISC_MAGIC('Z', 'O', 'N', 'E')
|
||||
#define DNS_ZONE_VALID(zone) ISC_MAGIC_VALID(zone, ZONE_MAGIC)
|
||||
|
||||
#define NOTIFY_MAGIC ISC_MAGIC('N', 't', 'f', 'y')
|
||||
#define DNS_NOTIFY_VALID(notify) ISC_MAGIC_VALID(notify, NOTIFY_MAGIC)
|
||||
|
||||
#define CHECKDS_MAGIC ISC_MAGIC('C', 'h', 'D', 'S')
|
||||
#define DNS_CHECKDS_VALID(checkds) ISC_MAGIC_VALID(checkds, CHECKDS_MAGIC)
|
||||
|
||||
|
|
@ -173,7 +171,6 @@
|
|||
#define DNS_DUMP_DELAY 900 /*%< 15 minutes */
|
||||
#endif /* ifndef DNS_DUMP_DELAY */
|
||||
|
||||
typedef struct dns_notify dns_notify_t;
|
||||
typedef struct dns_checkds dns_checkds_t;
|
||||
typedef struct dns_stub dns_stub_t;
|
||||
typedef struct dns_load dns_load_t;
|
||||
|
|
@ -355,10 +352,7 @@ struct dns_zone {
|
|||
uint32_t parent_nscount;
|
||||
|
||||
dns_remote_t alsonotify;
|
||||
dns_notifytype_t notifytype;
|
||||
isc_sockaddr_t notifyfrom;
|
||||
isc_sockaddr_t notifysrc4;
|
||||
isc_sockaddr_t notifysrc6;
|
||||
dns_notifyctx_t notifyctx;
|
||||
|
||||
isc_sockaddr_t parentalsrc4;
|
||||
isc_sockaddr_t parentalsrc6;
|
||||
|
|
@ -370,14 +364,13 @@ struct dns_zone {
|
|||
/* Access Control Lists */
|
||||
dns_acl_t *update_acl;
|
||||
dns_acl_t *forward_acl;
|
||||
dns_acl_t *notify_acl;
|
||||
dns_acl_t *query_acl;
|
||||
dns_acl_t *queryon_acl;
|
||||
dns_acl_t *xfr_acl;
|
||||
bool update_disabled;
|
||||
bool zero_no_soa_ttl;
|
||||
dns_severity_t check_names;
|
||||
ISC_LIST(dns_notify_t) notifies;
|
||||
|
||||
ISC_LIST(dns_checkds_t) checkds_requests;
|
||||
dns_request_t *request;
|
||||
dns_loadctx_t *loadctx;
|
||||
|
|
@ -658,31 +651,6 @@ struct dns_zonemgr {
|
|||
isc_rwlock_t tlsctx_cache_rwlock;
|
||||
};
|
||||
|
||||
/*%
|
||||
* Hold notify state.
|
||||
*/
|
||||
struct dns_notify {
|
||||
unsigned int magic;
|
||||
unsigned int flags;
|
||||
isc_mem_t *mctx;
|
||||
dns_zone_t *zone;
|
||||
dns_adbfind_t *find;
|
||||
dns_request_t *request;
|
||||
dns_name_t ns;
|
||||
isc_sockaddr_t src;
|
||||
isc_sockaddr_t dst;
|
||||
dns_tsigkey_t *key;
|
||||
dns_transport_t *transport;
|
||||
ISC_LINK(dns_notify_t) link;
|
||||
isc_rlevent_t *rlevent;
|
||||
};
|
||||
|
||||
typedef enum dns_notify_flags {
|
||||
DNS_NOTIFY_NOSOA = 1 << 0,
|
||||
DNS_NOTIFY_STARTUP = 1 << 1,
|
||||
DNS_NOTIFY_TCP = 1 << 2,
|
||||
} dns_notify_flags_t;
|
||||
|
||||
/*%
|
||||
* Hold checkds state.
|
||||
*/
|
||||
|
|
@ -1157,7 +1125,6 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx, isc_tid_t tid) {
|
|||
.maxretry = DNS_ZONE_MAXRETRY,
|
||||
.minretry = DNS_ZONE_MINRETRY,
|
||||
.checkdstype = dns_checkdstype_yes,
|
||||
.notifytype = dns_notifytype_yes,
|
||||
.zero_no_soa_ttl = true,
|
||||
.check_names = dns_severity_ignore,
|
||||
.idlein = DNS_DEFAULT_IDLEIN,
|
||||
|
|
@ -1179,7 +1146,6 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx, isc_tid_t tid) {
|
|||
.tid = tid,
|
||||
.notifytime = now,
|
||||
.newincludes = ISC_LIST_INITIALIZER,
|
||||
.notifies = ISC_LIST_INITIALIZER,
|
||||
.checkds_requests = ISC_LIST_INITIALIZER,
|
||||
.signing = ISC_LIST_INITIALIZER,
|
||||
.nsec3chain = ISC_LIST_INITIALIZER,
|
||||
|
|
@ -1191,6 +1157,13 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx, isc_tid_t tid) {
|
|||
dns_remote_t r = {
|
||||
.magic = DNS_REMOTE_MAGIC,
|
||||
};
|
||||
dns_notifyctx_t nc = {
|
||||
.notifytype = dns_notifytype_yes,
|
||||
.notifies = ISC_LIST_INITIALIZER,
|
||||
};
|
||||
isc_sockaddr_any(&nc.notifysrc4);
|
||||
isc_sockaddr_any6(&nc.notifysrc6);
|
||||
zone->notifyctx = nc;
|
||||
|
||||
isc_mem_attach(mctx, &zone->mctx);
|
||||
isc_mutex_init(&zone->lock);
|
||||
|
|
@ -1199,8 +1172,6 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx, isc_tid_t tid) {
|
|||
isc_refcount_init(&zone->references, 1);
|
||||
isc_refcount_init(&zone->irefs, 0);
|
||||
dns_name_init(&zone->origin);
|
||||
isc_sockaddr_any(&zone->notifysrc4);
|
||||
isc_sockaddr_any6(&zone->notifysrc6);
|
||||
isc_sockaddr_any(&zone->parentalsrc4);
|
||||
isc_sockaddr_any6(&zone->parentalsrc6);
|
||||
isc_sockaddr_any(&zone->xfrsource4);
|
||||
|
|
@ -1356,8 +1327,8 @@ zone_free(dns_zone_t *zone) {
|
|||
if (zone->forward_acl != NULL) {
|
||||
dns_acl_detach(&zone->forward_acl);
|
||||
}
|
||||
if (zone->notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notify_acl);
|
||||
if (zone->notifyctx.notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notifyctx.notify_acl);
|
||||
}
|
||||
if (zone->query_acl != NULL) {
|
||||
dns_acl_detach(&zone->query_acl);
|
||||
|
|
@ -1475,7 +1446,7 @@ dns_zone_setnotifytype(dns_zone_t *zone, dns_notifytype_t notifytype) {
|
|||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
zone->notifytype = notifytype;
|
||||
zone->notifyctx.notifytype = notifytype;
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -6496,7 +6467,7 @@ dns_zone_setnotifysrc4(dns_zone_t *zone, const isc_sockaddr_t *notifysrc) {
|
|||
REQUIRE(notifysrc != NULL);
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
zone->notifysrc4 = *notifysrc;
|
||||
zone->notifyctx.notifysrc4 = *notifysrc;
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -6506,7 +6477,7 @@ dns_zone_getnotifysrc4(dns_zone_t *zone, isc_sockaddr_t *notifysrc) {
|
|||
REQUIRE(notifysrc != NULL);
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
*notifysrc = zone->notifysrc4;
|
||||
*notifysrc = zone->notifyctx.notifysrc4;
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -6516,7 +6487,7 @@ dns_zone_setnotifysrc6(dns_zone_t *zone, const isc_sockaddr_t *notifysrc) {
|
|||
REQUIRE(notifysrc != NULL);
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
zone->notifysrc6 = *notifysrc;
|
||||
zone->notifyctx.notifysrc6 = *notifysrc;
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -6526,7 +6497,7 @@ dns_zone_getnotifysrc6(dns_zone_t *zone, isc_sockaddr_t *notifysrc) {
|
|||
REQUIRE(notifysrc != NULL);
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
*notifysrc = zone->notifysrc6;
|
||||
*notifysrc = zone->notifyctx.notifysrc6;
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -12546,7 +12517,7 @@ notify_cancel(dns_zone_t *zone) {
|
|||
|
||||
REQUIRE(LOCKED_ZONE(zone));
|
||||
|
||||
ISC_LIST_FOREACH(zone->notifies, notify, link) {
|
||||
ISC_LIST_FOREACH(zone->notifyctx.notifies, notify, link) {
|
||||
if (notify->find != NULL) {
|
||||
dns_adb_cancelfind(notify->find);
|
||||
}
|
||||
|
|
@ -12691,7 +12662,7 @@ notify_isqueued(dns_zone_t *zone, unsigned int flags, dns_name_t *name,
|
|||
dns_zonemgr_t *zmgr = NULL;
|
||||
isc_result_t result;
|
||||
|
||||
ISC_LIST_FOREACH(zone->notifies, n, link) {
|
||||
ISC_LIST_FOREACH(zone->notifyctx.notifies, n, link) {
|
||||
if (n->request != NULL) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -12749,11 +12720,11 @@ notify_isself(dns_zone_t *zone, isc_sockaddr_t *dst) {
|
|||
|
||||
switch (isc_sockaddr_pf(dst)) {
|
||||
case PF_INET:
|
||||
src = zone->notifysrc4;
|
||||
src = zone->notifyctx.notifysrc4;
|
||||
isc_sockaddr_any(&any);
|
||||
break;
|
||||
case PF_INET6:
|
||||
src = zone->notifysrc6;
|
||||
src = zone->notifyctx.notifysrc6;
|
||||
isc_sockaddr_any6(&any);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -12793,7 +12764,8 @@ notify_destroy(dns_notify_t *notify, bool locked) {
|
|||
}
|
||||
REQUIRE(LOCKED_ZONE(notify->zone));
|
||||
if (ISC_LINK_LINKED(notify, link)) {
|
||||
ISC_LIST_UNLINK(notify->zone->notifies, notify, link);
|
||||
ISC_LIST_UNLINK(notify->zone->notifyctx.notifies,
|
||||
notify, link);
|
||||
}
|
||||
if (!locked) {
|
||||
UNLOCK_ZONE(notify->zone);
|
||||
|
|
@ -12824,27 +12796,6 @@ notify_destroy(dns_notify_t *notify, bool locked) {
|
|||
isc_mem_detach(&mctx);
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
notify_create(isc_mem_t *mctx, unsigned int flags, dns_notify_t **notifyp) {
|
||||
dns_notify_t *notify;
|
||||
|
||||
REQUIRE(notifyp != NULL && *notifyp == NULL);
|
||||
|
||||
notify = isc_mem_get(mctx, sizeof(*notify));
|
||||
*notify = (dns_notify_t){
|
||||
.flags = flags,
|
||||
};
|
||||
|
||||
isc_mem_attach(mctx, ¬ify->mctx);
|
||||
isc_sockaddr_any(¬ify->src);
|
||||
isc_sockaddr_any(¬ify->dst);
|
||||
dns_name_init(¬ify->ns);
|
||||
ISC_LINK_INIT(notify, link);
|
||||
notify->magic = NOTIFY_MAGIC;
|
||||
*notifyp = notify;
|
||||
return ISC_R_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* XXXAG should check for DNS_ZONEFLG_EXITING
|
||||
*/
|
||||
|
|
@ -13030,7 +12981,7 @@ notify_send_toaddr(void *arg) {
|
|||
|
||||
src = notify->src;
|
||||
if (isc_sockaddr_equal(&src, &any)) {
|
||||
src = notify->zone->notifysrc4;
|
||||
src = notify->zone->notifyctx.notifysrc4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -13041,7 +12992,7 @@ notify_send_toaddr(void *arg) {
|
|||
|
||||
src = notify->src;
|
||||
if (isc_sockaddr_equal(&src, &any)) {
|
||||
src = notify->zone->notifysrc6;
|
||||
src = notify->zone->notifyctx.notifysrc6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -13137,12 +13088,10 @@ notify_send(dns_notify_t *notify) {
|
|||
}
|
||||
newnotify = NULL;
|
||||
flags = notify->flags & DNS_NOTIFY_NOSOA;
|
||||
result = notify_create(notify->mctx, flags, &newnotify);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
goto cleanup;
|
||||
}
|
||||
dns_notify_create(notify->mctx, flags, &newnotify);
|
||||
zone_iattach(notify->zone, &newnotify->zone);
|
||||
ISC_LIST_APPEND(newnotify->zone->notifies, newnotify, link);
|
||||
ISC_LIST_APPEND(newnotify->zone->notifyctx.notifies, newnotify,
|
||||
link);
|
||||
newnotify->dst = dst;
|
||||
if (isc_sockaddr_pf(&dst) == AF_INET6) {
|
||||
isc_sockaddr_any6(&newnotify->src);
|
||||
|
|
@ -13218,7 +13167,7 @@ zone_notify(dns_zone_t *zone, isc_time_t *now) {
|
|||
DNS_ZONEFLG_NEEDSTARTUPNOTIFY |
|
||||
DNS_ZONEFLG_NOTIFYNODEFER |
|
||||
DNS_ZONEFLG_NOTIFYDEFERRED);
|
||||
notifytype = zone->notifytype;
|
||||
notifytype = zone->notifyctx.notifytype;
|
||||
DNS_ZONE_TIME_ADD(now, zone->notifydelay, &zone->notifytime);
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
|
|
@ -13346,17 +13295,7 @@ zone_notify(dns_zone_t *zone, isc_time_t *now) {
|
|||
goto next;
|
||||
}
|
||||
|
||||
result = notify_create(zone->mctx, flags, ¬ify);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
if (key != NULL) {
|
||||
dns_tsigkey_detach(&key);
|
||||
}
|
||||
if (transport != NULL) {
|
||||
dns_transport_detach(&transport);
|
||||
}
|
||||
goto next;
|
||||
}
|
||||
|
||||
dns_notify_create(zone->mctx, flags, ¬ify);
|
||||
zone_iattach(zone, ¬ify->zone);
|
||||
notify->src = src;
|
||||
notify->dst = dst;
|
||||
|
|
@ -13374,7 +13313,7 @@ zone_notify(dns_zone_t *zone, isc_time_t *now) {
|
|||
transport = NULL;
|
||||
}
|
||||
|
||||
ISC_LIST_APPEND(zone->notifies, notify, link);
|
||||
ISC_LIST_APPEND(zone->notifyctx.notifies, notify, link);
|
||||
result = notify_send_queue(notify, startup);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
notify_destroy(notify, true);
|
||||
|
|
@ -13437,14 +13376,11 @@ zone_notify(dns_zone_t *zone, isc_time_t *now) {
|
|||
if (isqueued) {
|
||||
continue;
|
||||
}
|
||||
result = notify_create(zone->mctx, flags, ¬ify);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
continue;
|
||||
}
|
||||
dns_notify_create(zone->mctx, flags, ¬ify);
|
||||
dns_zone_iattach(zone, ¬ify->zone);
|
||||
dns_name_dup(&ns.name, zone->mctx, ¬ify->ns);
|
||||
LOCK_ZONE(zone);
|
||||
ISC_LIST_APPEND(zone->notifies, notify, link);
|
||||
ISC_LIST_APPEND(zone->notifyctx.notifies, notify, link);
|
||||
UNLOCK_ZONE(zone);
|
||||
notify_find_address(notify);
|
||||
}
|
||||
|
|
@ -15907,14 +15843,15 @@ dns_zone_notifyreceive(dns_zone_t *zone, isc_sockaddr_t *from,
|
|||
|
||||
/*
|
||||
* Accept notify requests from non primaries if they are on
|
||||
* 'zone->notify_acl'.
|
||||
* 'zone->notifyctx.notify_acl'.
|
||||
*/
|
||||
tsigkey = dns_message_gettsigkey(msg);
|
||||
tsig = dns_tsigkey_identity(tsigkey);
|
||||
if (i >= dns_remote_count(&zone->primaries) &&
|
||||
zone->notify_acl != NULL &&
|
||||
(dns_acl_match(&netaddr, tsig, zone->notify_acl, zone->view->aclenv,
|
||||
&match, NULL) == ISC_R_SUCCESS) &&
|
||||
zone->notifyctx.notify_acl != NULL &&
|
||||
(dns_acl_match(&netaddr, tsig, zone->notifyctx.notify_acl,
|
||||
zone->view->aclenv, &match,
|
||||
NULL) == ISC_R_SUCCESS) &&
|
||||
match > 0)
|
||||
{
|
||||
/* Accept notify. */
|
||||
|
|
@ -15976,7 +15913,7 @@ dns_zone_notifyreceive(dns_zone_t *zone, isc_sockaddr_t *from,
|
|||
*/
|
||||
if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_REFRESH)) {
|
||||
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDREFRESH);
|
||||
zone->notifyfrom = *from;
|
||||
zone->notifyctx.notifyfrom = *from;
|
||||
UNLOCK_ZONE(zone);
|
||||
if (have_serial) {
|
||||
dns_zone_logc(zone, DNS_LOGCATEGORY_XFER_IN,
|
||||
|
|
@ -16002,7 +15939,7 @@ dns_zone_notifyreceive(dns_zone_t *zone, isc_sockaddr_t *from,
|
|||
dns_zone_logc(zone, DNS_LOGCATEGORY_XFER_IN, ISC_LOG_INFO,
|
||||
"notify from %s: no serial", fromtext);
|
||||
}
|
||||
zone->notifyfrom = *from;
|
||||
zone->notifyctx.notifyfrom = *from;
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
if (to != NULL) {
|
||||
|
|
@ -16017,10 +15954,10 @@ dns_zone_setnotifyacl(dns_zone_t *zone, dns_acl_t *acl) {
|
|||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
if (zone->notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notify_acl);
|
||||
if (zone->notifyctx.notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notifyctx.notify_acl);
|
||||
}
|
||||
dns_acl_attach(acl, &zone->notify_acl);
|
||||
dns_acl_attach(acl, &zone->notifyctx.notify_acl);
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
|
|
@ -16088,7 +16025,7 @@ dns_acl_t *
|
|||
dns_zone_getnotifyacl(dns_zone_t *zone) {
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
return zone->notify_acl;
|
||||
return zone->notifyctx.notify_acl;
|
||||
}
|
||||
|
||||
dns_acl_t *
|
||||
|
|
@ -16153,8 +16090,8 @@ dns_zone_clearnotifyacl(dns_zone_t *zone) {
|
|||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
if (zone->notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notify_acl);
|
||||
if (zone->notifyctx.notify_acl != NULL) {
|
||||
dns_acl_detach(&zone->notifyctx.notify_acl);
|
||||
}
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue