/build/ldns-VHZYR1/ldns-1.9.2/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
ldns_status | ldns_dname_cat (ldns_rdf *rd1, const ldns_rdf *rd2)
| concatenates rd2 after rd1 (rd2 is copied, rd1 is modified)
ldns_rdf * | ldns_dname_reverse (const ldns_rdf *dname)
| Returns a clone of the given dname with the labels reversed.
ldns_rdf * | ldns_dname_clone_from (const ldns_rdf *d, uint16_t n)
| Clones the given dname from the nth label on.
ldns_rdf * | ldns_dname_left_chop (const ldns_rdf *d)
| chop one label off the left side of a dname.
uint8_t | ldns_dname_label_count (const ldns_rdf *r)
| count the number of labels inside a LDNS_RDF_DNAME type rdf.
ldns_rdf * | ldns_dname_new (uint16_t s, void *d)
| Create a new dname rdf from a string.
ldns_rdf * | ldns_dname_new_frm_str (const char *str)
| creates a new dname rdf from a string.
ldns_rdf * | ldns_dname_new_frm_data (uint16_t size, const void *data)
| Create a new dname rdf from data (the data is copied).
void | ldns_dname2canonical (const ldns_rdf *rd)
| Put a dname into canonical fmt - ie.
signed char | ldns_dname_is_subdomain (const ldns_rdf *sub, const ldns_rdf *parent)
| test whether the name sub falls under parent (i.e.
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.
int | ldns_dname_is_wildcard (const ldns_rdf *dname)
| Check if dname is a wildcard, starts with *.
int | ldns_dname_match_wildcard (const ldns_rdf *dname, const ldns_rdf *wildcard)
| Checks whether the dname matches the given wildcard.
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.
signed char | ldns_dname_str_absolute (const char *dname_str)
| Checks whether the given dname string is absolute (i.e.
signed char | ldns_dname_absolute (const ldns_rdf *rdf)
| Checks whether the given dname is absolute (i.e.
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.

## Function Documentation

## ldns_dname_cat_clone()

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_dname_cat()

ldns_status ldns_dname_cat | ( | ldns_rdf * | rd1,
|  | const 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_dname_reverse()

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_dname_clone_from()

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_dname_left_chop()

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.

## ldns_dname_label_count()

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_dname_new()

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

Create a new dname rdf from a string.

The data pointer is stored in the rdf, not a copy of the data

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_dname_new_frm_str()

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 268 of file dname.c.

References ldns_rdf_new_frm_str(), and LDNS_RDF_TYPE_DNAME.

## ldns_dname_new_frm_data()

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 274 of file dname.c.

References ldns_rdf_new_frm_data(), and LDNS_RDF_TYPE_DNAME.

## ldns_dname2canonical()

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 280 of file dname.c.

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

## ldns_dname_is_subdomain()

signed char ldns_dname_is_subdomain | ( | const ldns_rdf * | sub,
|  | const ldns_rdf * | parent )

test whether 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 296 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.

## ldns_dname_compare()

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 359 of file dname.c.

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

## ldns_dname_is_wildcard()

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 456 of file dname.c.

References ldns_dname_label_count(), and ldns_rdf_data().

## ldns_dname_match_wildcard()

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 464 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().

## ldns_dname_interval()

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 useful 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 488 of file dname.c.

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

## ldns_dname_str_absolute()

signed char 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 518 of file dname.c.

## ldns_dname_absolute()

signed char 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 548 of file dname.c.

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

## ldns_dname_label()

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