Esempio n. 1
0
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(&region);
	nsec3param->flags = uint8_consume_fromregion(&region);
	nsec3param->iterations = uint16_consume_fromregion(&region);

	nsec3param->salt_length = uint8_consume_fromregion(&region);
	nsec3param->salt = mem_maybedup(mctx, region.base,
					nsec3param->salt_length);
	if (nsec3param->salt == NULL)
		return (ISC_R_NOMEMORY);
	isc_region_consume(&region, nsec3param->salt_length);

	nsec3param->mctx = mctx;
	return (ISC_R_SUCCESS);
}
Esempio n. 2
0
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, &region);

	/*
	 * Flags
	 */
	flags = uint8_consume_fromregion(&region);
	sprintf(buf, "%u ", flags);
	RETERR(str_totext(buf, target));

	/*
	 * Tag
	 */
	RETERR(txt_totext(&region, ISC_FALSE, target));
	RETERR(str_totext(" ", target));

	/*
	 * Value
	 */
	RETERR(multitxt_totext(&region, target));
	return (ISC_R_SUCCESS);
}