ldns documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

Data Structures | Typedefs | Functions
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_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...
signed char | ldns_zone_push_rr_list (ldns_zone *z, ldns_rr_list *list)
| push an rrlist to a zone structure. More...
signed char | 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, 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, 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

typedef struct ldns_struct_zone ldns_zone

Definition at line 50 of file zone.h.

## Function Documentation

ldns_zone* ldns_zone_new | ( | void |  | ) |

create a new ldns_zone structure

Returns
  a pointer to a ldns_zone structure

Definition at line 166 of file zone.c.

References ldns_struct_zone::_rrs, LDNS_FREE, LDNS_MALLOC, ldns_rr_list_new(), and ldns_zone_set_soa().

ldns_rr* ldns_zone_soa | ( | const ldns_zone * | z | ) |

Return the soa record of a zone.

Parameters

  [in] | z | the zone to read from

Returns
  the soa record in the zone

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.

Parameters

  [in] | z | the 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().

void ldns_zone_set_soa | ( | ldns_zone * | z,
|  | ldns_rr * | soa
| ) |  |

Set the zone's soa record.

Parameters

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

Parameters

  [in] | z | the zone to read from

Returns
  the rrs from this zone

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.

Parameters

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

signed char ldns_zone_push_rr_list | ( | ldns_zone * | z,
|  | 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] | z | the zone to add to
  [in] | list | the list to add

Returns
  a true on succes otherwise falsed

Definition at line 47 of file zone.c.

References ldns_rr_list_cat(), and ldns_zone_rrs().

signed char 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] | z | the zone to add to
  [in] | rr | the rr to add

Returns
  a true on succes otherwise falsed

Definition at line 54 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.

Parameters

  [in] | z | the zone to look for glue

Returns
  the rr_list with the glue

Definition at line 66 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,
|  | ldns_rdf * | origin,
|  | uint32_t | ttl,
|  | ldns_rr_class | c
| ) |  |

Create a new zone from a file.

Parameters

  [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)

Returns
  ldns_status mesg with an error or LDNS_STATUS_OK

Definition at line 188 of file zone.c.

References ldns_zone_new_frm_fp_l().

ldns_status ldns_zone_new_frm_fp_l | ( | ldns_zone ** | z,
|  | FILE * | fp,
|  | 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] | 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

Returns
  ldns_status mesg with an error or LDNS_STATUS_OK

void ldns_zone_free | ( | ldns_zone * | zone | ) |

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

Parameters

  [in] | zone | the zone to free

Definition at line 306 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.

Parameters

  [in] | zone | the zone to free

Definition at line 313 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

Parameters

  [in] | zone | the zone to sort

Definition at line 296 of file zone.c.

References ldns_rr_list_sort(), and ldns_zone_rrs().