Go to the source code of this file.
Data Structures | |
struct | ldns_struct_zone |
DNS Zone. More... | |
Typedefs | |
typedef struct ldns_struct_zone | ldns_zone |
Functions | |
ldns_zone * | ldns_zone_new (void) |
create a new ldns_zone structure More... | |
ldns_rr * | ldns_zone_soa (const ldns_zone *z) |
Return the soa record of a zone. More... | |
size_t | ldns_zone_rr_count (const ldns_zone *z) |
Returns the number of resource records in the zone, NOT counting the SOA record. More... | |
void | ldns_zone_set_soa (ldns_zone *z, ldns_rr *soa) |
Set the zone's soa record. More... | |
ldns_rr_list * | ldns_zone_rrs (const ldns_zone *z) |
Get a list of a zone's content. More... | |
void | ldns_zone_set_rrs (ldns_zone *z, ldns_rr_list *rrlist) |
Set the zone's contents. More... | |
bool | ldns_zone_push_rr_list (ldns_zone *z, const ldns_rr_list *list) |
push an rrlist to a zone structure. More... | |
bool | ldns_zone_push_rr (ldns_zone *z, ldns_rr *rr) |
push an single rr to a zone structure. More... | |
ldns_rr_list * | ldns_zone_glue_rr_list (const ldns_zone *z) |
Retrieve all resource records from the zone that are glue records. More... | |
ldns_status | ldns_zone_new_frm_fp (ldns_zone **z, FILE *fp, const ldns_rdf *origin, uint32_t ttl, ldns_rr_class c) |
Create a new zone from a file. More... | |
ldns_status | ldns_zone_new_frm_fp_l (ldns_zone **z, FILE *fp, const ldns_rdf *origin, uint32_t ttl, ldns_rr_class c, int *line_nr) |
Create a new zone from a file, keep track of the line numbering. More... | |
void | ldns_zone_free (ldns_zone *zone) |
Frees the allocated memory for the zone, and the rr_list structure in it. More... | |
void | ldns_zone_deep_free (ldns_zone *zone) |
Frees the allocated memory for the zone, the soa rr in it, and the rr_list structure in it, including the rr's in that. More... | |
void | ldns_zone_sort (ldns_zone *zone) |
Sort the rrs in a zone, with the current impl. More... | |
zone definitions
a Net::DNS like library for C
(c) NLnet Labs, 2005-2006
See the file LICENSE for the license
Defines the ldns_zone structure and functions to manipulate it.
Definition in file zone.h.
typedef struct ldns_struct_zone ldns_zone |
ldns_zone* ldns_zone_new | ( | void | ) |
create a new ldns_zone structure
Definition at line 165 of file zone.c.
References ldns_struct_zone::_rrs, LDNS_FREE, LDNS_MALLOC, ldns_rr_list_new(), and ldns_zone_set_soa().
Return the soa record of a zone.
[in] | z | the zone to read from |
Definition at line 17 of file zone.c.
References ldns_struct_zone::_soa.
size_t ldns_zone_rr_count | ( | const ldns_zone * | z | ) |
Returns the number of resource records in the zone, NOT counting the SOA record.
[in] | z | the zone to read from |
Definition at line 23 of file zone.c.
References ldns_struct_zone::_rrs, and ldns_rr_list_rr_count().
Set the zone's soa record.
[in] | z | the zone to put the new soa in |
[in] | soa | the soa to set |
Definition at line 29 of file zone.c.
References ldns_struct_zone::_soa.
ldns_rr_list* ldns_zone_rrs | ( | const ldns_zone * | z | ) |
Get a list of a zone's content.
Note that the SOA isn't included in this list. You need to get the with ldns_zone_soa.
[in] | z | the zone to read from |
Definition at line 35 of file zone.c.
References ldns_struct_zone::_rrs.
void ldns_zone_set_rrs | ( | ldns_zone * | z, |
ldns_rr_list * | rrlist | ||
) |
Set the zone's contents.
[in] | z | the zone to put the new soa in |
[in] | rrlist | the rrlist to use |
Definition at line 41 of file zone.c.
References ldns_struct_zone::_rrs.
bool ldns_zone_push_rr_list | ( | ldns_zone * | z, |
const ldns_rr_list * | list | ||
) |
push an rrlist to a zone structure.
This function use pointer copying, so the rr_list structure inside z is modified!
[in] | z | the zone to add to |
[in] | list | the list to add |
Definition at line 47 of file zone.c.
References ldns_rr_list_cat(), and ldns_zone_rrs().
push an single rr to a zone structure.
This function use pointer copying, so the rr_list structure inside z is modified!
[in] | z | the zone to add to |
[in] | rr | the rr to add |
Definition at line 53 of file zone.c.
References ldns_rr_list_push_rr(), and ldns_zone_rrs().
ldns_rr_list* ldns_zone_glue_rr_list | ( | const ldns_zone * | z | ) |
Retrieve all resource records from the zone that are glue records.
The resulting list does are pointer references to the zone's data.
Due to the current zone implementation (as a list of rr's), this function is extremely slow. Another (probably better) way to do this is to use an ldns_dnssec_zone structure and the ldns_dnssec_mark_and_get_glue() function.
[in] | z | the zone to look for glue |
Definition at line 65 of file zone.c.
References ldns_dname_compare(), ldns_dname_is_subdomain(), LDNS_FREE, ldns_rdf_compare(), ldns_rr_get_type(), ldns_rr_list_free(), ldns_rr_list_new(), ldns_rr_list_push_rr(), ldns_rr_list_rr(), ldns_rr_list_rr_count(), ldns_rr_owner(), LDNS_RR_TYPE_A, LDNS_RR_TYPE_AAAA, LDNS_RR_TYPE_NS, ldns_zone_rr_count(), ldns_zone_rrs(), and ldns_zone_soa().
ldns_status ldns_zone_new_frm_fp | ( | ldns_zone ** | z, |
FILE * | fp, | ||
const ldns_rdf * | origin, | ||
uint32_t | ttl, | ||
ldns_rr_class | c | ||
) |
Create a new zone from a file.
[out] | z | the new zone |
[in] | *fp | the filepointer to use |
[in] | *origin | the zones' origin |
[in] | ttl | default ttl to use |
[in] | c | default class to use (IN) |
Definition at line 187 of file zone.c.
References ldns_zone_new_frm_fp_l().
ldns_status ldns_zone_new_frm_fp_l | ( | ldns_zone ** | z, |
FILE * | fp, | ||
const ldns_rdf * | origin, | ||
uint32_t | ttl, | ||
ldns_rr_class | c, | ||
int * | line_nr | ||
) |
Create a new zone from a file, keep track of the line numbering.
[out] | z | the new zone |
[in] | *fp | the filepointer to use |
[in] | *origin | the zones' origin |
[in] | ttl | default ttl to use |
[in] | c | default class to use (IN) |
[out] | line_nr | used for error msg, to get to the line number |
void ldns_zone_free | ( | ldns_zone * | zone | ) |
Frees the allocated memory for the zone, and the rr_list structure in it.
[in] | zone | the zone to free |
Definition at line 369 of file zone.c.
References ldns_struct_zone::_rrs, LDNS_FREE, and ldns_rr_list_free().
void ldns_zone_deep_free | ( | ldns_zone * | zone | ) |
Frees the allocated memory for the zone, the soa rr in it, and the rr_list structure in it, including the rr's in that.
etc.
[in] | zone | the zone to free |
Definition at line 376 of file zone.c.
References ldns_struct_zone::_rrs, ldns_struct_zone::_soa, LDNS_FREE, ldns_rr_free(), and ldns_rr_list_deep_free().
void ldns_zone_sort | ( | ldns_zone * | zone | ) |
Sort the rrs in a zone, with the current impl.
this is slow
[in] | zone | the zone to sort |
Definition at line 359 of file zone.c.
References ldns_rr_list_sort(), and ldns_zone_rrs().