xref: /netbsd-src/external/mpl/bind/dist/lib/dns/rdata/generic/resinfo_261.c (revision bcda20f65a8566e103791ec395f7f499ef322704)
1*bcda20f6Schristos /*	$NetBSD: resinfo_261.c,v 1.3 2025/01/26 16:25:33 christos Exp $	*/
2734a9f3dSchristos 
3734a9f3dSchristos /*
4734a9f3dSchristos  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5734a9f3dSchristos  *
6734a9f3dSchristos  * SPDX-License-Identifier: MPL-2.0
7734a9f3dSchristos  *
8734a9f3dSchristos  * This Source Code Form is subject to the terms of the Mozilla Public
9734a9f3dSchristos  * License, v. 2.0. If a copy of the MPL was not distributed with this
10734a9f3dSchristos  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11734a9f3dSchristos  *
12734a9f3dSchristos  * See the COPYRIGHT file distributed with this work for additional
13734a9f3dSchristos  * information regarding copyright ownership.
14734a9f3dSchristos  */
15734a9f3dSchristos 
16734a9f3dSchristos #ifndef RDATA_GENERIC_RESINFO_261_C
17734a9f3dSchristos #define RDATA_GENERIC_RESINFO_261_C
18734a9f3dSchristos 
19734a9f3dSchristos #define RRTYPE_RESINFO_ATTRIBUTES (DNS_RDATATYPEATTR_SINGLETON)
20734a9f3dSchristos 
21734a9f3dSchristos static isc_result_t
22734a9f3dSchristos fromtext_resinfo(ARGS_FROMTEXT) {
23734a9f3dSchristos 	REQUIRE(type == dns_rdatatype_resinfo);
24734a9f3dSchristos 
25*bcda20f6Schristos 	return generic_fromtext_txt(CALL_FROMTEXT);
26734a9f3dSchristos }
27734a9f3dSchristos 
28734a9f3dSchristos static isc_result_t
29734a9f3dSchristos totext_resinfo(ARGS_TOTEXT) {
30734a9f3dSchristos 	REQUIRE(rdata != NULL);
31734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
32734a9f3dSchristos 
33*bcda20f6Schristos 	return generic_totext_txt(CALL_TOTEXT);
34734a9f3dSchristos }
35734a9f3dSchristos 
36734a9f3dSchristos static isc_result_t
37734a9f3dSchristos fromwire_resinfo(ARGS_FROMWIRE) {
38734a9f3dSchristos 	REQUIRE(type == dns_rdatatype_resinfo);
39734a9f3dSchristos 
40*bcda20f6Schristos 	return generic_fromwire_txt(CALL_FROMWIRE);
41734a9f3dSchristos }
42734a9f3dSchristos 
43734a9f3dSchristos static isc_result_t
44734a9f3dSchristos towire_resinfo(ARGS_TOWIRE) {
45734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
46734a9f3dSchristos 
47734a9f3dSchristos 	UNUSED(cctx);
48734a9f3dSchristos 
49*bcda20f6Schristos 	return mem_tobuffer(target, rdata->data, rdata->length);
50734a9f3dSchristos }
51734a9f3dSchristos 
52734a9f3dSchristos static int
53734a9f3dSchristos compare_resinfo(ARGS_COMPARE) {
54734a9f3dSchristos 	isc_region_t r1;
55734a9f3dSchristos 	isc_region_t r2;
56734a9f3dSchristos 
57734a9f3dSchristos 	REQUIRE(rdata1->type == rdata2->type);
58734a9f3dSchristos 	REQUIRE(rdata1->rdclass == rdata2->rdclass);
59734a9f3dSchristos 	REQUIRE(rdata1->type == dns_rdatatype_resinfo);
60734a9f3dSchristos 
61734a9f3dSchristos 	dns_rdata_toregion(rdata1, &r1);
62734a9f3dSchristos 	dns_rdata_toregion(rdata2, &r2);
63*bcda20f6Schristos 	return isc_region_compare(&r1, &r2);
64734a9f3dSchristos }
65734a9f3dSchristos 
66734a9f3dSchristos static isc_result_t
67734a9f3dSchristos fromstruct_resinfo(ARGS_FROMSTRUCT) {
68734a9f3dSchristos 	REQUIRE(type == dns_rdatatype_resinfo);
69734a9f3dSchristos 
70*bcda20f6Schristos 	return generic_fromstruct_txt(CALL_FROMSTRUCT);
71734a9f3dSchristos }
72734a9f3dSchristos 
73734a9f3dSchristos static isc_result_t
74734a9f3dSchristos tostruct_resinfo(ARGS_TOSTRUCT) {
75734a9f3dSchristos 	dns_rdata_resinfo_t *resinfo = target;
76734a9f3dSchristos 
77734a9f3dSchristos 	REQUIRE(resinfo != NULL);
78734a9f3dSchristos 	REQUIRE(rdata != NULL);
79734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
80734a9f3dSchristos 
81734a9f3dSchristos 	resinfo->common.rdclass = rdata->rdclass;
82734a9f3dSchristos 	resinfo->common.rdtype = rdata->type;
83734a9f3dSchristos 	ISC_LINK_INIT(&resinfo->common, link);
84734a9f3dSchristos 
85*bcda20f6Schristos 	return generic_tostruct_txt(CALL_TOSTRUCT);
86734a9f3dSchristos }
87734a9f3dSchristos 
88734a9f3dSchristos static void
89734a9f3dSchristos freestruct_resinfo(ARGS_FREESTRUCT) {
90734a9f3dSchristos 	dns_rdata_resinfo_t *resinfo = source;
91734a9f3dSchristos 
92734a9f3dSchristos 	REQUIRE(resinfo != NULL);
93734a9f3dSchristos 	REQUIRE(resinfo->common.rdtype == dns_rdatatype_resinfo);
94734a9f3dSchristos 
95734a9f3dSchristos 	generic_freestruct_txt(source);
96734a9f3dSchristos }
97734a9f3dSchristos 
98734a9f3dSchristos static isc_result_t
99734a9f3dSchristos additionaldata_resinfo(ARGS_ADDLDATA) {
100734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
101734a9f3dSchristos 
102734a9f3dSchristos 	UNUSED(rdata);
103734a9f3dSchristos 	UNUSED(owner);
104734a9f3dSchristos 	UNUSED(add);
105734a9f3dSchristos 	UNUSED(arg);
106734a9f3dSchristos 
107*bcda20f6Schristos 	return ISC_R_SUCCESS;
108734a9f3dSchristos }
109734a9f3dSchristos 
110734a9f3dSchristos static isc_result_t
111734a9f3dSchristos digest_resinfo(ARGS_DIGEST) {
112734a9f3dSchristos 	isc_region_t r;
113734a9f3dSchristos 
114734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
115734a9f3dSchristos 
116734a9f3dSchristos 	dns_rdata_toregion(rdata, &r);
117734a9f3dSchristos 
118*bcda20f6Schristos 	return (digest)(arg, &r);
119734a9f3dSchristos }
120734a9f3dSchristos 
121734a9f3dSchristos static bool
122734a9f3dSchristos checkowner_resinfo(ARGS_CHECKOWNER) {
123734a9f3dSchristos 	REQUIRE(type == dns_rdatatype_resinfo);
124734a9f3dSchristos 
125734a9f3dSchristos 	UNUSED(name);
126734a9f3dSchristos 	UNUSED(type);
127734a9f3dSchristos 	UNUSED(rdclass);
128734a9f3dSchristos 	UNUSED(wildcard);
129734a9f3dSchristos 
130*bcda20f6Schristos 	return true;
131734a9f3dSchristos }
132734a9f3dSchristos 
133734a9f3dSchristos static bool
134734a9f3dSchristos checknames_resinfo(ARGS_CHECKNAMES) {
135734a9f3dSchristos 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
136734a9f3dSchristos 
137734a9f3dSchristos 	UNUSED(rdata);
138734a9f3dSchristos 	UNUSED(owner);
139734a9f3dSchristos 	UNUSED(bad);
140734a9f3dSchristos 
141*bcda20f6Schristos 	return true;
142734a9f3dSchristos }
143734a9f3dSchristos 
144734a9f3dSchristos static int
145734a9f3dSchristos casecompare_resinfo(ARGS_COMPARE) {
146*bcda20f6Schristos 	return compare_resinfo(rdata1, rdata2);
147734a9f3dSchristos }
148734a9f3dSchristos #endif /* RDATA_GENERIC_RESINFO_261_C */
149