/* void nsec_find_interval_and_wild(zdb_zone *zone, const dnsname_vector *name_vector, zdb_rr_label **label, u8 *dname_out, zdb_rr_label **wild_label, u8 *wild_dname_out) { u8 dname_inverted[MAX_DOMAIN_LENGTH + 2]; s32 len = dnslabel_stack_to_dnsname(name_vector->labels, name_vector->size, dname_inverted); nsec_node *node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); nsec_inverse_name(dname_out, node->inverse_relative_name); dname_inverted[len-1] = (u8)1; dname_inverted[len+0] = (u8)'*'; dname_inverted[len+1] = (u8)0; nsec_node *wild_node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); if(wild_node != node) { nsec_inverse_name(wild_dname_out, wild_node->inverse_relative_name); } *label = node->label; *wild_label = wild_node->label; } */ void nsec_name_error(const zdb_zone* zone, const dnsname_vector *name, s32 closest_index, u8* out_encloser_nsec_name, zdb_rr_label** out_encloser_nsec_label, u8* out_wild_encloser_nsec_name, zdb_rr_label** out_wildencloser_nsec_label ) { u8 dname_inverted[MAX_DOMAIN_LENGTH + 2]; dnslabel_stack_to_dnsname(name->labels, name->size, dname_inverted); nsec_node *node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); nsec_inverse_name(out_encloser_nsec_name, node->inverse_relative_name); dnslabel_stack_to_dnsname(&name->labels[closest_index], name->size - closest_index, dname_inverted); nsec_node *wild_node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); if(wild_node != node) { nsec_inverse_name(out_wild_encloser_nsec_name, wild_node->inverse_relative_name); } *out_encloser_nsec_label = node->label; *out_wildencloser_nsec_label = wild_node->label; }
zdb_rr_label * nsec_find_interval(const zdb_zone *zone, const dnsname_vector *name_vector, u8 *dname_out) { u8 dname_inverted[MAX_DOMAIN_LENGTH]; dnslabel_stack_to_dnsname(name_vector->labels, name_vector->size, dname_inverted); nsec_node *node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); nsec_inverse_name(dname_out, node->inverse_relative_name); return node->label; }
* Find the label that has got the right NSEC interval for "nextname" * * @param zone * @param name_vector * @param dname_out * @return */ zdb_rr_label * nsec_find_interval(const zdb_zone *zone, const dnsname_vector *name_vector, u8 **out_dname_p, u8 * restrict * pool) { u8 dname_inverted[MAX_DOMAIN_LENGTH]; dnslabel_stack_to_dnsname(name_vector->labels, name_vector->size, dname_inverted); nsec_node *node = nsec_avl_find_interval_start(&zone->nsec.nsec, dname_inverted); u8 *out_dname = *pool; *out_dname_p = out_dname; u32 out_dname_len = nsec_inverse_name(out_dname, node->inverse_relative_name); *pool += ALIGN16(out_dname_len); return node->label; } void nsec_name_error(const zdb_zone* zone, const dnsname_vector *name, s32 closest_index, u8 * restrict * pool, u8 **out_encloser_nsec_name_p, zdb_rr_label **out_encloser_nsec_label, u8 **out_wild_encloser_nsec_name_p,