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) -> bool
Performs 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) -> 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 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 |
---|