DNSName objects

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

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

dnsdist 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 = newDNSName("example.com")
if myname:isPartOf(name2) then -- prints "it is"
  print('it is')

Functions and methods of a DNSName

newDNSName(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.

:chopOff() → bool

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

:countLabels() → int

Returns the number of DNSLabels in the name

:isPartOf(name) → bool

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

Parameters:name (DNSName) – The name to check against
:makeRelative(name) → DNSName

New in version 1.8.0.

Provided that the current name is part of the supplied name, returns a new DNSName composed only of the labels that are below the supplied name (ie making www.powerdns.com relative to powerdns.com would return only wwww) Otherwise an empty (unset) DNSName is returned.

Parameters:name (DNSName) – The name to make us relative against
:toDNSString() → string

Returns a wire format form of the DNSName, suitable for usage in SpoofRawAction().

:toString() → string
:tostring() → string

Returns a human-readable form of the DNSName.

:toStringNoDot() → string

New in version 1.8.0.

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

:wirelength() → int

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