1 /*
2  * Copyright (C) 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 #ifndef RDATA_GENERIC_NINFO_56_C
18 #define RDATA_GENERIC_NINFO_56_C
19 
20 #define RRTYPE_NINFO_ATTRIBUTES (0)
21 
22 static inline isc_result_t
fromtext_ninfo(ARGS_FROMTEXT)23 fromtext_ninfo(ARGS_FROMTEXT) {
24 
25 	REQUIRE(type == dns_rdatatype_ninfo);
26 
27 	UNUSED(type);
28 	UNUSED(rdclass);
29 	UNUSED(origin);
30 	UNUSED(options);
31 	UNUSED(callbacks);
32 
33 	return (generic_fromtext_txt(rdclass, type, lexer, origin, options,
34 				     target, callbacks));
35 }
36 
37 static inline isc_result_t
totext_ninfo(ARGS_TOTEXT)38 totext_ninfo(ARGS_TOTEXT) {
39 
40 	UNUSED(tctx);
41 
42 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
43 
44 	return (generic_totext_txt(rdata, tctx, target));
45 }
46 
47 static inline isc_result_t
fromwire_ninfo(ARGS_FROMWIRE)48 fromwire_ninfo(ARGS_FROMWIRE) {
49 
50 	REQUIRE(type == dns_rdatatype_ninfo);
51 
52 	UNUSED(type);
53 	UNUSED(dctx);
54 	UNUSED(rdclass);
55 	UNUSED(options);
56 
57 	return (generic_fromwire_txt(rdclass, type, source, dctx, options,
58 				     target));
59 }
60 
61 static inline isc_result_t
towire_ninfo(ARGS_TOWIRE)62 towire_ninfo(ARGS_TOWIRE) {
63 
64 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
65 
66 	UNUSED(cctx);
67 
68 	return (mem_tobuffer(target, rdata->data, rdata->length));
69 }
70 
71 static inline int
compare_ninfo(ARGS_COMPARE)72 compare_ninfo(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_ninfo);
79 
80 	dns_rdata_toregion(rdata1, &r1);
81 	dns_rdata_toregion(rdata2, &r2);
82 	return (isc_region_compare(&r1, &r2));
83 }
84 
85 static inline isc_result_t
fromstruct_ninfo(ARGS_FROMSTRUCT)86 fromstruct_ninfo(ARGS_FROMSTRUCT) {
87 
88 	REQUIRE(type == dns_rdatatype_ninfo);
89 
90 	return (generic_fromstruct_txt(rdclass, type, source, target));
91 }
92 
93 static inline isc_result_t
tostruct_ninfo(ARGS_TOSTRUCT)94 tostruct_ninfo(ARGS_TOSTRUCT) {
95 	dns_rdata_ninfo_t *txt = target;
96 
97 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
98 
99 	txt->common.rdclass = rdata->rdclass;
100 	txt->common.rdtype = rdata->type;
101 	ISC_LINK_INIT(&txt->common, link);
102 
103 	return (generic_tostruct_txt(rdata, target, mctx));
104 }
105 
106 static inline void
freestruct_ninfo(ARGS_FREESTRUCT)107 freestruct_ninfo(ARGS_FREESTRUCT) {
108 	dns_rdata_ninfo_t *ninfo = source;
109 
110 	REQUIRE(source != NULL);
111 	REQUIRE(ninfo->common.rdtype == dns_rdatatype_ninfo);
112 
113 	generic_freestruct_txt(source);
114 }
115 
116 static inline isc_result_t
additionaldata_ninfo(ARGS_ADDLDATA)117 additionaldata_ninfo(ARGS_ADDLDATA) {
118 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
119 
120 	UNUSED(rdata);
121 	UNUSED(add);
122 	UNUSED(arg);
123 
124 	return (ISC_R_SUCCESS);
125 }
126 
127 static inline isc_result_t
digest_ninfo(ARGS_DIGEST)128 digest_ninfo(ARGS_DIGEST) {
129 	isc_region_t r;
130 
131 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
132 
133 	dns_rdata_toregion(rdata, &r);
134 
135 	return ((digest)(arg, &r));
136 }
137 
138 static inline isc_boolean_t
checkowner_ninfo(ARGS_CHECKOWNER)139 checkowner_ninfo(ARGS_CHECKOWNER) {
140 
141 	REQUIRE(type == dns_rdatatype_ninfo);
142 
143 	UNUSED(name);
144 	UNUSED(type);
145 	UNUSED(rdclass);
146 	UNUSED(wildcard);
147 
148 	return (ISC_TRUE);
149 }
150 
151 static inline isc_boolean_t
checknames_ninfo(ARGS_CHECKNAMES)152 checknames_ninfo(ARGS_CHECKNAMES) {
153 
154 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
155 
156 	UNUSED(rdata);
157 	UNUSED(owner);
158 	UNUSED(bad);
159 
160 	return (ISC_TRUE);
161 }
162 
163 static inline isc_result_t
casecompare_ninfo(ARGS_COMPARE)164 casecompare_ninfo(ARGS_COMPARE) {
165 	return (compare_ninfo(rdata1, rdata2));
166 }
167 
168 isc_result_t
dns_rdata_ninfo_first(dns_rdata_ninfo_t * ninfo)169 dns_rdata_ninfo_first(dns_rdata_ninfo_t *ninfo) {
170 
171 	REQUIRE(ninfo != NULL);
172 	REQUIRE(ninfo->common.rdtype == dns_rdatatype_ninfo);
173 
174 	return (generic_txt_first(ninfo));
175 }
176 
177 isc_result_t
dns_rdata_ninfo_next(dns_rdata_ninfo_t * ninfo)178 dns_rdata_ninfo_next(dns_rdata_ninfo_t *ninfo) {
179 
180 	REQUIRE(ninfo != NULL);
181 	REQUIRE(ninfo->common.rdtype == dns_rdatatype_ninfo);
182 
183 	return (generic_txt_next(ninfo));
184 }
185 
186 isc_result_t
dns_rdata_ninfo_current(dns_rdata_ninfo_t * ninfo,dns_rdata_ninfo_string_t * string)187 dns_rdata_ninfo_current(dns_rdata_ninfo_t *ninfo,
188 			dns_rdata_ninfo_string_t *string)
189 {
190 
191 	REQUIRE(ninfo != NULL);
192 	REQUIRE(ninfo->common.rdtype == dns_rdatatype_ninfo);
193 
194 	return (generic_txt_current(ninfo, string));
195 }
196 #endif	/* RDATA_GENERIC_NINFO_56_C */
197