DNSName objects

A DNSName object represents a name in the DNS. It has serveral functions that can manipulate it without conversions to strings. Creating a DNSName is done with the newDN():

myname = newDN("www.example.com")

PowerDNS will complain loudly if the name is invalid (e.g. too long, dot in the wrong place).

The myname variable has several functions to get information from it

print(myname:countLabels()) -- prints "3"
print(myname:wireLength()) -- prints "17"
name2 = newDN("example.com")
if myname:isPartOf(name2) then -- prints "it is"
  print('it is')
end

Functions and methods of a DNSName

newDN(name) → DNSName

Returns the DNSName object of name.

Parameters:name (string) – The name to create a DNSName for
class DNSName

A DNSName object represents a name in the DNS. It is returned by several functions and has several functions to programmatically interact with it.

DNSName:canonCompare(name) -> bool

Performs a comparaison of DNS names in canonical order. Returns true if the DNSName comes before name. See https://tools.ietf.org/html/rfc4034#section-6

Parameters:name (DNSName) – The name to compare to
DNSName:makeRelative(name) -> DNSName

Returns a new DNSName that is relative to name

name = newDN("bb.a.example.com.")
parent = newDN("example.com.")
rel = name:makeRelative(parent) -- contains DNSName("bb.a.")
Parameters:name (DNSName) – The name to compare to
DNSName:isPartOf(name) -> bool

Returns true if the DNSName is part of the DNS tree of name.

Parameters:name (DNSName) – The name to check against
DNSName:toString() -> string

Returns a human-readable form of the DNSName

DNSName:toStringNoDot() -> string

Returns a human-readable form of the DNSName without the trailing dot

DNSName:chopOff() -> bool

Removes the left-most label and returns true. false is returned if no label was removed

DNSName:countLabels() -> int

Returns the number of DNSLabels in the name

DNSName:wireLength() -> int

Returns the length in bytes of the DNSName as it would be on the wire.

DNSName::getRawLabels() -> [ string ]

Returns a table that contains the raw labels of the DNSName

DNSName::countLabels() -> int

Returns the number of labels of the DNSName

DNSName::equal(name) -> bool

Perform a comparaison of the DNSName to the given name. You can also compare directly two DNSName objects using the == operator

Parameters:name (string) – The name to compare to