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 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
DNSName¶newDN(name) → DNSName¶Returns the DNSName object of name.
| Parameters: | name (string) – The name to create a DNSName for |
|---|
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) -> boolPerforms a comparison 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) -> DNSNameReturns 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) -> boolReturns true if the DNSName is part of the DNS tree of name.
| Parameters: | name (DNSName) – The name to check against |
|---|
DNSName:toString() -> stringReturns a human-readable form of the DNSName
DNSName:toStringNoDot() -> stringReturns a human-readable form of the DNSName without the trailing dot
DNSName:chopOff() -> boolRemoves the left-most label and returns true.
false is returned if no label was removed
DNSName:countLabels() -> intReturns the number of DNSLabels in the name
DNSName:wireLength() -> intReturns 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() -> intReturns the number of labels of the DNSName
DNSName::equal(name) -> boolPerform a comparison 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 |
|---|