Home | History | Annotate | Line # | Download | only in generic
      1 /*	$NetBSD: spf_99.c,v 1.1 2024/02/18 20:57:44 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 #ifndef RDATA_GENERIC_SPF_99_C
     17 #define RDATA_GENERIC_SPF_99_C
     18 
     19 #define RRTYPE_SPF_ATTRIBUTES (0)
     20 
     21 static isc_result_t
     22 fromtext_spf(ARGS_FROMTEXT) {
     23 	REQUIRE(type == dns_rdatatype_spf);
     24 
     25 	return (generic_fromtext_txt(CALL_FROMTEXT));
     26 }
     27 
     28 static isc_result_t
     29 totext_spf(ARGS_TOTEXT) {
     30 	REQUIRE(rdata != NULL);
     31 	REQUIRE(rdata->type == dns_rdatatype_spf);
     32 
     33 	return (generic_totext_txt(CALL_TOTEXT));
     34 }
     35 
     36 static isc_result_t
     37 fromwire_spf(ARGS_FROMWIRE) {
     38 	REQUIRE(type == dns_rdatatype_spf);
     39 
     40 	return (generic_fromwire_txt(CALL_FROMWIRE));
     41 }
     42 
     43 static isc_result_t
     44 towire_spf(ARGS_TOWIRE) {
     45 	REQUIRE(rdata->type == dns_rdatatype_spf);
     46 
     47 	UNUSED(cctx);
     48 
     49 	return (mem_tobuffer(target, rdata->data, rdata->length));
     50 }
     51 
     52 static int
     53 compare_spf(ARGS_COMPARE) {
     54 	isc_region_t r1;
     55 	isc_region_t r2;
     56 
     57 	REQUIRE(rdata1->type == rdata2->type);
     58 	REQUIRE(rdata1->rdclass == rdata2->rdclass);
     59 	REQUIRE(rdata1->type == dns_rdatatype_spf);
     60 
     61 	dns_rdata_toregion(rdata1, &r1);
     62 	dns_rdata_toregion(rdata2, &r2);
     63 	return (isc_region_compare(&r1, &r2));
     64 }
     65 
     66 static isc_result_t
     67 fromstruct_spf(ARGS_FROMSTRUCT) {
     68 	REQUIRE(type == dns_rdatatype_spf);
     69 
     70 	return (generic_fromstruct_txt(CALL_FROMSTRUCT));
     71 }
     72 
     73 static isc_result_t
     74 tostruct_spf(ARGS_TOSTRUCT) {
     75 	dns_rdata_spf_t *spf = target;
     76 
     77 	REQUIRE(spf != NULL);
     78 	REQUIRE(rdata != NULL);
     79 	REQUIRE(rdata->type == dns_rdatatype_spf);
     80 
     81 	spf->common.rdclass = rdata->rdclass;
     82 	spf->common.rdtype = rdata->type;
     83 	ISC_LINK_INIT(&spf->common, link);
     84 
     85 	return (generic_tostruct_txt(CALL_TOSTRUCT));
     86 }
     87 
     88 static void
     89 freestruct_spf(ARGS_FREESTRUCT) {
     90 	dns_rdata_spf_t *spf = source;
     91 
     92 	REQUIRE(spf != NULL);
     93 	REQUIRE(spf->common.rdtype == dns_rdatatype_spf);
     94 
     95 	generic_freestruct_txt(source);
     96 }
     97 
     98 static isc_result_t
     99 additionaldata_spf(ARGS_ADDLDATA) {
    100 	REQUIRE(rdata->type == dns_rdatatype_spf);
    101 
    102 	UNUSED(rdata);
    103 	UNUSED(add);
    104 	UNUSED(arg);
    105 
    106 	return (ISC_R_SUCCESS);
    107 }
    108 
    109 static isc_result_t
    110 digest_spf(ARGS_DIGEST) {
    111 	isc_region_t r;
    112 
    113 	REQUIRE(rdata->type == dns_rdatatype_spf);
    114 
    115 	dns_rdata_toregion(rdata, &r);
    116 
    117 	return ((digest)(arg, &r));
    118 }
    119 
    120 static bool
    121 checkowner_spf(ARGS_CHECKOWNER) {
    122 	REQUIRE(type == dns_rdatatype_spf);
    123 
    124 	UNUSED(name);
    125 	UNUSED(type);
    126 	UNUSED(rdclass);
    127 	UNUSED(wildcard);
    128 
    129 	return (true);
    130 }
    131 
    132 static bool
    133 checknames_spf(ARGS_CHECKNAMES) {
    134 	REQUIRE(rdata->type == dns_rdatatype_spf);
    135 
    136 	UNUSED(rdata);
    137 	UNUSED(owner);
    138 	UNUSED(bad);
    139 
    140 	return (true);
    141 }
    142 
    143 static int
    144 casecompare_spf(ARGS_COMPARE) {
    145 	return (compare_spf(rdata1, rdata2));
    146 }
    147 #endif /* RDATA_GENERIC_SPF_99_C */
    148