diff options
| author | 2004-09-28 16:32:07 +0000 | |
|---|---|---|
| committer | 2004-09-28 16:32:07 +0000 | |
| commit | faa7e856a16b326b2afee3ddb8d19f2f91f85161 (patch) | |
| tree | a66b6d52d6af5dba140eb36c266ce2cc83b741f9 /usr.sbin/bind/lib/dns/diff.c | |
| parent | sync (oops) (diff) | |
| download | wireguard-openbsd-faa7e856a16b326b2afee3ddb8d19f2f91f85161.tar.xz wireguard-openbsd-faa7e856a16b326b2afee3ddb8d19f2f91f85161.zip | |
ISC BIND version 9.3.0. ok deraadt@
Diffstat (limited to 'usr.sbin/bind/lib/dns/diff.c')
| -rw-r--r-- | usr.sbin/bind/lib/dns/diff.c | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/usr.sbin/bind/lib/dns/diff.c b/usr.sbin/bind/lib/dns/diff.c index a146d0c82c6..3a502f2d48b 100644 --- a/usr.sbin/bind/lib/dns/diff.c +++ b/usr.sbin/bind/lib/dns/diff.c @@ -1,21 +1,21 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * - * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM - * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL - * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. */ -/* $ISC: diff.c,v 1.4.2.1 2002/08/08 04:54:30 marka Exp $ */ +/* $ISC: diff.c,v 1.4.2.1.8.4 2004/03/08 02:07:52 marka Exp $ */ #include <config.h> @@ -44,7 +44,7 @@ static dns_rdatatype_t rdata_covers(dns_rdata_t *rdata) { - return (rdata->type == dns_rdatatype_sig ? + return (rdata->type == dns_rdatatype_rrsig ? dns_rdata_covers(rdata) : 0); } @@ -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); } @@ -270,6 +270,7 @@ dns_diff_apply(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver) */ dns_rdataset_init(&rds); CHECK(dns_rdatalist_tordataset(&rdl, &rds)); + rds.trust = dns_trust_ultimate; /* * Merge the rdataset into the database. @@ -298,9 +299,10 @@ 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. */ - isc_log_write(DIFF_COMMON_LOGARGS, - ISC_LOG_WARNING, - "update with no effect"); + if (warn) + isc_log_write(DIFF_COMMON_LOGARGS, + ISC_LOG_WARNING, + "update with no effect"); } else if (result == ISC_R_SUCCESS || result == DNS_R_NXRRSET) { /* @@ -320,7 +322,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, |
