]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce PTR_TO_IN4_ADDR() and IN4_ADDR_TO_PTR()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 8 Jul 2023 03:23:27 +0000 (12:23 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 30 Jul 2023 14:15:53 +0000 (23:15 +0900)
These should be useful when an IPv4 address is used as a key of a
hashmap.

src/basic/in-addr-util.h

index 95e73162b13f9c0429b42ad117f468be2930d560..12720ca92f2448b3d04b314fb047d2bfa0932cf5 100644 (file)
@@ -195,6 +195,16 @@ extern const struct hash_ops in_addr_data_hash_ops_free;
 extern const struct hash_ops in6_addr_hash_ops;
 extern const struct hash_ops in6_addr_hash_ops_free;
 
+static inline void PTR_TO_IN4_ADDR(const void *p, struct in_addr *ret) {
+        assert(ret);
+        ret->s_addr = (uint32_t) ((uintptr_t) p);
+}
+
+static inline void* IN4_ADDR_TO_PTR(const struct in_addr *a) {
+        assert(a);
+        return (void*) ((uintptr_t) a->s_addr);
+}
+
 #define IPV4_ADDRESS_FMT_STR     "%u.%u.%u.%u"
 #define IPV4_ADDRESS_FMT_VAL(address)              \
         be32toh((address).s_addr) >> 24,           \