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