ldns documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

Functions
dname.c File Reference

Go to the source code of this file.

## Functions
ldns_rdf * | ldns_dname_cat_clone (const ldns_rdf *rd1, const ldns_rdf *rd2)
| concatenates two dnames together More...
ldns_status | ldns_dname_cat (ldns_rdf *rd1, ldns_rdf *rd2)
| concatenates rd2 after rd1 (rd2 is copied, rd1 is modified) More...
ldns_rdf * | ldns_dname_reverse (const ldns_rdf *dname)
| Returns a clone of the given dname with the labels reversed. More...
ldns_rdf * | ldns_dname_clone_from (const ldns_rdf *d, uint16_t n)
| Clones the given dname from the nth label on. More...
ldns_rdf * | ldns_dname_left_chop (const ldns_rdf *d)
| chop one label off the left side of a dname. More...
uint8_t | ldns_dname_label_count (const ldns_rdf *r)
| count the number of labels inside a LDNS_RDF_DNAME type rdf. More...
ldns_rdf * | ldns_dname_new (uint16_t s, void *d)
| Create a new dname rdf from a string. More...
ldns_rdf * | ldns_dname_new_frm_str (const char *str)
| creates a new dname rdf from a string. More...
ldns_rdf * | ldns_dname_new_frm_data (uint16_t size, const void *data)
| Create a new dname rdf from data (the data is copied) More...
void | ldns_dname2canonical (const ldns_rdf *rd)
| Put a dname into canonical fmt - ie. More...
bool | ldns_dname_is_subdomain (const ldns_rdf *sub, const ldns_rdf *parent)
| test wether the name sub falls under parent (i.e. More...
int | ldns_dname_compare (const ldns_rdf *dname1, const ldns_rdf *dname2)
| Compares the two dname rdf's according to the algorithm for ordering in RFC4034 Section 6. More...
int | ldns_dname_is_wildcard (const ldns_rdf *dname)
| Check if dname is a wildcard, starts with *. More...
int | ldns_dname_match_wildcard (const ldns_rdf *dname, const ldns_rdf *wildcard)
| Checks whether the dname matches the given wildcard. More...
int | ldns_dname_interval (const ldns_rdf *prev, const ldns_rdf *middle, const ldns_rdf *next)
| check if middle lays in the interval defined by prev and next prev <= middle < next. More...
bool | ldns_dname_str_absolute (const char *dname_str)
| Checks whether the given dname string is absolute (i.e. More...
bool | ldns_dname_absolute (const ldns_rdf *rdf)
| Checks whether the given dname is absolute (i.e. More...
ldns_rdf * | ldns_dname_label (const ldns_rdf *rdf, uint8_t labelpos)
| look inside the rdf and if it is an LDNS_RDF_TYPE_DNAME try and retrieve a specific label. More...

## Function Documentation

ldns_rdf* ldns_dname_cat_clone | ( | const ldns_rdf * | rd1,
|  | const ldns_rdf * | rd2
| ) |  |

concatenates two dnames together

Parameters

  [in] | rd1 | the leftside
  [in] | rd2 | the rightside

Returns
  a new rdf with leftside/rightside

Definition at line 52 of file dname.c.

References LDNS_FREE, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_new_frm_data(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, and LDNS_XMALLOC.

ldns_status ldns_dname_cat | ( | ldns_rdf * | rd1,
|  | ldns_rdf * | rd2
| ) |  |

concatenates rd2 after rd1 (rd2 is copied, rd1 is modified)

Parameters

  [in] | rd1 | the leftside
  [in] | rd2 | the rightside

Returns
  LDNS_STATUS_OK on success

Definition at line 90 of file dname.c.

References ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_set_data(), ldns_rdf_set_size(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, LDNS_STATUS_ERR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, and LDNS_XREALLOC.

ldns_rdf* ldns_dname_reverse | ( | const ldns_rdf * | d | ) |

Returns a clone of the given dname with the labels reversed.

Parameters

  [in] | d | the dname to reverse

Returns
  clone of the dname with the labels reversed.

Definition at line 124 of file dname.c.

References LDNS_FREE, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_new(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, and LDNS_XMALLOC.

ldns_rdf* ldns_dname_clone_from | ( | const ldns_rdf * | d,
|  | uint16_t | n
| ) |  |

Clones the given dname from the nth label on.

Parameters

  [in] | d | The dname to clone
  [in] | n | the label nr to clone from, if this is 0, the complete dname is cloned

Returns
  A newly allocated *rdf structure, containing the cloned dname, or NULL if either d was NULL, not a dname, or if n >= label_count

Definition at line 160 of file dname.c.

References ldns_dname_label_count(), ldns_dname_new_frm_data(), ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), and LDNS_RDF_TYPE_DNAME.

ldns_rdf* ldns_dname_left_chop | ( | const ldns_rdf * | d | ) |

chop one label off the left side of a dname.

so wwww.nlnetlabs.nl, becomes nlnetlabs.nl This new name is a clone and must be freed with ldns_deep_free()

Parameters

  [in] | d | the dname to chop

Returns
  the remaining dname

Definition at line 189 of file dname.c.

References ldns_dname_label_count(), ldns_dname_new_frm_data(), ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), and LDNS_RDF_TYPE_DNAME.

uint8_t ldns_dname_label_count | ( | const ldns_rdf * | r | ) |

count the number of labels inside a LDNS_RDF_DNAME type rdf.

Parameters

  [in] | *r | the rdf

Returns
  the number of labels

Definition at line 214 of file dname.c.

References ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), and LDNS_RDF_TYPE_DNAME.

ldns_rdf* ldns_dname_new | ( | uint16_t | s,
|  | void * | data
| ) |  |

Create a new dname rdf from a string.

Parameters

  [in] | s | the size of the new dname
  [in] | *data | pointer to the actual data

Returns
  ldns_rdf*

Definition at line 250 of file dname.c.

References LDNS_MALLOC, ldns_rdf_set_data(), ldns_rdf_set_size(), ldns_rdf_set_type(), and LDNS_RDF_TYPE_DNAME.

ldns_rdf* ldns_dname_new_frm_str | ( | const char * | str | ) |

creates a new dname rdf from a string.

Parameters

  [in] | str | string to use

Returns
  ldns_rdf* or NULL in case of an error

Definition at line 265 of file dname.c.

References ldns_rdf_new_frm_str(), and LDNS_RDF_TYPE_DNAME.

ldns_rdf* ldns_dname_new_frm_data | ( | uint16_t | size,
|  | const void * | data
| ) |  |

Create a new dname rdf from data (the data is copied)

Parameters

  [in] | size | the size of the data
  [in] | *data | pointer to the actual data

Returns
  ldns_rdf*

Definition at line 271 of file dname.c.

References ldns_rdf_new_frm_data(), and LDNS_RDF_TYPE_DNAME.

void ldns_dname2canonical | ( | const ldns_rdf * | rdf | ) |

Put a dname into canonical fmt - ie.

lowercase it

Parameters

  [in] | rdf | the dname to lowercase

Returns
  void

Definition at line 277 of file dname.c.

References LDNS_DNAME_NORMALIZE, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), and LDNS_RDF_TYPE_DNAME.

bool ldns_dname_is_subdomain | ( | const ldns_rdf * | sub,
|  | const ldns_rdf * | parent
| ) |  |

test wether the name sub falls under parent (i.e.

is a subdomain of parent). This function will return false if the given dnames are equal.

Parameters

  [in] | sub | the name to test
  [in] | parent | the parent's name

Returns
  true if sub falls under parent, otherwise false

Definition at line 293 of file dname.c.

References ldns_dname2canonical(), ldns_dname_clone_from(), ldns_dname_label(), ldns_dname_label_count(), ldns_rdf_compare(), ldns_rdf_deep_free(), ldns_rdf_get_type(), and LDNS_RDF_TYPE_DNAME.

int ldns_dname_compare | ( | const ldns_rdf * | dname1,
|  | const ldns_rdf * | dname2
| ) |  |

Compares the two dname rdf's according to the algorithm for ordering in RFC4034 Section 6.

Parameters

  [in] | dname1 | First dname rdf to compare
  [in] | dname2 | Second dname rdf to compare

Returns
  -1 if dname1 comes before dname2, 1 if dname1 comes after dname2, and 0 if they are equal.

Definition at line 356 of file dname.c.

References ldns_dname_label_count(), LDNS_DNAME_NORMALIZE, ldns_rdf_data(), ldns_rdf_get_type(), and LDNS_RDF_TYPE_DNAME.

int ldns_dname_is_wildcard | ( | const ldns_rdf * | dname | ) |

Check if dname is a wildcard, starts with *.

Parameters

  [in] | dname | the rdf to look in

Returns
  true if a wildcard, false if not.

Definition at line 453 of file dname.c.

References ldns_dname_label_count(), and ldns_rdf_data().

int ldns_dname_match_wildcard | ( | const ldns_rdf * | dname,
|  | const ldns_rdf * | wildcard
| ) |  |

Checks whether the dname matches the given wildcard.

Parameters

  [in] | dname | The dname to check
  [in] | wildcard | The wildcard to check with

Returns
  1 If the wildcard matches, OR if 'wildcard' is not a wildcard and the names are exactly the same 0 If the wildcard does not match, or if it is not a wildcard and the names are not the same

Definition at line 461 of file dname.c.

References ldns_dname_compare(), ldns_dname_is_subdomain(), ldns_dname_is_wildcard(), ldns_dname_left_chop(), and ldns_rdf_deep_free().

int ldns_dname_interval | ( | const ldns_rdf * | prev,
|  | const ldns_rdf * | middle,
|  | const ldns_rdf * | next
| ) |  |

check if middle lays in the interval defined by prev and next prev <= middle < next.

This is usefull for nsec checking

Parameters

  [in] | prev | the previous dname
  [in] | middle | the dname to check
  [in] | next | the next dname return 0 on error or unknown, -1 when middle is in the interval, +1 when not

Definition at line 485 of file dname.c.

References ldns_dname_compare(), ldns_rdf_get_type(), and LDNS_RDF_TYPE_DNAME.

bool ldns_dname_str_absolute | ( | const char * | dname_str | ) |

Checks whether the given dname string is absolute (i.e.

ends with a '.')

Parameters

  [in] | *dname_str | a string representing the dname

Returns
  true or false

Definition at line 515 of file dname.c.

bool ldns_dname_absolute | ( | const ldns_rdf * | dname | ) |

Checks whether the given dname is absolute (i.e.

ends with a '.')

Parameters

  [in] | *dname | a rdf representing the dname

Returns
  true or false

Definition at line 544 of file dname.c.

References ldns_dname_str_absolute(), LDNS_FREE, and ldns_rdf2str().

ldns_rdf* ldns_dname_label | ( | const ldns_rdf * | rdf,
|  | uint8_t | labelpos
| ) |  |

look inside the rdf and if it is an LDNS_RDF_TYPE_DNAME try and retrieve a specific label.

The labels are numbered starting from 0 (left most).

Parameters

  [in] | rdf | the rdf to look in
  [in] | labelpos | return the label with this number

Returns
  a ldns_rdf* with the label as name or NULL on error

Definition at line 556 of file dname.c.

References LDNS_FREE, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_new(), ldns_rdf_size(), LDNS_RDF_TYPE_DNAME, and LDNS_XMALLOC.