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')
end
Functions and methods of a DNSName¶
- 
newDNSName(name) → DNSName¶
- Returns the - DNSNameobject of- name.- Parameters: - name (string) – The name to create a DNSName for 
- 
class DNSName¶
- A - DNSNameobject 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.- falseis 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().
 - 
: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. 
 
- 
