Ejemplo n.º 1
0
/*
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
 * 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,