mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-04 16:45:24 +00:00
new function dns_diff_applysilently() [RT #2157]
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: diff.c,v 1.4 2001/01/09 21:50:47 bwelling Exp $ */
|
||||
/* $Id: diff.c,v 1.5 2001/11/29 00:15:34 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -188,8 +188,9 @@ dns_diff_appendminimal(dns_diff_t *diff, dns_difftuple_t **tuplep)
|
||||
ENSURE(*tuplep == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver)
|
||||
static isc_result_t
|
||||
diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver,
|
||||
isc_boolean_t warn)
|
||||
{
|
||||
dns_difftuple_t *t;
|
||||
dns_dbnode_t *node = NULL;
|
||||
@@ -253,14 +254,13 @@ dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver)
|
||||
t->rdata.type == type &&
|
||||
rdata_covers(&t->rdata) == covers)
|
||||
{
|
||||
if (t->ttl != rdl.ttl) {
|
||||
if (t->ttl != rdl.ttl && warn)
|
||||
isc_log_write(DIFF_COMMON_LOGARGS,
|
||||
ISC_LOG_WARNING,
|
||||
"TTL differs in rdataset, "
|
||||
"adjusting %lu -> %lu",
|
||||
(unsigned long) t->ttl,
|
||||
(unsigned long) rdl.ttl);
|
||||
}
|
||||
ISC_LIST_APPEND(rdl.rdata, &t->rdata, link);
|
||||
t = ISC_LIST_NEXT(t, link);
|
||||
}
|
||||
@@ -298,6 +298,7 @@ dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver)
|
||||
* from a server that is not as careful.
|
||||
* Issue a warning and continue.
|
||||
*/
|
||||
if (warn)
|
||||
isc_log_write(DIFF_COMMON_LOGARGS,
|
||||
ISC_LOG_WARNING,
|
||||
"update with no effect");
|
||||
@@ -320,7 +321,17 @@ dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver)
|
||||
return (result);
|
||||
}
|
||||
|
||||
/* XXX this duplicates lots of code in dns_diff_apply(). */
|
||||
isc_result_t
|
||||
dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver) {
|
||||
return (diff_apply(diff, db, ver, ISC_TRUE));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
dns_diff_applysilently(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver) {
|
||||
return (diff_apply(diff, db, ver, ISC_FALSE));
|
||||
}
|
||||
|
||||
/* XXX this duplicates lots of code in diff_apply(). */
|
||||
|
||||
isc_result_t
|
||||
dns_diff_load(dns_diff_t *diff, dns_addrdatasetfunc_t addfunc,
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: diff.h,v 1.4 2001/08/28 03:58:16 marka Exp $ */
|
||||
/* $Id: diff.h,v 1.5 2001/11/29 00:15:35 gson Exp $ */
|
||||
|
||||
#ifndef DNS_DIFF_H
|
||||
#define DNS_DIFF_H 1
|
||||
@@ -221,9 +221,14 @@ dns_diff_sort(dns_diff_t *diff, dns_diff_compare_func *compare);
|
||||
|
||||
isc_result_t
|
||||
dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver);
|
||||
isc_result_t
|
||||
dns_diff_applysilently(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver);
|
||||
/*
|
||||
* Apply 'diff' to the database 'db'.
|
||||
*
|
||||
* dns_diff_apply() logs warnings about updates with no effect or
|
||||
* with inconsistent TTLs; dns_diff_applysilently() does not.
|
||||
*
|
||||
* For efficiency, the diff should be sorted by owner name.
|
||||
* If it is not sorted, operation will still be correct,
|
||||
* but less efficient.
|
||||
|
Reference in New Issue
Block a user