1 /*
2  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3  *
4  * SPDX-License-Identifier: MPL-2.0
5  *
6  * This Source Code Form is subject to the terms of the Mozilla Public
7  * License, v. 2.0. If a copy of the MPL was not distributed with this
8  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
9  *
10  * See the COPYRIGHT file distributed with this work for additional
11  * information regarding copyright ownership.
12  */
13 
14 #ifndef RDATA_GENERIC_AVC_258_C
15 #define RDATA_GENERIC_AVC_258_C
16 
17 #define RRTYPE_AVC_ATTRIBUTES (0)
18 
19 static inline isc_result_t
fromtext_avc(ARGS_FROMTEXT)20 fromtext_avc(ARGS_FROMTEXT) {
21 	REQUIRE(type == dns_rdatatype_avc);
22 
23 	return (generic_fromtext_txt(CALL_FROMTEXT));
24 }
25 
26 static inline isc_result_t
totext_avc(ARGS_TOTEXT)27 totext_avc(ARGS_TOTEXT) {
28 	REQUIRE(rdata != NULL);
29 	REQUIRE(rdata->type == dns_rdatatype_avc);
30 
31 	return (generic_totext_txt(CALL_TOTEXT));
32 }
33 
34 static inline isc_result_t
fromwire_avc(ARGS_FROMWIRE)35 fromwire_avc(ARGS_FROMWIRE) {
36 	REQUIRE(type == dns_rdatatype_avc);
37 
38 	return (generic_fromwire_txt(CALL_FROMWIRE));
39 }
40 
41 static inline isc_result_t
towire_avc(ARGS_TOWIRE)42 towire_avc(ARGS_TOWIRE) {
43 	REQUIRE(rdata->type == dns_rdatatype_avc);
44 
45 	UNUSED(cctx);
46 
47 	return (mem_tobuffer(target, rdata->data, rdata->length));
48 }
49 
50 static inline int
compare_avc(ARGS_COMPARE)51 compare_avc(ARGS_COMPARE) {
52 	isc_region_t r1;
53 	isc_region_t r2;
54 
55 	REQUIRE(rdata1->type == rdata2->type);
56 	REQUIRE(rdata1->rdclass == rdata2->rdclass);
57 	REQUIRE(rdata1->type == dns_rdatatype_avc);
58 
59 	dns_rdata_toregion(rdata1, &r1);
60 	dns_rdata_toregion(rdata2, &r2);
61 	return (isc_region_compare(&r1, &r2));
62 }
63 
64 static inline isc_result_t
fromstruct_avc(ARGS_FROMSTRUCT)65 fromstruct_avc(ARGS_FROMSTRUCT) {
66 	REQUIRE(type == dns_rdatatype_avc);
67 
68 	return (generic_fromstruct_txt(CALL_FROMSTRUCT));
69 }
70 
71 static inline isc_result_t
tostruct_avc(ARGS_TOSTRUCT)72 tostruct_avc(ARGS_TOSTRUCT) {
73 	dns_rdata_avc_t *avc = target;
74 
75 	REQUIRE(rdata->type == dns_rdatatype_avc);
76 	REQUIRE(avc != NULL);
77 
78 	avc->common.rdclass = rdata->rdclass;
79 	avc->common.rdtype = rdata->type;
80 	ISC_LINK_INIT(&avc->common, link);
81 
82 	return (generic_tostruct_txt(CALL_TOSTRUCT));
83 }
84 
85 static inline void
freestruct_avc(ARGS_FREESTRUCT)86 freestruct_avc(ARGS_FREESTRUCT) {
87 	dns_rdata_avc_t *avc = source;
88 
89 	REQUIRE(avc != NULL);
90 	REQUIRE(avc->common.rdtype == dns_rdatatype_avc);
91 
92 	generic_freestruct_txt(source);
93 }
94 
95 static inline isc_result_t
additionaldata_avc(ARGS_ADDLDATA)96 additionaldata_avc(ARGS_ADDLDATA) {
97 	REQUIRE(rdata->type == dns_rdatatype_avc);
98 
99 	UNUSED(rdata);
100 	UNUSED(add);
101 	UNUSED(arg);
102 
103 	return (ISC_R_SUCCESS);
104 }
105 
106 static inline isc_result_t
digest_avc(ARGS_DIGEST)107 digest_avc(ARGS_DIGEST) {
108 	isc_region_t r;
109 
110 	REQUIRE(rdata->type == dns_rdatatype_avc);
111 
112 	dns_rdata_toregion(rdata, &r);
113 
114 	return ((digest)(arg, &r));
115 }
116 
117 static inline bool
checkowner_avc(ARGS_CHECKOWNER)118 checkowner_avc(ARGS_CHECKOWNER) {
119 	REQUIRE(type == dns_rdatatype_avc);
120 
121 	UNUSED(name);
122 	UNUSED(type);
123 	UNUSED(rdclass);
124 	UNUSED(wildcard);
125 
126 	return (true);
127 }
128 
129 static inline bool
checknames_avc(ARGS_CHECKNAMES)130 checknames_avc(ARGS_CHECKNAMES) {
131 	REQUIRE(rdata->type == dns_rdatatype_avc);
132 
133 	UNUSED(rdata);
134 	UNUSED(owner);
135 	UNUSED(bad);
136 
137 	return (true);
138 }
139 
140 static inline int
casecompare_avc(ARGS_COMPARE)141 casecompare_avc(ARGS_COMPARE) {
142 	return (compare_avc(rdata1, rdata2));
143 }
144 #endif /* RDATA_GENERIC_AVC_258_C */
145