Home | History | Annotate | Line # | Download | only in generic
      1 /*	$NetBSD: dlv_32769.c,v 1.1 2024/02/18 20:57:41 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 /* RFC3658 */
     17 
     18 #ifndef RDATA_GENERIC_DLV_32769_C
     19 #define RDATA_GENERIC_DLV_32769_C
     20 
     21 #define RRTYPE_DLV_ATTRIBUTES 0
     22 
     23 #include <dns/ds.h>
     24 
     25 static isc_result_t
     26 fromtext_dlv(ARGS_FROMTEXT) {
     27 	REQUIRE(type == dns_rdatatype_dlv);
     28 
     29 	return (generic_fromtext_ds(CALL_FROMTEXT));
     30 }
     31 
     32 static isc_result_t
     33 totext_dlv(ARGS_TOTEXT) {
     34 	REQUIRE(rdata != NULL);
     35 	REQUIRE(rdata->type == dns_rdatatype_dlv);
     36 
     37 	return (generic_totext_ds(CALL_TOTEXT));
     38 }
     39 
     40 static isc_result_t
     41 fromwire_dlv(ARGS_FROMWIRE) {
     42 	REQUIRE(type == dns_rdatatype_dlv);
     43 
     44 	return (generic_fromwire_ds(CALL_FROMWIRE));
     45 }
     46 
     47 static isc_result_t
     48 towire_dlv(ARGS_TOWIRE) {
     49 	isc_region_t sr;
     50 
     51 	REQUIRE(rdata->type == dns_rdatatype_dlv);
     52 	REQUIRE(rdata->length != 0);
     53 
     54 	UNUSED(cctx);
     55 
     56 	dns_rdata_toregion(rdata, &sr);
     57 	return (mem_tobuffer(target, sr.base, sr.length));
     58 }
     59 
     60 static int
     61 compare_dlv(ARGS_COMPARE) {
     62 	isc_region_t r1;
     63 	isc_region_t r2;
     64 
     65 	REQUIRE(rdata1->type == rdata2->type);
     66 	REQUIRE(rdata1->rdclass == rdata2->rdclass);
     67 	REQUIRE(rdata1->type == dns_rdatatype_dlv);
     68 	REQUIRE(rdata1->length != 0);
     69 	REQUIRE(rdata2->length != 0);
     70 
     71 	dns_rdata_toregion(rdata1, &r1);
     72 	dns_rdata_toregion(rdata2, &r2);
     73 	return (isc_region_compare(&r1, &r2));
     74 }
     75 
     76 static isc_result_t
     77 fromstruct_dlv(ARGS_FROMSTRUCT) {
     78 	REQUIRE(type == dns_rdatatype_dlv);
     79 
     80 	return (generic_fromstruct_ds(CALL_FROMSTRUCT));
     81 }
     82 
     83 static isc_result_t
     84 tostruct_dlv(ARGS_TOSTRUCT) {
     85 	dns_rdata_dlv_t *dlv = target;
     86 
     87 	REQUIRE(rdata->type == dns_rdatatype_dlv);
     88 	REQUIRE(dlv != NULL);
     89 
     90 	dlv->common.rdclass = rdata->rdclass;
     91 	dlv->common.rdtype = rdata->type;
     92 	ISC_LINK_INIT(&dlv->common, link);
     93 
     94 	return (generic_tostruct_ds(CALL_TOSTRUCT));
     95 }
     96 
     97 static void
     98 freestruct_dlv(ARGS_FREESTRUCT) {
     99 	dns_rdata_dlv_t *dlv = source;
    100 
    101 	REQUIRE(dlv != NULL);
    102 	REQUIRE(dlv->common.rdtype == dns_rdatatype_dlv);
    103 
    104 	if (dlv->mctx == NULL) {
    105 		return;
    106 	}
    107 
    108 	if (dlv->digest != NULL) {
    109 		isc_mem_free(dlv->mctx, dlv->digest);
    110 	}
    111 	dlv->mctx = NULL;
    112 }
    113 
    114 static isc_result_t
    115 additionaldata_dlv(ARGS_ADDLDATA) {
    116 	REQUIRE(rdata->type == dns_rdatatype_dlv);
    117 
    118 	UNUSED(rdata);
    119 	UNUSED(add);
    120 	UNUSED(arg);
    121 
    122 	return (ISC_R_SUCCESS);
    123 }
    124 
    125 static isc_result_t
    126 digest_dlv(ARGS_DIGEST) {
    127 	isc_region_t r;
    128 
    129 	REQUIRE(rdata->type == dns_rdatatype_dlv);
    130 
    131 	dns_rdata_toregion(rdata, &r);
    132 
    133 	return ((digest)(arg, &r));
    134 }
    135 
    136 static bool
    137 checkowner_dlv(ARGS_CHECKOWNER) {
    138 	REQUIRE(type == dns_rdatatype_dlv);
    139 
    140 	UNUSED(name);
    141 	UNUSED(type);
    142 	UNUSED(rdclass);
    143 	UNUSED(wildcard);
    144 
    145 	return (true);
    146 }
    147 
    148 static bool
    149 checknames_dlv(ARGS_CHECKNAMES) {
    150 	REQUIRE(rdata->type == dns_rdatatype_dlv);
    151 
    152 	UNUSED(rdata);
    153 	UNUSED(owner);
    154 	UNUSED(bad);
    155 
    156 	return (true);
    157 }
    158 
    159 static int
    160 casecompare_dlv(ARGS_COMPARE) {
    161 	return (compare_dlv(rdata1, rdata2));
    162 }
    163 
    164 #endif /* RDATA_GENERIC_DLV_32769_C */
    165