1 /*
2 * Copyright (C) 2004, 2006, 2007, 2009-2013, 2015 Internet Systems Consortium, Inc. ("ISC")
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
9 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
11 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
13 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14 * PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 /* $Id$ */
18
19 /* draft-ietf-dnsext-delegation-signer-05.txt */
20
21 #ifndef RDATA_GENERIC_DLV_32769_C
22 #define RDATA_GENERIC_DLV_32769_C
23
24 #define RRTYPE_DLV_ATTRIBUTES 0
25
26 #include <isc/sha1.h>
27 #include <isc/sha2.h>
28
29 #include <dns/ds.h>
30
31
32 static inline isc_result_t
fromtext_dlv(ARGS_FROMTEXT)33 fromtext_dlv(ARGS_FROMTEXT) {
34
35 REQUIRE(type == dns_rdatatype_dlv);
36
37 return (generic_fromtext_ds(rdclass, type, lexer, origin, options,
38 target, callbacks));
39 }
40
41 static inline isc_result_t
totext_dlv(ARGS_TOTEXT)42 totext_dlv(ARGS_TOTEXT) {
43
44 REQUIRE(rdata->type == dns_rdatatype_dlv);
45
46 return (generic_totext_ds(rdata, tctx, target));
47 }
48
49 static inline isc_result_t
fromwire_dlv(ARGS_FROMWIRE)50 fromwire_dlv(ARGS_FROMWIRE) {
51
52 REQUIRE(type == dns_rdatatype_dlv);
53
54 return (generic_fromwire_ds(rdclass, type, source, dctx, options,
55 target));
56 }
57
58 static inline isc_result_t
towire_dlv(ARGS_TOWIRE)59 towire_dlv(ARGS_TOWIRE) {
60 isc_region_t sr;
61
62 REQUIRE(rdata->type == dns_rdatatype_dlv);
63 REQUIRE(rdata->length != 0);
64
65 UNUSED(cctx);
66
67 dns_rdata_toregion(rdata, &sr);
68 return (mem_tobuffer(target, sr.base, sr.length));
69 }
70
71 static inline int
compare_dlv(ARGS_COMPARE)72 compare_dlv(ARGS_COMPARE) {
73 isc_region_t r1;
74 isc_region_t r2;
75
76 REQUIRE(rdata1->type == rdata2->type);
77 REQUIRE(rdata1->rdclass == rdata2->rdclass);
78 REQUIRE(rdata1->type == dns_rdatatype_dlv);
79 REQUIRE(rdata1->length != 0);
80 REQUIRE(rdata2->length != 0);
81
82 dns_rdata_toregion(rdata1, &r1);
83 dns_rdata_toregion(rdata2, &r2);
84 return (isc_region_compare(&r1, &r2));
85 }
86
87 static inline isc_result_t
fromstruct_dlv(ARGS_FROMSTRUCT)88 fromstruct_dlv(ARGS_FROMSTRUCT) {
89
90 REQUIRE(type == dns_rdatatype_dlv);
91
92 return (generic_fromstruct_ds(rdclass, type, source, target));
93 }
94
95 static inline isc_result_t
tostruct_dlv(ARGS_TOSTRUCT)96 tostruct_dlv(ARGS_TOSTRUCT) {
97 dns_rdata_dlv_t *dlv = target;
98
99 REQUIRE(rdata->type == dns_rdatatype_dlv);
100
101 dlv->common.rdclass = rdata->rdclass;
102 dlv->common.rdtype = rdata->type;
103 ISC_LINK_INIT(&dlv->common, link);
104
105 return (generic_tostruct_ds(rdata, target, mctx));
106 }
107
108 static inline void
freestruct_dlv(ARGS_FREESTRUCT)109 freestruct_dlv(ARGS_FREESTRUCT) {
110 dns_rdata_dlv_t *dlv = source;
111
112 REQUIRE(dlv != NULL);
113 REQUIRE(dlv->common.rdtype == dns_rdatatype_dlv);
114
115 if (dlv->mctx == NULL)
116 return;
117
118 if (dlv->digest != NULL)
119 isc_mem_free(dlv->mctx, dlv->digest);
120 dlv->mctx = NULL;
121 }
122
123 static inline isc_result_t
additionaldata_dlv(ARGS_ADDLDATA)124 additionaldata_dlv(ARGS_ADDLDATA) {
125 REQUIRE(rdata->type == dns_rdatatype_dlv);
126
127 UNUSED(rdata);
128 UNUSED(add);
129 UNUSED(arg);
130
131 return (ISC_R_SUCCESS);
132 }
133
134 static inline isc_result_t
digest_dlv(ARGS_DIGEST)135 digest_dlv(ARGS_DIGEST) {
136 isc_region_t r;
137
138 REQUIRE(rdata->type == dns_rdatatype_dlv);
139
140 dns_rdata_toregion(rdata, &r);
141
142 return ((digest)(arg, &r));
143 }
144
145 static inline isc_boolean_t
checkowner_dlv(ARGS_CHECKOWNER)146 checkowner_dlv(ARGS_CHECKOWNER) {
147
148 REQUIRE(type == dns_rdatatype_dlv);
149
150 UNUSED(name);
151 UNUSED(type);
152 UNUSED(rdclass);
153 UNUSED(wildcard);
154
155 return (ISC_TRUE);
156 }
157
158 static inline isc_boolean_t
checknames_dlv(ARGS_CHECKNAMES)159 checknames_dlv(ARGS_CHECKNAMES) {
160
161 REQUIRE(rdata->type == dns_rdatatype_dlv);
162
163 UNUSED(rdata);
164 UNUSED(owner);
165 UNUSED(bad);
166
167 return (ISC_TRUE);
168 }
169
170 static inline int
casecompare_dlv(ARGS_COMPARE)171 casecompare_dlv(ARGS_COMPARE) {
172 return (compare_dlv(rdata1, rdata2));
173 }
174
175 #endif /* RDATA_GENERIC_DLV_32769_C */
176