wired up the new 'request-ixfr' option

This commit is contained in:
Andreas Gustafsson 2000-03-20 19:42:21 +00:00
parent 72166c5cf5
commit 4bc5101166
5 changed files with 39 additions and 10 deletions

View file

@ -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"

View file

@ -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

View file

@ -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 */

View file

@ -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;
}
}

View file

@ -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. */