zone.h File Reference

zone.h More...

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_zoneldns_zone_new (void)
 create a new ldns_zone structure More...
 
ldns_rrldns_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_listldns_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_listldns_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...
 

Detailed Description

zone.h

zone definitions

  • what is it
  • get_glue function
  • search etc

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 Documentation

◆ ldns_zone

typedef struct ldns_struct_zone ldns_zone

Definition at line 1 of file zone.h.

Function Documentation

◆ ldns_zone_new()

ldns_zone* ldns_zone_new ( void  )

create a new ldns_zone structure

Returns
a pointer to a 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().

◆ ldns_zone_soa()

ldns_rr* ldns_zone_soa ( const ldns_zone z)

Return the soa record of a zone.

Parameters
[in]zthe zone to read from
Returns
the soa record in the zone

Definition at line 17 of file zone.c.

References ldns_struct_zone::_soa.

◆ ldns_zone_rr_count()

size_t ldns_zone_rr_count ( const ldns_zone z)

Returns the number of resource records in the zone, NOT counting the SOA record.

Parameters
[in]zthe zone to read from
Returns
the number of rr's in the zone

Definition at line 23 of file zone.c.

References ldns_struct_zone::_rrs, and ldns_rr_list_rr_count().

◆ ldns_zone_set_soa()

void ldns_zone_set_soa ( ldns_zone z,
ldns_rr soa 
)

Set the zone's soa record.

Parameters
[in]zthe zone to put the new soa in
[in]soathe soa to set

Definition at line 29 of file zone.c.

References ldns_struct_zone::_soa.

◆ ldns_zone_rrs()

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.

Parameters
[in]zthe zone to read from
Returns
the rrs from this zone

Definition at line 35 of file zone.c.

References ldns_struct_zone::_rrs.

◆ ldns_zone_set_rrs()

void ldns_zone_set_rrs ( ldns_zone z,
ldns_rr_list rrlist 
)

Set the zone's contents.

Parameters
[in]zthe zone to put the new soa in
[in]rrlistthe rrlist to use

Definition at line 41 of file zone.c.

References ldns_struct_zone::_rrs.

◆ ldns_zone_push_rr_list()

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!

Parameters
[in]zthe zone to add to
[in]listthe list to add
Returns
a true on success otherwise false

Definition at line 47 of file zone.c.

References ldns_rr_list_cat(), and ldns_zone_rrs().

◆ ldns_zone_push_rr()

bool ldns_zone_push_rr ( ldns_zone z,
ldns_rr rr 
)

push an single rr to a zone structure.

This function use pointer copying, so the rr_list structure inside z is modified!

Parameters
[in]zthe zone to add to
[in]rrthe rr to add
Returns
a true on success otherwise false

Definition at line 53 of file zone.c.

References ldns_rr_list_push_rr(), and ldns_zone_rrs().

◆ ldns_zone_glue_rr_list()

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.

Parameters
[in]zthe zone to look for glue
Returns
the rr_list with the 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_zone_new_frm_fp()

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.

Parameters
[out]zthe new zone
[in]*fpthe filepointer to use
[in]*originthe zones' origin
[in]ttldefault ttl to use
[in]cdefault class to use (IN)
Returns
ldns_status mesg with an error or LDNS_STATUS_OK

Definition at line 187 of file zone.c.

References ldns_zone_new_frm_fp_l().

◆ 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.

Parameters
[out]zthe new zone
[in]*fpthe filepointer to use
[in]*originthe zones' origin
[in]ttldefault ttl to use
[in]cdefault class to use (IN)
[out]line_nrused for error msg, to get to the line number
Returns
ldns_status mesg with an error or LDNS_STATUS_OK

◆ ldns_zone_free()

void ldns_zone_free ( ldns_zone zone)

Frees the allocated memory for the zone, and the rr_list structure in it.

Parameters
[in]zonethe zone to free

Definition at line 369 of file zone.c.

References ldns_struct_zone::_rrs, LDNS_FREE, and ldns_rr_list_free().

◆ ldns_zone_deep_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.

Parameters
[in]zonethe 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().

◆ ldns_zone_sort()

void ldns_zone_sort ( ldns_zone zone)

Sort the rrs in a zone, with the current impl.

this is slow

Parameters
[in]zonethe zone to sort

Definition at line 359 of file zone.c.

References ldns_rr_list_sort(), and ldns_zone_rrs().