static inline isc_result_t tostruct_nsec3param(ARGS_TOSTRUCT) { isc_region_t region; dns_rdata_nsec3param_t *nsec3param = target; REQUIRE(rdata->type == dns_rdatatype_nsec3param); REQUIRE(target != NULL); REQUIRE(rdata->length != 0); nsec3param->common.rdclass = rdata->rdclass; nsec3param->common.rdtype = rdata->type; ISC_LINK_INIT(&nsec3param->common, link); region.base = rdata->data; region.length = rdata->length; nsec3param->hash = uint8_consume_fromregion(®ion); nsec3param->flags = uint8_consume_fromregion(®ion); nsec3param->iterations = uint16_consume_fromregion(®ion); nsec3param->salt_length = uint8_consume_fromregion(®ion); nsec3param->salt = mem_maybedup(mctx, region.base, nsec3param->salt_length); if (nsec3param->salt == NULL) return (ISC_R_NOMEMORY); isc_region_consume(®ion, nsec3param->salt_length); nsec3param->mctx = mctx; return (ISC_R_SUCCESS); }
static inline isc_result_t totext_caa(ARGS_TOTEXT) { isc_region_t region; isc_uint8_t flags; char buf[256]; UNUSED(tctx); REQUIRE(rdata->type == 257); REQUIRE(rdata->length >= 3U); REQUIRE(rdata->data != NULL); dns_rdata_toregion(rdata, ®ion); /* * Flags */ flags = uint8_consume_fromregion(®ion); sprintf(buf, "%u ", flags); RETERR(str_totext(buf, target)); /* * Tag */ RETERR(txt_totext(®ion, ISC_FALSE, target)); RETERR(str_totext(" ", target)); /* * Value */ RETERR(multitxt_totext(®ion, target)); return (ISC_R_SUCCESS); }