From d6ba60220dadabe552f9f7dc2b4fc34b51cf4d32 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 15 Jan 2023 00:31:22 +0200 Subject: [PATCH] Add some useful factory functions to InetAddr and Inet6Addr --- source/net/inet.cpp | 16 ++++++++++++++++ source/net/inet.h | 3 +++ source/net/inet6.cpp | 15 +++++++++++++++ source/net/inet6.h | 3 +++ 4 files changed, 37 insertions(+) diff --git a/source/net/inet.cpp b/source/net/inet.cpp index f44b1c0..17546e8 100644 --- a/source/net/inet.cpp +++ b/source/net/inet.cpp @@ -16,6 +16,22 @@ InetAddr::InetAddr(const SysAddr &sa) port = ntohs(sai.sin_port); } +InetAddr InetAddr::wildcard(unsigned port) +{ + InetAddr addr; + addr.port = port; + return addr; +} + +InetAddr InetAddr::localhost(unsigned port) +{ + InetAddr addr; + addr.addr[0] = 127; + addr.addr[3] = 1; + addr.port = port; + return addr; +} + SockAddr::SysAddr InetAddr::to_sys() const { SysAddr sa; diff --git a/source/net/inet.h b/source/net/inet.h index fb76d7e..d970559 100644 --- a/source/net/inet.h +++ b/source/net/inet.h @@ -20,6 +20,9 @@ public: InetAddr() = default; InetAddr(const SysAddr &); + static InetAddr wildcard(unsigned); + static InetAddr localhost(unsigned); + InetAddr *copy() const override { return new InetAddr(*this); } SysAddr to_sys() const override; diff --git a/source/net/inet6.cpp b/source/net/inet6.cpp index da584d4..1b8fc39 100644 --- a/source/net/inet6.cpp +++ b/source/net/inet6.cpp @@ -16,6 +16,21 @@ Inet6Addr::Inet6Addr(const SysAddr &sa) port = htons(sai6.sin6_port); } +Inet6Addr Inet6Addr::wildcard(unsigned port) +{ + Inet6Addr addr; + addr.port = port; + return addr; +} + +Inet6Addr Inet6Addr::localhost(unsigned port) +{ + Inet6Addr addr; + addr.addr[15] = 1; + addr.port = port; + return addr; +} + SockAddr::SysAddr Inet6Addr::to_sys() const { SysAddr sa; diff --git a/source/net/inet6.h b/source/net/inet6.h index 38cba33..f6b0cf4 100644 --- a/source/net/inet6.h +++ b/source/net/inet6.h @@ -17,6 +17,9 @@ public: Inet6Addr() = default; Inet6Addr(const SysAddr &); + static Inet6Addr wildcard(unsigned); + static Inet6Addr localhost(unsigned); + Inet6Addr *copy() const override { return new Inet6Addr(*this); } SysAddr to_sys() const override; -- 2.43.0