mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-23 07:07:00 -04:00
wired up the new 'request-ixfr' option
This commit is contained in:
parent
72166c5cf5
commit
4bc5101166
5 changed files with 39 additions and 10 deletions
|
|
@ -869,6 +869,12 @@ load_configuration(const char *filename, ns_server_t *server,
|
|||
(void) dns_c_ctx_gettransfersperns(configctx, &transfersperns);
|
||||
dns_zonemgr_settransfersperns(server->zonemgr, transfersperns);
|
||||
}
|
||||
{
|
||||
isc_boolean_t requestixfr = ISC_TRUE;
|
||||
(void) dns_c_ctx_getrequestixfr(configctx, &requestixfr);
|
||||
dns_zonemgr_setrequestixfr(server->zonemgr, requestixfr);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Configure the interface manager according to the "listen-on"
|
||||
|
|
|
|||
|
|
@ -75,6 +75,8 @@ options {
|
|||
[ transfers-per-ns number; ] Yes
|
||||
[ transfer-source ip_addr; ] Yes
|
||||
[ transfer-source-v6 ip_addr; ] Yes*
|
||||
[ request-ixfr yes_or_no; ] Yes*
|
||||
[ provide-ixfr yes_or_no; ] No*
|
||||
[ maintain-ixfr-base yes_or_no; ] Obsolete+
|
||||
[ max-ixfr-log-size number; ] No
|
||||
[ coresize size_spec ; ] No
|
||||
|
|
@ -104,7 +106,9 @@ controls No
|
|||
|
||||
server ip_addr {
|
||||
[ bogus yes_or_no; ] No
|
||||
[ support-ixfr yes_or_no; ] Yes
|
||||
[ request-ixfr yes_or_no; ] Yes*
|
||||
[ provide-ixfr yes_or_no; ] No*
|
||||
[ support-ixfr yes_or_no; ] Obsolete
|
||||
[ transfers number; ] Yes
|
||||
[ transfer-format ( one-answer | many-answers ); ] Yes
|
||||
[ keys { key_id [key_id ... ] }; ] Yes
|
||||
|
|
|
|||
|
|
@ -895,6 +895,12 @@ dns_zonemgr_getttransfersperns(dns_zonemgr_t *zmgr);
|
|||
dns_xfrinlist_t *
|
||||
dns_zonemgr_gettransferlist(dns_zonemgr_t *zmgr);
|
||||
|
||||
void
|
||||
dns_zonemgr_setrequestixfr(dns_zonemgr_t *zmgr, isc_boolean_t value);
|
||||
|
||||
isc_boolean_t
|
||||
dns_zonemgr_getrequestixfr(dns_zonemgr_t *zmgr);
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif /* DNS_ZONE_H */
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: xfrin.c,v 1.52 2000/03/17 17:45:05 gson Exp $ */
|
||||
/* $Id: xfrin.c,v 1.53 2000/03/20 19:37:50 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -533,7 +533,7 @@ dns_xfrin_create(dns_zone_t *zone, isc_sockaddr_t *masteraddr,
|
|||
CHECK(result);
|
||||
|
||||
/*
|
||||
* Decide whether we should use IXFR or AXFR.
|
||||
* Decide whether we should request IXFR or AXFR.
|
||||
*/
|
||||
if (db == NULL) {
|
||||
xfrin_log1(ISC_LOG_DEBUG(3), zonename, masteraddr,
|
||||
|
|
@ -543,15 +543,18 @@ dns_xfrin_create(dns_zone_t *zone, isc_sockaddr_t *masteraddr,
|
|||
} else {
|
||||
isc_boolean_t use_ixfr = ISC_TRUE;
|
||||
if (peer != NULL &&
|
||||
dns_peer_getsupportixfr(peer, &use_ixfr) == ISC_R_SUCCESS &&
|
||||
use_ixfr == ISC_FALSE)
|
||||
{
|
||||
dns_peer_getrequestixfr(peer, &use_ixfr) == ISC_R_SUCCESS) {
|
||||
; /* Using peer setting */
|
||||
} else {
|
||||
use_ixfr = dns_zonemgr_getrequestixfr(dns_zone_getmgr(zone));
|
||||
}
|
||||
if (use_ixfr == ISC_FALSE) {
|
||||
xfrin_log1(ISC_LOG_DEBUG(3), zonename, masteraddr,
|
||||
"IXFR disabled for server, using AXFR");
|
||||
"IXFR disabled, requesting AXFR");
|
||||
xfrtype = dns_rdatatype_axfr;
|
||||
} else {
|
||||
xfrin_log1(ISC_LOG_DEBUG(3), zonename, masteraddr,
|
||||
"trying IXFR");
|
||||
"requesting IXFR");
|
||||
xfrtype = dns_rdatatype_ixfr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: zone.c,v 1.86 2000/03/17 17:45:07 gson Exp $ */
|
||||
/* $Id: zone.c,v 1.87 2000/03/20 19:37:38 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -201,6 +201,7 @@ struct dns_zonemgr {
|
|||
/* Locked by conflock. */
|
||||
int transfersin;
|
||||
int transfersperns;
|
||||
isc_boolean_t requestixfr;
|
||||
/* Contains its own lock. */
|
||||
dns_xfrinlist_t transferlist;
|
||||
};
|
||||
|
|
@ -3323,12 +3324,21 @@ dns_zonemgr_getttransfersperns(dns_zonemgr_t *zmgr) {
|
|||
return (zmgr->transfersperns);
|
||||
}
|
||||
|
||||
|
||||
dns_xfrinlist_t *
|
||||
dns_zonemgr_gettransferlist(dns_zonemgr_t *zmgr) {
|
||||
return (&zmgr->transferlist);
|
||||
}
|
||||
|
||||
void
|
||||
dns_zonemgr_setrequestixfr(dns_zonemgr_t *zmgr, isc_boolean_t value) {
|
||||
zmgr->requestixfr = value;
|
||||
}
|
||||
|
||||
isc_boolean_t
|
||||
dns_zonemgr_getrequestixfr(dns_zonemgr_t *zmgr) {
|
||||
return (zmgr->requestixfr);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* hook for ondestroy notifcation from a database. */
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue