24 #ifndef SEASTAR_MODULE
26 #include <sys/types.h>
27 #include <netinet/in.h>
32 #include <seastar/core/future.hh>
33 #include <seastar/core/sstring.hh>
34 #include <seastar/util/modules.hh>
39 SEASTAR_MODULE_EXPORT_BEGIN
46 using invalid_argument::invalid_argument;
51 enum class family : sa_family_t {
52 INET = AF_INET, INET6 = AF_INET6
62 uint32_t _scope = invalid_scope;
64 static constexpr uint32_t invalid_scope = std::numeric_limits<uint32_t>::max();
69 inet_address(::in6_addr i, uint32_t scope = invalid_scope) noexcept;
87 family in_family()
const noexcept {
91 bool is_ipv6()
const noexcept {
92 return _in_family == family::INET6;
94 bool is_ipv4()
const noexcept {
95 return _in_family == family::INET;
98 size_t size()
const noexcept;
99 const void * data()
const noexcept;
101 uint32_t scope()
const noexcept {
106 operator ::in_addr()
const;
107 operator ::in6_addr()
const noexcept;
119 static std::optional<inet_address> parse_numerical(
const sstring&);
121 bool is_loopback()
const noexcept;
122 bool is_addr_any()
const noexcept;
125 std::ostream& operator<<(std::ostream&,
const inet_address&);
126 std::ostream& operator<<(std::ostream&,
const inet_address::family&);
128 SEASTAR_MODULE_EXPORT_END
133 SEASTAR_MODULE_EXPORT
140 #if FMT_VERSION >= 90000
141 template <>
struct fmt::formatter<
seastar::net::inet_address> : fmt::ostream_formatter {};
142 template <>
struct fmt::formatter<
seastar::net::inet_address::family> : fmt::ostream_formatter {};
A representation of a possibly not-yet-computed value.
Definition: future.hh:1238
Definition: inet_address.hh:49
Definition: inet_address.hh:44
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
Definition: ipv4_address.hh:35
Definition: ipv6_address.hh:34