1*00b67f09SDavid van Moolenbroek /* $NetBSD: proforma.c,v 1.4 2014/12/10 04:37:59 christos Exp $ */ 2*00b67f09SDavid van Moolenbroek 3*00b67f09SDavid van Moolenbroek /* 4*00b67f09SDavid van Moolenbroek * Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") 5*00b67f09SDavid van Moolenbroek * Copyright (C) 1998-2002 Internet Software Consortium. 6*00b67f09SDavid van Moolenbroek * 7*00b67f09SDavid van Moolenbroek * Permission to use, copy, modify, and/or distribute this software for any 8*00b67f09SDavid van Moolenbroek * purpose with or without fee is hereby granted, provided that the above 9*00b67f09SDavid van Moolenbroek * copyright notice and this permission notice appear in all copies. 10*00b67f09SDavid van Moolenbroek * 11*00b67f09SDavid van Moolenbroek * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 12*00b67f09SDavid van Moolenbroek * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 13*00b67f09SDavid van Moolenbroek * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 14*00b67f09SDavid van Moolenbroek * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 15*00b67f09SDavid van Moolenbroek * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 16*00b67f09SDavid van Moolenbroek * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*00b67f09SDavid van Moolenbroek * PERFORMANCE OF THIS SOFTWARE. 18*00b67f09SDavid van Moolenbroek */ 19*00b67f09SDavid van Moolenbroek 20*00b67f09SDavid van Moolenbroek /* Id: proforma.c,v 1.38 2009/12/04 22:06:37 tbox Exp */ 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van Moolenbroek #ifndef RDATA_GENERIC_#_#_C 23*00b67f09SDavid van Moolenbroek #define RDATA_GENERIC_#_#_C 24*00b67f09SDavid van Moolenbroek 25*00b67f09SDavid van Moolenbroek #define RRTYPE_#_ATTRIBUTES (0) 26*00b67f09SDavid van Moolenbroek 27*00b67f09SDavid van Moolenbroek static inline isc_result_t 28*00b67f09SDavid van Moolenbroek fromtext_#(ARGS_FROMTEXT) { 29*00b67f09SDavid van Moolenbroek isc_token_t token; 30*00b67f09SDavid van Moolenbroek 31*00b67f09SDavid van Moolenbroek REQUIRE(type == #); 32*00b67f09SDavid van Moolenbroek REQUIRE(rdclass == #); 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van Moolenbroek RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, 35*00b67f09SDavid van Moolenbroek ISC_FALSE)); 36*00b67f09SDavid van Moolenbroek 37*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 38*00b67f09SDavid van Moolenbroek } 39*00b67f09SDavid van Moolenbroek 40*00b67f09SDavid van Moolenbroek static inline isc_result_t 41*00b67f09SDavid van Moolenbroek totext_#(ARGS_TOTEXT) { 42*00b67f09SDavid van Moolenbroek 43*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 44*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 45*00b67f09SDavid van Moolenbroek REQUIRE(rdata->length != 0); /* XXX */ 46*00b67f09SDavid van Moolenbroek 47*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 48*00b67f09SDavid van Moolenbroek } 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroek static inline isc_result_t 51*00b67f09SDavid van Moolenbroek fromwire_#(ARGS_FROMWIRE) { 52*00b67f09SDavid van Moolenbroek 53*00b67f09SDavid van Moolenbroek REQUIRE(type == #); 54*00b67f09SDavid van Moolenbroek REQUIRE(rdclass == #); 55*00b67f09SDavid van Moolenbroek 56*00b67f09SDavid van Moolenbroek /* NONE or GLOBAL14 */ 57*00b67f09SDavid van Moolenbroek dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE); 58*00b67f09SDavid van Moolenbroek 59*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 60*00b67f09SDavid van Moolenbroek } 61*00b67f09SDavid van Moolenbroek 62*00b67f09SDavid van Moolenbroek static inline isc_result_t 63*00b67f09SDavid van Moolenbroek towire_#(ARGS_TOWIRE) { 64*00b67f09SDavid van Moolenbroek 65*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 66*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 67*00b67f09SDavid van Moolenbroek REQUIRE(rdata->length != 0); /* XXX */ 68*00b67f09SDavid van Moolenbroek 69*00b67f09SDavid van Moolenbroek /* NONE or GLOBAL14 */ 70*00b67f09SDavid van Moolenbroek dns_compress_setmethods(cctx, DNS_COMPRESS_NONE); 71*00b67f09SDavid van Moolenbroek 72*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 73*00b67f09SDavid van Moolenbroek } 74*00b67f09SDavid van Moolenbroek 75*00b67f09SDavid van Moolenbroek static inline int 76*00b67f09SDavid van Moolenbroek compare_#(ARGS_COMPARE) { 77*00b67f09SDavid van Moolenbroek isc_region_t r1; 78*00b67f09SDavid van Moolenbroek isc_region_t r2; 79*00b67f09SDavid van Moolenbroek 80*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->type == rdata2->type); 81*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->rdclass == rdata2->rdclass); 82*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->type == #); 83*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->rdclass == #); 84*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->length != 0); /* XXX */ 85*00b67f09SDavid van Moolenbroek REQUIRE(rdata2->length != 0); /* XXX */ 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van Moolenbroek dns_rdata_toregion(rdata1, &r1); 88*00b67f09SDavid van Moolenbroek dns_rdata_toregion(rdata2, &r2); 89*00b67f09SDavid van Moolenbroek return (isc_region_compare(&r1, &r2)); 90*00b67f09SDavid van Moolenbroek } 91*00b67f09SDavid van Moolenbroek 92*00b67f09SDavid van Moolenbroek static inline isc_result_t 93*00b67f09SDavid van Moolenbroek fromstruct_#(ARGS_FROMSTRUCT) { 94*00b67f09SDavid van Moolenbroek dns_rdata_#_t *# = source; 95*00b67f09SDavid van Moolenbroek 96*00b67f09SDavid van Moolenbroek REQUIRE(type == #); 97*00b67f09SDavid van Moolenbroek REQUIRE(rdclass == #); 98*00b67f09SDavid van Moolenbroek REQUIRE(source != NULL); 99*00b67f09SDavid van Moolenbroek REQUIRE(#->common.rdtype == type); 100*00b67f09SDavid van Moolenbroek REQUIRE(#->common.rdclass == rdclass); 101*00b67f09SDavid van Moolenbroek 102*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 103*00b67f09SDavid van Moolenbroek } 104*00b67f09SDavid van Moolenbroek 105*00b67f09SDavid van Moolenbroek static inline isc_result_t 106*00b67f09SDavid van Moolenbroek tostruct_#(ARGS_TOSTRUCT) { 107*00b67f09SDavid van Moolenbroek 108*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 109*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 110*00b67f09SDavid van Moolenbroek REQUIRE(rdata->length != 0); /* XXX */ 111*00b67f09SDavid van Moolenbroek 112*00b67f09SDavid van Moolenbroek return (ISC_R_NOTIMPLEMENTED); 113*00b67f09SDavid van Moolenbroek } 114*00b67f09SDavid van Moolenbroek 115*00b67f09SDavid van Moolenbroek static inline void 116*00b67f09SDavid van Moolenbroek freestruct_#(ARGS_FREESTRUCT) { 117*00b67f09SDavid van Moolenbroek dns_rdata_#_t *# = source; 118*00b67f09SDavid van Moolenbroek 119*00b67f09SDavid van Moolenbroek REQUIRE(source != NULL); 120*00b67f09SDavid van Moolenbroek REQUIRE(#->common.rdtype == #); 121*00b67f09SDavid van Moolenbroek REQUIRE(#->common.rdclass == #); 122*00b67f09SDavid van Moolenbroek 123*00b67f09SDavid van Moolenbroek } 124*00b67f09SDavid van Moolenbroek 125*00b67f09SDavid van Moolenbroek static inline isc_result_t 126*00b67f09SDavid van Moolenbroek additionaldata_#(ARGS_ADDLDATA) { 127*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 128*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 129*00b67f09SDavid van Moolenbroek 130*00b67f09SDavid van Moolenbroek (void)add; 131*00b67f09SDavid van Moolenbroek (void)arg; 132*00b67f09SDavid van Moolenbroek 133*00b67f09SDavid van Moolenbroek return (ISC_R_SUCCESS); 134*00b67f09SDavid van Moolenbroek } 135*00b67f09SDavid van Moolenbroek 136*00b67f09SDavid van Moolenbroek static inline isc_result_t 137*00b67f09SDavid van Moolenbroek digest_#(ARGS_DIGEST) { 138*00b67f09SDavid van Moolenbroek isc_region_t r; 139*00b67f09SDavid van Moolenbroek 140*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 141*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 142*00b67f09SDavid van Moolenbroek 143*00b67f09SDavid van Moolenbroek dns_rdata_toregion(rdata, &r); 144*00b67f09SDavid van Moolenbroek 145*00b67f09SDavid van Moolenbroek return ((digest)(arg, &r)); 146*00b67f09SDavid van Moolenbroek } 147*00b67f09SDavid van Moolenbroek 148*00b67f09SDavid van Moolenbroek static inline isc_boolean_t 149*00b67f09SDavid van Moolenbroek checkowner_#(ARGS_CHECKOWNER) { 150*00b67f09SDavid van Moolenbroek 151*00b67f09SDavid van Moolenbroek REQUIRE(type == #); 152*00b67f09SDavid van Moolenbroek REQUIRE(rdclass == #); 153*00b67f09SDavid van Moolenbroek 154*00b67f09SDavid van Moolenbroek UNUSED(name); 155*00b67f09SDavid van Moolenbroek UNUSED(type); 156*00b67f09SDavid van Moolenbroek UNUSED(rdclass); 157*00b67f09SDavid van Moolenbroek UNUSED(wildcard); 158*00b67f09SDavid van Moolenbroek 159*00b67f09SDavid van Moolenbroek return (ISC_TRUE); 160*00b67f09SDavid van Moolenbroek } 161*00b67f09SDavid van Moolenbroek 162*00b67f09SDavid van Moolenbroek static inline isc_boolean_t 163*00b67f09SDavid van Moolenbroek checknames_#(ARGS_CHECKNAMES) { 164*00b67f09SDavid van Moolenbroek 165*00b67f09SDavid van Moolenbroek REQUIRE(rdata->type == #); 166*00b67f09SDavid van Moolenbroek REQUIRE(rdata->rdclass == #); 167*00b67f09SDavid van Moolenbroek 168*00b67f09SDavid van Moolenbroek UNUSED(rdata); 169*00b67f09SDavid van Moolenbroek UNUSED(owner); 170*00b67f09SDavid van Moolenbroek UNUSED(bad); 171*00b67f09SDavid van Moolenbroek 172*00b67f09SDavid van Moolenbroek return (ISC_TRUE); 173*00b67f09SDavid van Moolenbroek } 174*00b67f09SDavid van Moolenbroek 175*00b67f09SDavid van Moolenbroek static inline int 176*00b67f09SDavid van Moolenbroek casecompare_#(ARGS_COMPARE) { 177*00b67f09SDavid van Moolenbroek isc_region_t r1; 178*00b67f09SDavid van Moolenbroek isc_region_t r2; 179*00b67f09SDavid van Moolenbroek 180*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->type == rdata2->type); 181*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->rdclass == rdata2->rdclass); 182*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->type == #); 183*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->rdclass == #); 184*00b67f09SDavid van Moolenbroek REQUIRE(rdata1->length != 0); /* XXX */ 185*00b67f09SDavid van Moolenbroek REQUIRE(rdata2->length != 0); /* XXX */ 186*00b67f09SDavid van Moolenbroek 187*00b67f09SDavid van Moolenbroek dns_rdata_toregion(rdata1, &r1); 188*00b67f09SDavid van Moolenbroek dns_rdata_toregion(rdata2, &r2); 189*00b67f09SDavid van Moolenbroek return (isc_region_compare(&r1, &r2)); 190*00b67f09SDavid van Moolenbroek } 191*00b67f09SDavid van Moolenbroek 192*00b67f09SDavid van Moolenbroek #endif /* RDATA_GENERIC_#_#_C */ 193