summaryrefslogtreecommitdiff
path: root/src/common/ip.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/ip.hpp')
-rw-r--r--src/common/ip.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/common/ip.hpp b/src/common/ip.hpp
index e67056c..aceb765 100644
--- a/src/common/ip.hpp
+++ b/src/common/ip.hpp
@@ -21,6 +21,8 @@
#include "sanity.hpp"
+#include <netinet/in.h>
+
#include "extract.hpp"
#include "strings.hpp"
@@ -53,6 +55,17 @@ public:
IP4Address(const uint8_t (&a)[4])
: _addr{a[0], a[1], a[2], a[3]}
{}
+ explicit
+ IP4Address(struct in_addr addr)
+ {
+ static_assert(sizeof(addr) == sizeof(_addr), "4 bytes");
+ *this = IP4Address(reinterpret_cast<const uint8_t (&)[4]>(addr));
+ }
+ explicit
+ operator struct in_addr() const
+ {
+ return reinterpret_cast<const struct in_addr&>(_addr);
+ }
constexpr friend
IP4Address operator & (IP4Address l, IP4Address r)