From 18d110413cf6416eb339c169b99159d09f690da1 Mon Sep 17 00:00:00 2001 From: Brian Wellington Date: Wed, 17 Jan 2001 01:22:20 +0000 Subject: [PATCH] Move dns_dnssec_iszonekey to dns_zonekey_iszonekey, to make the rbtdb not require all of dst to be linked in. --- lib/dns/Makefile.in | 6 +++--- lib/dns/dnssec.c | 25 +------------------------ lib/dns/include/dns/Makefile.in | 4 ++-- lib/dns/include/dns/dnssec.h | 11 +---------- lib/dns/include/dns/zonekey.h | 19 +++++++++++++++++++ lib/dns/rbtdb.c | 6 +++--- lib/dns/zonekey.c | 32 ++++++++++++++++++++++++++++++++ 7 files changed, 61 insertions(+), 42 deletions(-) create mode 100644 lib/dns/include/dns/zonekey.h create mode 100644 lib/dns/zonekey.c diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in index 454bbdf040..d929a68a62 100644 --- a/lib/dns/Makefile.in +++ b/lib/dns/Makefile.in @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.120 2001/01/17 01:08:03 bwelling Exp $ +# $Id: Makefile.in,v 1.121 2001/01/17 01:22:15 bwelling Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -105,7 +105,7 @@ OBJS = a6.@O@ acl.@O@ adb.@O@ byaddr.@O@ \ resolver.@O@ result.@O@ rootns.@O@ sdb.@O@ ssu.@O@ \ stats.@O@ tcpmsg.@O@ time.@O@ timer.@O@ tkey.@O@ \ tsig.@O@ ttl.@O@ validator.@O@ \ - version.@O@ view.@O@ xfrin.@O@ zone.@O@ zt.@O@ \ + version.@O@ view.@O@ xfrin.@O@ zone.@O@ zonekey.@O@ zt.@O@ \ ${OTHEROBJS} ${DSTOBJS} @DST_OPENSSL_OBJS@ ${CONFOBJS} # Alphabetically @@ -121,7 +121,7 @@ SRCS = a6.c acl.c adb.c byaddr.c \ resolver.c result.c rootns.c sdb.c ssu.c \ stats.c tcpmsg.c time.c timer.c tkey.c \ tsig.c ttl.c validator.c \ - version.c view.c xfrin.c zone.c zt.c ${OTHERSRCS} + version.c view.c xfrin.c zone.c zonekey.c zt.c ${OTHERSRCS} SUBDIRS = include sec config TARGETS = include/dns/enumtype.h include/dns/enumclass.h \ diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index 3d48b3ce16..aaf8adeac8 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -16,7 +16,7 @@ */ /* - * $Id: dnssec.c,v 1.59 2001/01/09 21:50:49 bwelling Exp $ + * $Id: dnssec.c,v 1.60 2001/01/17 01:22:16 bwelling Exp $ */ @@ -762,26 +762,3 @@ failure: return (result); } - -isc_boolean_t -dns_dnssec_iszonekey(dns_rdata_t *keyrdata) { - isc_result_t result; - dns_rdata_key_t key; - isc_boolean_t iszonekey = ISC_TRUE; - - REQUIRE(keyrdata != NULL); - - result = dns_rdata_tostruct(keyrdata, &key, NULL); - if (result != ISC_R_SUCCESS) - return (ISC_FALSE); - - if ((key.flags & DNS_KEYTYPE_NOAUTH) != 0) - iszonekey = ISC_FALSE; - if ((key.flags & DNS_KEYFLAG_OWNERMASK) != DNS_KEYOWNER_ZONE) - iszonekey = ISC_FALSE; - if (key.protocol != DNS_KEYPROTO_DNSSEC && - key.protocol != DNS_KEYPROTO_ANY) - iszonekey = ISC_FALSE; - - return (iszonekey); -} diff --git a/lib/dns/include/dns/Makefile.in b/lib/dns/include/dns/Makefile.in index ba6df40431..947fa01fca 100644 --- a/lib/dns/include/dns/Makefile.in +++ b/lib/dns/include/dns/Makefile.in @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.40 2001/01/09 21:52:13 bwelling Exp $ +# $Id: Makefile.in,v 1.41 2001/01/17 01:22:19 bwelling Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -36,7 +36,7 @@ HEADERS = a6.h acl.h adb.h byaddr.h cache.h callbacks.h \ rootns.h sdb.h secalg.h secproto.h ssu.h \ tcpmsg.h time.h tkey.h \ tsig.h ttl.h types.h validator.h view.h xfrin.h \ - zone.h zt.h + zone.h zonekey.h zt.h GENHEADERS = enumclass.h enumtype.h rdatastruct.h diff --git a/lib/dns/include/dns/dnssec.h b/lib/dns/include/dns/dnssec.h index 00f797c7cf..1aed228e5a 100644 --- a/lib/dns/include/dns/dnssec.h +++ b/lib/dns/include/dns/dnssec.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec.h,v 1.20 2001/01/09 21:52:49 bwelling Exp $ */ +/* $Id: dnssec.h,v 1.21 2001/01/17 01:22:20 bwelling Exp $ */ #ifndef DNS_DNSSEC_H #define DNS_DNSSEC_H 1 @@ -159,15 +159,6 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg, * DST_R_* */ -isc_boolean_t -dns_dnssec_iszonekey(dns_rdata_t *keyrdata); -/* - * Determines if the key record contained in the rdata is a zone key. - * - * Requires: - * 'keyrdata' is not NULL. - */ - ISC_LANG_ENDDECLS #endif /* DNS_DNSSEC_H */ diff --git a/lib/dns/include/dns/zonekey.h b/lib/dns/include/dns/zonekey.h new file mode 100644 index 0000000000..13a413f578 --- /dev/null +++ b/lib/dns/include/dns/zonekey.h @@ -0,0 +1,19 @@ +#ifndef DNS_ZONEKEY_H +#define DNS_ZONEKEY_H 1 + +#include + +ISC_LANG_BEGINDECLS + +isc_boolean_t +dns_zonekey_iszonekey(dns_rdata_t *keyrdata); +/* + * Determines if the key record contained in the rdata is a zone key. + * + * Requires: + * 'keyrdata' is not NULL. + */ + +ISC_LANG_ENDDECLS + +#endif /* DNS_ZONEKEY_H */ diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 34fb930b56..8cb8c540a1 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rbtdb.c,v 1.143 2001/01/12 20:11:28 gson Exp $ */ +/* $Id: rbtdb.c,v 1.144 2001/01/17 01:22:17 bwelling Exp $ */ /* * Principal Author: Bob Halley @@ -31,7 +31,6 @@ #include #include -#include #include #include #include @@ -40,6 +39,7 @@ #include #include #include +#include #ifdef DNS_RBTDB_VERSION64 #include "rbtdb64.h" @@ -3812,7 +3812,7 @@ endload(dns_db_t *db, dns_dbload_t **dbloadp) { result = dns_rdataset_first(&keyset); while (result == ISC_R_SUCCESS) { dns_rdataset_current(&keyset, &keyrdata); - if (dns_dnssec_iszonekey(&keyrdata)) { + if (dns_zonekey_iszonekey(&keyrdata)) { rbtdb->secure = ISC_TRUE; break; } diff --git a/lib/dns/zonekey.c b/lib/dns/zonekey.c new file mode 100644 index 0000000000..58fb265607 --- /dev/null +++ b/lib/dns/zonekey.c @@ -0,0 +1,32 @@ +#include +#include +#include + +#include +#include +#include +#include +#include + +isc_boolean_t +dns_zonekey_iszonekey(dns_rdata_t *keyrdata) { + isc_result_t result; + dns_rdata_key_t key; + isc_boolean_t iszonekey = ISC_TRUE; + + REQUIRE(keyrdata != NULL); + + result = dns_rdata_tostruct(keyrdata, &key, NULL); + if (result != ISC_R_SUCCESS) + return (ISC_FALSE); + + if ((key.flags & DNS_KEYTYPE_NOAUTH) != 0) + iszonekey = ISC_FALSE; + if ((key.flags & DNS_KEYFLAG_OWNERMASK) != DNS_KEYOWNER_ZONE) + iszonekey = ISC_FALSE; + if (key.protocol != DNS_KEYPROTO_DNSSEC && + key.protocol != DNS_KEYPROTO_ANY) + iszonekey = ISC_FALSE; + + return (iszonekey); +}