def set_qname(qname, write_PTR_to_qtype_if_ip = true)
is_ipv4_addr_string = qname.is_a?(String) && IPv4::Regex.match(qname)
is_ipv6_addr_string = qname.is_a?(String) && IPv6::Regex.match(qname)
is_ip_addr_string = is_ipv4_addr_string || is_ipv6_addr_string
is_ip_addr = [IPv4, IPv6].any? { |klass| qname.is_a?(klass) }
if is_ipv4_addr_string
@qname = IPv4.create(qname).to_name
elsif is_ipv6_addr_string
@qname = IPv6.create(qname).to_name
else
@qname = Name.create(qname)
end
if write_PTR_to_qtype_if_ip && (is_ip_addr || is_ip_addr_string)
@qtype = Types.PTR
end
@qname.absolute = true
end