dnssec_zone.c File Reference

Go to the source code of this file.

Defines

#define FASTER_DNSSEC_ZONE_NEW_FRM_FP   1

Functions

ldns_dnssec_rrsldns_dnssec_rrs_new ()
 Creates a new entry for 1 pointer to an rr and 1 pointer to the next rrs.
INLINE void ldns_dnssec_rrs_free_internal (ldns_dnssec_rrs *rrs, int deep)
void ldns_dnssec_rrs_free (ldns_dnssec_rrs *rrs)
 Frees the list of rrs, but *not* the individual ldns_rr records contained in the list.
void ldns_dnssec_rrs_deep_free (ldns_dnssec_rrs *rrs)
 Frees the list of rrs, and the individual ldns_rr records contained in the list.
ldns_status ldns_dnssec_rrs_add_rr (ldns_dnssec_rrs *rrs, ldns_rr *rr)
 Adds an RR to the list of RRs.
void ldns_dnssec_rrs_print_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_rrs *rrs)
 Prints the given rrs to the file descriptor.
void ldns_dnssec_rrs_print (FILE *out, ldns_dnssec_rrs *rrs)
 Prints the given rrs to the file descriptor.
ldns_dnssec_rrsetsldns_dnssec_rrsets_new ()
 Creates a new list (entry) of RRsets.
INLINE void ldns_dnssec_rrsets_free_internal (ldns_dnssec_rrsets *rrsets, int deep)
void ldns_dnssec_rrsets_free (ldns_dnssec_rrsets *rrsets)
 Frees the list of rrsets and their rrs, but *not* the ldns_rr records in the sets.
void ldns_dnssec_rrsets_deep_free (ldns_dnssec_rrsets *rrsets)
 Frees the list of rrsets and their rrs, and the ldns_rr records in the sets.
ldns_rr_type ldns_dnssec_rrsets_type (ldns_dnssec_rrsets *rrsets)
 Returns the rr type of the rrset (that is head of the given list).
ldns_status ldns_dnssec_rrsets_set_type (ldns_dnssec_rrsets *rrsets, ldns_rr_type type)
 Sets the RR type of the rrset (that is head of the given list).
ldns_dnssec_rrsetsldns_dnssec_rrsets_new_frm_rr (ldns_rr *rr)
ldns_status ldns_dnssec_rrsets_add_rr (ldns_dnssec_rrsets *rrsets, ldns_rr *rr)
 Add an ldns_rr to the corresponding RRset in the given list of RRsets.
void ldns_dnssec_rrsets_print_soa_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_rrsets *rrsets, bool follow, bool show_soa)
void ldns_dnssec_rrsets_print_soa (FILE *out, ldns_dnssec_rrsets *rrsets, bool follow, bool show_soa)
void ldns_dnssec_rrsets_print_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_rrsets *rrsets, bool follow)
 Print the given list of rrsets to the fiven file descriptor.
void ldns_dnssec_rrsets_print (FILE *out, ldns_dnssec_rrsets *rrsets, bool follow)
 Print the given list of rrsets to the fiven file descriptor.
ldns_dnssec_nameldns_dnssec_name_new ()
 Create a new data structure for a dnssec name.
ldns_dnssec_nameldns_dnssec_name_new_frm_rr (ldns_rr *rr)
 Create a new data structure for a dnssec name for the given RR.
INLINE void ldns_dnssec_name_free_internal (ldns_dnssec_name *name, int deep)
void ldns_dnssec_name_free (ldns_dnssec_name *name)
 Frees the name structure and its rrs and rrsets.
void ldns_dnssec_name_deep_free (ldns_dnssec_name *name)
 Frees the name structure and its rrs and rrsets.
ldns_rdfldns_dnssec_name_name (ldns_dnssec_name *name)
 Returns the domain name of the given dnssec_name structure.
bool ldns_dnssec_name_is_glue (ldns_dnssec_name *name)
 Returns if dnssec_name structure is marked as glue.
void ldns_dnssec_name_set_name (ldns_dnssec_name *rrset, ldns_rdf *dname)
 Sets the domain name of the given dnssec_name structure.
ldns_rrldns_dnssec_name_nsec (ldns_dnssec_name *rrset)
void ldns_dnssec_name_set_nsec (ldns_dnssec_name *rrset, ldns_rr *nsec)
 Sets the NSEC(3) RR of the given dnssec_name structure.
int ldns_dnssec_name_cmp (const void *a, const void *b)
 Compares the domain names of the two arguments in their canonical ordening.
ldns_status ldns_dnssec_name_add_rr (ldns_dnssec_name *name, ldns_rr *rr)
 Inserts the given rr at the right place in the current dnssec_name No checking is done whether the name matches.
ldns_dnssec_rrsetsldns_dnssec_name_find_rrset (ldns_dnssec_name *name, ldns_rr_type type)
 Find the RRset with the given type in within this name structure.
ldns_dnssec_rrsetsldns_dnssec_zone_find_rrset (ldns_dnssec_zone *zone, ldns_rdf *dname, ldns_rr_type type)
 Find the RRset with the given name and type in the zone.
void ldns_dnssec_name_print_soa_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_name *name, bool show_soa)
void ldns_dnssec_name_print_soa (FILE *out, ldns_dnssec_name *name, bool show_soa)
void ldns_dnssec_name_print_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_name *name)
 Prints the RRs in the dnssec name structure to the given file descriptor.
void ldns_dnssec_name_print (FILE *out, ldns_dnssec_name *name)
 Prints the RRs in the dnssec name structure to the given file descriptor.
ldns_dnssec_zoneldns_dnssec_zone_new ()
 Creates a new dnssec_zone structure.
ldns_status ldns_dnssec_zone_new_frm_fp_l (ldns_dnssec_zone **z, FILE *fp, ldns_rdf *origin, uint32_t ttl, ldns_rr_class ATTR_UNUSED(c), int *line_nr)
ldns_status ldns_dnssec_zone_new_frm_fp (ldns_dnssec_zone **z, FILE *fp, ldns_rdf *origin, uint32_t ttl, ldns_rr_class ATTR_UNUSED(c))
void ldns_dnssec_name_node_free (ldns_rbnode_t *node, void *arg)
void ldns_dnssec_name_node_deep_free (ldns_rbnode_t *node, void *arg)
void ldns_dnssec_zone_free (ldns_dnssec_zone *zone)
 Frees the given zone structure, and its rbtree of dnssec_names Individual ldns_rr RRs within those names are *not* freed.
void ldns_dnssec_zone_deep_free (ldns_dnssec_zone *zone)
 Frees the given zone structure, and its rbtree of dnssec_names Individual ldns_rr RRs within those names are also freed.
int ldns_dname_compare_v (const void *a, const void *b)
ldns_rbnode_tldns_dnssec_zone_find_nsec3_original (ldns_dnssec_zone *zone, ldns_rr *rr)
ldns_status ldns_dnssec_zone_add_rr (ldns_dnssec_zone *zone, ldns_rr *rr)
 Adds the given RR to the zone.
void ldns_dnssec_zone_names_print_fmt (FILE *out, const ldns_output_format *fmt, ldns_rbtree_t *tree, bool print_soa)
 Prints the rbtree of ldns_dnssec_name structures to the file descriptor.
void ldns_dnssec_zone_names_print (FILE *out, ldns_rbtree_t *tree, bool print_soa)
 Prints the rbtree of ldns_dnssec_name structures to the file descriptor.
void ldns_dnssec_zone_print_fmt (FILE *out, const ldns_output_format *fmt, ldns_dnssec_zone *zone)
 Prints the complete zone to the given file descriptor.
void ldns_dnssec_zone_print (FILE *out, ldns_dnssec_zone *zone)
 Prints the complete zone to the given file descriptor.
ldns_status ldns_dnssec_zone_add_empty_nonterminals (ldns_dnssec_zone *zone)
 Adds explicit dnssec_name structures for the empty nonterminals in this zone.
bool ldns_dnssec_zone_is_nsec3_optout (ldns_dnssec_zone *zone)
 If a NSEC3PARAM is available in the apex, walks the zone and returns true on the first optout nsec3.

Define Documentation

#define FASTER_DNSSEC_ZONE_NEW_FRM_FP   1

Definition at line 637 of file dnssec_zone.c.


Function Documentation

ldns_dnssec_rrs* ldns_dnssec_rrs_new (  ) 

Creates a new entry for 1 pointer to an rr and 1 pointer to the next rrs.

Returns:
the allocated data

Definition at line 10 of file dnssec_zone.c.

References LDNS_MALLOC, ldns_struct_dnssec_rrs::next, and ldns_struct_dnssec_rrs::rr.

INLINE void ldns_dnssec_rrs_free_internal ( ldns_dnssec_rrs rrs,
int  deep 
)
void ldns_dnssec_rrs_free ( ldns_dnssec_rrs rrs  ) 

Frees the list of rrs, but *not* the individual ldns_rr records contained in the list.

Parameters:
[in] rrs the data structure to free

Definition at line 35 of file dnssec_zone.c.

References ldns_dnssec_rrs_free_internal().

void ldns_dnssec_rrs_deep_free ( ldns_dnssec_rrs rrs  ) 

Frees the list of rrs, and the individual ldns_rr records contained in the list.

Parameters:
[in] rrs the data structure to free

Definition at line 41 of file dnssec_zone.c.

References ldns_dnssec_rrs_free_internal().

ldns_status ldns_dnssec_rrs_add_rr ( ldns_dnssec_rrs rrs,
ldns_rr rr 
)

Adds an RR to the list of RRs.

The list will remain ordered

Parameters:
[in] rrs the list to add to
[in] rr the RR to add
Returns:
LDNS_STATUS_OK on success

Definition at line 47 of file dnssec_zone.c.

References ldns_dnssec_rrs_add_rr(), ldns_dnssec_rrs_new(), ldns_rr_compare(), LDNS_STATUS_ERR, LDNS_STATUS_OK, ldns_struct_dnssec_rrs::next, and ldns_struct_dnssec_rrs::rr.

void ldns_dnssec_rrs_print_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_rrs rrs 
)

Prints the given rrs to the file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] fmt the format of the textual representation
[in] rrs the list of RRs to print

Definition at line 81 of file dnssec_zone.c.

References ldns_struct_output_format::flags, LDNS_COMMENT_LAYOUT, ldns_dnssec_rrs_print_fmt(), ldns_rr_print_fmt(), ldns_struct_dnssec_rrs::next, and ldns_struct_dnssec_rrs::rr.

void ldns_dnssec_rrs_print ( FILE *  out,
ldns_dnssec_rrs rrs 
)

Prints the given rrs to the file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] rrs the list of RRs to print

Definition at line 98 of file dnssec_zone.c.

References ldns_dnssec_rrs_print_fmt(), and ldns_output_format_default.

ldns_dnssec_rrsets* ldns_dnssec_rrsets_new (  ) 

Creates a new list (entry) of RRsets.

Returns:
the newly allocated structure

Definition at line 105 of file dnssec_zone.c.

References LDNS_MALLOC, ldns_struct_dnssec_rrsets::next, ldns_struct_dnssec_rrsets::rrs, ldns_struct_dnssec_rrsets::signatures, and ldns_struct_dnssec_rrsets::type.

INLINE void ldns_dnssec_rrsets_free_internal ( ldns_dnssec_rrsets rrsets,
int  deep 
)
void ldns_dnssec_rrsets_free ( ldns_dnssec_rrsets rrsets  ) 

Frees the list of rrsets and their rrs, but *not* the ldns_rr records in the sets.

Parameters:
[in] rrsets the data structure to free

Definition at line 135 of file dnssec_zone.c.

References ldns_dnssec_rrsets_free_internal().

void ldns_dnssec_rrsets_deep_free ( ldns_dnssec_rrsets rrsets  ) 

Frees the list of rrsets and their rrs, and the ldns_rr records in the sets.

Parameters:
[in] rrsets the data structure to free

Definition at line 141 of file dnssec_zone.c.

References ldns_dnssec_rrsets_free_internal().

ldns_rr_type ldns_dnssec_rrsets_type ( ldns_dnssec_rrsets rrsets  ) 

Returns the rr type of the rrset (that is head of the given list).

Parameters:
[in] rrsets the rrset to get the type of
Returns:
the rr type

Definition at line 147 of file dnssec_zone.c.

References ldns_struct_dnssec_rrsets::type.

ldns_status ldns_dnssec_rrsets_set_type ( ldns_dnssec_rrsets rrsets,
ldns_rr_type  type 
)

Sets the RR type of the rrset (that is head of the given list).

Parameters:
[in] rrsets the rrset to set the type of
[in] type the type to set
Returns:
LDNS_STATUS_OK on success

Definition at line 157 of file dnssec_zone.c.

References LDNS_STATUS_ERR, LDNS_STATUS_OK, and ldns_struct_dnssec_rrsets::type.

ldns_dnssec_rrsets* ldns_dnssec_rrsets_new_frm_rr ( ldns_rr rr  ) 
ldns_status ldns_dnssec_rrsets_add_rr ( ldns_dnssec_rrsets rrsets,
ldns_rr rr 
)

Add an ldns_rr to the corresponding RRset in the given list of RRsets.

If it is not present, add it as a new RRset with 1 record.

Parameters:
[in] rrsets the list of rrsets to add the RR to
[in] rr the rr to add to the list of rrsets
Returns:
LDNS_STATUS_OK on success

Definition at line 194 of file dnssec_zone.c.

References ldns_dnssec_rrs_add_rr(), ldns_dnssec_rrs_new(), ldns_dnssec_rrsets_add_rr(), ldns_dnssec_rrsets_new(), ldns_dnssec_rrsets_new_frm_rr(), ldns_dnssec_rrsets_type(), ldns_rdf2rr_type(), ldns_rr_get_type(), ldns_rr_rrsig_typecovered(), LDNS_RR_TYPE_RRSIG, LDNS_STATUS_ERR, LDNS_STATUS_OK, ldns_struct_dnssec_rrsets::next, ldns_struct_dnssec_rrs::rr, ldns_struct_dnssec_rrsets::rrs, ldns_struct_dnssec_rrsets::signatures, and ldns_struct_dnssec_rrsets::type.

void ldns_dnssec_rrsets_print_soa_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_rrsets rrsets,
bool  follow,
bool  show_soa 
)
void ldns_dnssec_rrsets_print_soa ( FILE *  out,
ldns_dnssec_rrsets rrsets,
bool  follow,
bool  show_soa 
)
void ldns_dnssec_rrsets_print_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_rrsets rrsets,
bool  follow 
)

Print the given list of rrsets to the fiven file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] fmt the format of the textual representation
[in] rrsets the list of RRsets to print
[in] follow if set to false, only print the first RRset

Definition at line 313 of file dnssec_zone.c.

References ldns_dnssec_rrsets_print_soa_fmt().

void ldns_dnssec_rrsets_print ( FILE *  out,
ldns_dnssec_rrsets rrsets,
bool  follow 
)

Print the given list of rrsets to the fiven file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] rrsets the list of RRsets to print
[in] follow if set to false, only print the first RRset

Definition at line 321 of file dnssec_zone.c.

References ldns_dnssec_rrsets_print_fmt(), and ldns_output_format_default.

ldns_dnssec_name* ldns_dnssec_name_new (  ) 

Create a new data structure for a dnssec name.

Returns:
the allocated structure

Definition at line 328 of file dnssec_zone.c.

References LDNS_CALLOC.

ldns_dnssec_name* ldns_dnssec_name_new_frm_rr ( ldns_rr rr  ) 

Create a new data structure for a dnssec name for the given RR.

Parameters:
[in] rr the RR to derive properties from, and to add to the name

Definition at line 353 of file dnssec_zone.c.

References ldns_dnssec_name_add_rr(), ldns_dnssec_name_free(), ldns_dnssec_name_new(), ldns_rr_owner(), LDNS_STATUS_OK, and ldns_struct_dnssec_name::name.

INLINE void ldns_dnssec_name_free_internal ( ldns_dnssec_name name,
int  deep 
)
void ldns_dnssec_name_free ( ldns_dnssec_name name  ) 

Frees the name structure and its rrs and rrsets.

Individual ldns_rr records therein are not freed

Parameters:
[in] name the structure to free

Definition at line 393 of file dnssec_zone.c.

References ldns_dnssec_name_free_internal().

void ldns_dnssec_name_deep_free ( ldns_dnssec_name name  ) 

Frees the name structure and its rrs and rrsets.

Individual ldns_rr records contained in the name are also freed

Parameters:
[in] name the structure to free

Definition at line 399 of file dnssec_zone.c.

References ldns_dnssec_name_free_internal().

ldns_rdf* ldns_dnssec_name_name ( ldns_dnssec_name name  ) 

Returns the domain name of the given dnssec_name structure.

Parameters:
[in] name the dnssec name to get the domain name from
Returns:
the domain name

Definition at line 405 of file dnssec_zone.c.

References ldns_struct_dnssec_name::name.

bool ldns_dnssec_name_is_glue ( ldns_dnssec_name name  ) 

Returns if dnssec_name structure is marked as glue.

The ldns_dnssec_zone_mark_glue() function has to be called on a zone before using this function. Only names that have only glue rrsets will be marked. Names that have other occluded rrsets and names containing glue on the delegation point will NOT be marked!

Parameters:
[in] name the dnssec name to get the domain name from
Returns:
true if the structure is marked as glue, false otherwise.

Definition at line 414 of file dnssec_zone.c.

References ldns_struct_dnssec_name::is_glue.

void ldns_dnssec_name_set_name ( ldns_dnssec_name name,
ldns_rdf dname 
)

Sets the domain name of the given dnssec_name structure.

Parameters:
[in] name the dnssec name to set the domain name of
[in] dname the domain name to set it to. This data is *not* copied.

Definition at line 423 of file dnssec_zone.c.

References ldns_struct_dnssec_name::name.

ldns_rr* ldns_dnssec_name_nsec ( ldns_dnssec_name rrset  ) 

Definition at line 432 of file dnssec_zone.c.

References ldns_struct_dnssec_name::nsec.

void ldns_dnssec_name_set_nsec ( ldns_dnssec_name name,
ldns_rr nsec 
)

Sets the NSEC(3) RR of the given dnssec_name structure.

Parameters:
[in] name the dnssec name to set the domain name of
[in] nsec the nsec rr to set it to. This data is *not* copied.

Definition at line 441 of file dnssec_zone.c.

References ldns_struct_dnssec_name::nsec.

int ldns_dnssec_name_cmp ( const void *  a,
const void *  b 
)

Compares the domain names of the two arguments in their canonical ordening.

Parameters:
[in] a The first dnssec_name to compare
[in] b The second dnssec_name to compare
Returns:
-1 if the domain name of a comes before that of b in canonical ordening, 1 if it is the other way around, and 0 if they are equal

Definition at line 449 of file dnssec_zone.c.

References ldns_dname_compare(), and ldns_dnssec_name_name().

ldns_status ldns_dnssec_name_add_rr ( ldns_dnssec_name name,
ldns_rr rr 
)

Inserts the given rr at the right place in the current dnssec_name No checking is done whether the name matches.

Parameters:
[in] name The ldns_dnssec_name to add the RR to
[in] rr The RR to add
Returns:
LDNS_STATUS_OK on success, error code otherwise

Definition at line 467 of file dnssec_zone.c.

References ldns_dnssec_name_name(), ldns_dnssec_rrs_add_rr(), ldns_dnssec_rrs_new(), ldns_dnssec_rrsets_add_rr(), ldns_dnssec_rrsets_new(), ldns_nsec3_hash_name_frm_nsec3(), ldns_rdf2rr_type(), ldns_rdf_deep_free(), ldns_rr_get_type(), ldns_rr_rrsig_typecovered(), LDNS_RR_TYPE_NSEC, LDNS_RR_TYPE_NSEC3, LDNS_RR_TYPE_RRSIG, LDNS_STATUS_ERR, LDNS_STATUS_OK, ldns_struct_dnssec_name::nsec, ldns_struct_dnssec_name::nsec_signatures, ldns_struct_dnssec_rrs::rr, and ldns_struct_dnssec_name::rrsets.

ldns_dnssec_rrsets* ldns_dnssec_name_find_rrset ( ldns_dnssec_name name,
ldns_rr_type  type 
)

Find the RRset with the given type in within this name structure.

Parameters:
[in] name the name to find the RRset in
[in] type the type of the RRset to find
Returns:
the RRset, or NULL if not present

Definition at line 531 of file dnssec_zone.c.

References ldns_struct_dnssec_rrsets::next, ldns_struct_dnssec_name::rrsets, and ldns_struct_dnssec_rrsets::type.

ldns_dnssec_rrsets* ldns_dnssec_zone_find_rrset ( ldns_dnssec_zone zone,
ldns_rdf dname,
ldns_rr_type  type 
)

Find the RRset with the given name and type in the zone.

Parameters:
[in] zone the zone structure to find the RRset in
[in] dname the domain name of the RRset to find
[in] type the type of the RRset to find
Returns:
the RRset, or NULL if not present

Definition at line 547 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_dnssec_name_find_rrset(), ldns_rbtree_search(), and ldns_struct_dnssec_zone::names.

void ldns_dnssec_name_print_soa_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_name name,
bool  show_soa 
)
void ldns_dnssec_name_print_soa ( FILE *  out,
ldns_dnssec_name name,
bool  show_soa 
)

Definition at line 593 of file dnssec_zone.c.

References ldns_dnssec_name_print_soa_fmt(), and ldns_output_format_default.

void ldns_dnssec_name_print_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_name name 
)

Prints the RRs in the dnssec name structure to the given file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] fmt the format of the textual representation
[in] name the name structure to print the contents of

Definition at line 600 of file dnssec_zone.c.

References ldns_dnssec_name_print_soa_fmt().

void ldns_dnssec_name_print ( FILE *  out,
ldns_dnssec_name name 
)

Prints the RRs in the dnssec name structure to the given file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] name the name structure to print the contents of

Definition at line 607 of file dnssec_zone.c.

References ldns_dnssec_name_print_fmt(), and ldns_output_format_default.

ldns_dnssec_zone* ldns_dnssec_zone_new (  ) 

Creates a new dnssec_zone structure.

Returns:
the allocated structure

Definition at line 614 of file dnssec_zone.c.

References LDNS_MALLOC, ldns_struct_dnssec_zone::names, and ldns_struct_dnssec_zone::soa.

ldns_status ldns_dnssec_zone_new_frm_fp_l ( ldns_dnssec_zone **  z,
FILE *  fp,
ldns_rdf origin,
uint32_t  ttl,
ldns_rr_class   ATTR_UNUSEDc,
int *  line_nr 
)
ldns_status ldns_dnssec_zone_new_frm_fp ( ldns_dnssec_zone **  z,
FILE *  fp,
ldns_rdf origin,
uint32_t  ttl,
ldns_rr_class   ATTR_UNUSEDc 
)

Definition at line 774 of file dnssec_zone.c.

References ldns_dnssec_zone_new_frm_fp_l().

void ldns_dnssec_name_node_free ( ldns_rbnode_t node,
void *  arg 
)

Definition at line 781 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_dnssec_name_free(), and LDNS_FREE.

void ldns_dnssec_name_node_deep_free ( ldns_rbnode_t node,
void *  arg 
)

Definition at line 788 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_dnssec_name_deep_free(), and LDNS_FREE.

void ldns_dnssec_zone_free ( ldns_dnssec_zone zone  ) 

Frees the given zone structure, and its rbtree of dnssec_names Individual ldns_rr RRs within those names are *not* freed.

Parameters:
[in] *zone the zone to free

Definition at line 795 of file dnssec_zone.c.

References ldns_dnssec_name_node_free(), LDNS_FREE, ldns_traverse_postorder(), and ldns_struct_dnssec_zone::names.

void ldns_dnssec_zone_deep_free ( ldns_dnssec_zone zone  ) 

Frees the given zone structure, and its rbtree of dnssec_names Individual ldns_rr RRs within those names are also freed.

Parameters:
[in] *zone the zone to free

Definition at line 810 of file dnssec_zone.c.

References ldns_dnssec_name_node_deep_free(), LDNS_FREE, ldns_traverse_postorder(), and ldns_struct_dnssec_zone::names.

int ldns_dname_compare_v ( const void *  a,
const void *  b 
)

Definition at line 826 of file dnssec_zone.c.

References ldns_dname_compare().

ldns_rbnode_t* ldns_dnssec_zone_find_nsec3_original ( ldns_dnssec_zone zone,
ldns_rr rr 
)
ldns_status ldns_dnssec_zone_add_rr ( ldns_dnssec_zone zone,
ldns_rr rr 
)

Adds the given RR to the zone.

It find whether there is a dnssec_name with that name present. If so, add it to that, if not create a new one. Special handling of NSEC and RRSIG provided

Parameters:
[in] zone the zone to add the RR to
[in] rr The RR to add
Returns:
LDNS_STATUS_OK on success, an error code otherwise

Definition at line 858 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_rbnode_t::key, ldns_dname_compare_v(), ldns_dnssec_name_add_rr(), ldns_dnssec_name_free(), ldns_dnssec_name_new_frm_rr(), ldns_dnssec_zone_find_nsec3_original(), LDNS_MALLOC, ldns_rbtree_create(), ldns_rbtree_insert(), ldns_rbtree_search(), ldns_rdf2rr_type(), ldns_rr_get_type(), ldns_rr_owner(), ldns_rr_print(), ldns_rr_rrsig_typecovered(), LDNS_RR_TYPE_NSEC3, LDNS_RR_TYPE_RRSIG, LDNS_RR_TYPE_SOA, LDNS_STATUS_DNSSEC_NSEC3_ORIGINAL_NOT_FOUND, LDNS_STATUS_ERR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, ldns_struct_dnssec_zone::names, and ldns_struct_dnssec_zone::soa.

void ldns_dnssec_zone_names_print_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_rbtree_t tree,
bool  print_soa 
)

Prints the rbtree of ldns_dnssec_name structures to the file descriptor.

Parameters:
[in] out the file descriptor to print the names to
[in] fmt the format of the textual representation
[in] tree the tree of ldns_dnssec_name structures to print
[in] print_soa if true, print SOA records, if false, skip them

Definition at line 921 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_struct_output_format::flags, LDNS_COMMENT_LAYOUT, ldns_dnssec_name_print_soa_fmt(), ldns_rbtree_first(), ldns_rbtree_next(), and LDNS_RBTREE_NULL.

void ldns_dnssec_zone_names_print ( FILE *  out,
ldns_rbtree_t tree,
bool  print_soa 
)

Prints the rbtree of ldns_dnssec_name structures to the file descriptor.

Parameters:
[in] out the file descriptor to print the names to
[in] tree the tree of ldns_dnssec_name structures to print
[in] print_soa if true, print SOA records, if false, skip them

Definition at line 939 of file dnssec_zone.c.

References ldns_dnssec_zone_names_print_fmt(), and ldns_output_format_default.

void ldns_dnssec_zone_print_fmt ( FILE *  out,
const ldns_output_format fmt,
ldns_dnssec_zone zone 
)

Prints the complete zone to the given file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] fmt the format of the textual representation
[in] zone the dnssec_zone to print

Definition at line 946 of file dnssec_zone.c.

References ldns_struct_output_format::flags, LDNS_COMMENT_LAYOUT, ldns_dnssec_name_find_rrset(), ldns_dnssec_name_name(), ldns_dnssec_rrsets_print_fmt(), ldns_dnssec_zone_names_print_fmt(), ldns_rdf_print(), LDNS_RR_TYPE_SOA, ldns_struct_dnssec_zone::names, and ldns_struct_dnssec_zone::soa.

void ldns_dnssec_zone_print ( FILE *  out,
ldns_dnssec_zone zone 
)

Prints the complete zone to the given file descriptor.

Parameters:
[in] out the file descriptor to print to
[in] zone the dnssec_zone to print

Definition at line 974 of file dnssec_zone.c.

References ldns_dnssec_zone_print_fmt(), and ldns_output_format_default.

ldns_status ldns_dnssec_zone_add_empty_nonterminals ( ldns_dnssec_zone zone  ) 

Adds explicit dnssec_name structures for the empty nonterminals in this zone.

(this is needed for NSEC3 generation)

Parameters:
[in] zone the zone to check for empty nonterminals return LDNS_STATUS_OK on success.

Definition at line 980 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_rbnode_t::key, ldns_dname_clone_from(), ldns_dname_compare(), ldns_dname_label_count(), ldns_dnssec_name_free(), ldns_dnssec_name_new(), LDNS_MALLOC, ldns_rbtree_first(), ldns_rbtree_insert(), ldns_rbtree_next(), LDNS_RBTREE_NULL, ldns_rdf_deep_free(), LDNS_STATUS_ERR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, ldns_struct_dnssec_name::name, ldns_struct_dnssec_name::name_alloced, ldns_struct_dnssec_zone::names, and ldns_struct_dnssec_zone::soa.

bool ldns_dnssec_zone_is_nsec3_optout ( ldns_dnssec_zone zone  ) 

If a NSEC3PARAM is available in the apex, walks the zone and returns true on the first optout nsec3.

Parameters:
[in] zone the zone to check for nsec3 optout records return true when the zone has at least one nsec3 optout record.

Definition at line 1080 of file dnssec_zone.c.

References ldns_rbnode_t::data, ldns_dnssec_name_find_rrset(), ldns_nsec3_optout(), ldns_rbtree_first(), ldns_rbtree_next(), LDNS_RBTREE_NULL, ldns_rr_get_type(), LDNS_RR_TYPE_NSEC3, LDNS_RR_TYPE_NSEC3PARAM, ldns_struct_dnssec_zone::names, and ldns_struct_dnssec_zone::soa.


Generated on 17 Feb 2016 for ldns by  doxygen 1.6.1