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

:wirelength() → int

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