1 /* $NetBSD: smimea_53.c,v 1.8 2022/09/23 12:15:31 christos Exp $ */
2
3 /*
4 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5 *
6 * SPDX-License-Identifier: MPL-2.0
7 *
8 * This Source Code Form is subject to the terms of the Mozilla Public
9 * License, v. 2.0. If a copy of the MPL was not distributed with this
10 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11 *
12 * See the COPYRIGHT file distributed with this work for additional
13 * information regarding copyright ownership.
14 */
15
16 #ifndef RDATA_GENERIC_SMIMEA_53_C
17 #define RDATA_GENERIC_SMIMEA_53_C
18
19 #define RRTYPE_SMIMEA_ATTRIBUTES 0
20
21 static isc_result_t
fromtext_smimea(ARGS_FROMTEXT)22 fromtext_smimea(ARGS_FROMTEXT) {
23 REQUIRE(type == dns_rdatatype_smimea);
24
25 return (generic_fromtext_tlsa(CALL_FROMTEXT));
26 }
27
28 static isc_result_t
totext_smimea(ARGS_TOTEXT)29 totext_smimea(ARGS_TOTEXT) {
30 REQUIRE(rdata != NULL);
31 REQUIRE(rdata->type == dns_rdatatype_smimea);
32
33 return (generic_totext_tlsa(CALL_TOTEXT));
34 }
35
36 static isc_result_t
fromwire_smimea(ARGS_FROMWIRE)37 fromwire_smimea(ARGS_FROMWIRE) {
38 REQUIRE(type == dns_rdatatype_smimea);
39
40 return (generic_fromwire_tlsa(CALL_FROMWIRE));
41 }
42
43 static isc_result_t
towire_smimea(ARGS_TOWIRE)44 towire_smimea(ARGS_TOWIRE) {
45 isc_region_t sr;
46
47 REQUIRE(rdata->type == dns_rdatatype_smimea);
48 REQUIRE(rdata->length != 0);
49
50 UNUSED(cctx);
51
52 dns_rdata_toregion(rdata, &sr);
53 return (mem_tobuffer(target, sr.base, sr.length));
54 }
55
56 static int
compare_smimea(ARGS_COMPARE)57 compare_smimea(ARGS_COMPARE) {
58 isc_region_t r1;
59 isc_region_t r2;
60
61 REQUIRE(rdata1->type == rdata2->type);
62 REQUIRE(rdata1->rdclass == rdata2->rdclass);
63 REQUIRE(rdata1->type == dns_rdatatype_smimea);
64 REQUIRE(rdata1->length != 0);
65 REQUIRE(rdata2->length != 0);
66
67 dns_rdata_toregion(rdata1, &r1);
68 dns_rdata_toregion(rdata2, &r2);
69 return (isc_region_compare(&r1, &r2));
70 }
71
72 static isc_result_t
fromstruct_smimea(ARGS_FROMSTRUCT)73 fromstruct_smimea(ARGS_FROMSTRUCT) {
74 REQUIRE(type == dns_rdatatype_smimea);
75
76 return (generic_fromstruct_tlsa(CALL_FROMSTRUCT));
77 }
78
79 static isc_result_t
tostruct_smimea(ARGS_TOSTRUCT)80 tostruct_smimea(ARGS_TOSTRUCT) {
81 dns_rdata_smimea_t *smimea = target;
82
83 REQUIRE(rdata != NULL);
84 REQUIRE(rdata->type == dns_rdatatype_smimea);
85 REQUIRE(smimea != NULL);
86
87 smimea->common.rdclass = rdata->rdclass;
88 smimea->common.rdtype = rdata->type;
89 ISC_LINK_INIT(&smimea->common, link);
90
91 return (generic_tostruct_tlsa(CALL_TOSTRUCT));
92 }
93
94 static void
freestruct_smimea(ARGS_FREESTRUCT)95 freestruct_smimea(ARGS_FREESTRUCT) {
96 dns_rdata_smimea_t *smimea = source;
97
98 REQUIRE(smimea != NULL);
99 REQUIRE(smimea->common.rdtype == dns_rdatatype_smimea);
100
101 generic_freestruct_tlsa(source);
102 }
103
104 static isc_result_t
additionaldata_smimea(ARGS_ADDLDATA)105 additionaldata_smimea(ARGS_ADDLDATA) {
106 REQUIRE(rdata->type == dns_rdatatype_smimea);
107
108 UNUSED(rdata);
109 UNUSED(add);
110 UNUSED(arg);
111
112 return (ISC_R_SUCCESS);
113 }
114
115 static isc_result_t
digest_smimea(ARGS_DIGEST)116 digest_smimea(ARGS_DIGEST) {
117 isc_region_t r;
118
119 REQUIRE(rdata->type == dns_rdatatype_smimea);
120
121 dns_rdata_toregion(rdata, &r);
122
123 return ((digest)(arg, &r));
124 }
125
126 static bool
checkowner_smimea(ARGS_CHECKOWNER)127 checkowner_smimea(ARGS_CHECKOWNER) {
128 REQUIRE(type == dns_rdatatype_smimea);
129
130 UNUSED(name);
131 UNUSED(type);
132 UNUSED(rdclass);
133 UNUSED(wildcard);
134
135 return (true);
136 }
137
138 static bool
checknames_smimea(ARGS_CHECKNAMES)139 checknames_smimea(ARGS_CHECKNAMES) {
140 REQUIRE(rdata->type == dns_rdatatype_smimea);
141
142 UNUSED(rdata);
143 UNUSED(owner);
144 UNUSED(bad);
145
146 return (true);
147 }
148
149 static int
casecompare_smimea(ARGS_COMPARE)150 casecompare_smimea(ARGS_COMPARE) {
151 return (compare_smimea(rdata1, rdata2));
152 }
153
154 #endif /* RDATA_GENERIC_SMIMEA_53_C */
155