diff --git a/include/ircd/net/ipport.h b/include/ircd/net/ipport.h index 386ccc4d5..186808662 100644 --- a/include/ircd/net/ipport.h +++ b/include/ircd/net/ipport.h @@ -74,6 +74,8 @@ struct ircd::net::ipport ipport(const uint32_t &ip, const uint16_t &port); ipport(const uint128_t &ip, const uint16_t &port); + ipport(const rfc1035::record::A &, const uint16_t &port); + ipport(const rfc1035::record::AAAA &, const uint16_t &port); ipport(const boost::asio::ip::address &, const uint16_t &port); ipport(const string_view &ip, const uint16_t &port); ipport(const string_view &ip, const string_view &port); diff --git a/ircd/net.cc b/ircd/net.cc index 01e77153b..72ac03b4a 100644 --- a/ircd/net.cc +++ b/ircd/net.cc @@ -2800,6 +2800,24 @@ ircd::net::ipport::ipport(const string_view &ip, { } +ircd::net::ipport::ipport(const rfc1035::record::A &rr, + const uint16_t &port) +:ipport +{ + rr.ip4, port +} +{ +} + +ircd::net::ipport::ipport(const rfc1035::record::AAAA &rr, + const uint16_t &port) +:ipport +{ + rr.ip6, port +} +{ +} + ircd::net::ipport::ipport(const boost::asio::ip::address &address, const uint16_t &port) {