]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: introduce in6_addr_hash_ops
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 May 2019 03:26:59 +0000 (12:26 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 May 2019 03:27:27 +0000 (12:27 +0900)
src/basic/in-addr-util.c
src/basic/in-addr-util.h

index 1d5c6412b5ba50bcd587a3e2dba92acb6b84abb9..c1fab51b5e43db651d29dce01077d269bb98d862 100644 (file)
@@ -738,3 +738,15 @@ static int in_addr_data_compare_func(const struct in_addr_data *x, const struct
 }
 
 DEFINE_HASH_OPS(in_addr_data_hash_ops, struct in_addr_data, in_addr_data_hash_func, in_addr_data_compare_func);
+
+static void in6_addr_hash_func(const struct in6_addr *addr, struct siphash *state) {
+        assert(addr);
+
+        siphash24_compress(addr, sizeof(*addr), state);
+}
+
+static int in6_addr_compare_func(const struct in6_addr *a, const struct in6_addr *b) {
+        return memcmp(a, b, sizeof(*a));
+}
+
+DEFINE_HASH_OPS(in6_addr_hash_ops, struct in6_addr, in6_addr_hash_func, in6_addr_compare_func);
index a6a685b9188b5084e1b699a0afbb535cf77a1c41..2ca7f4b32fc88b5d8a9ecd2674661839821f4015 100644 (file)
@@ -72,3 +72,4 @@ static inline size_t FAMILY_ADDRESS_SIZE(int family) {
 #define IN_ADDR_NULL ((union in_addr_union) { .in6 = {} })
 
 extern const struct hash_ops in_addr_data_hash_ops;
+extern const struct hash_ops in6_addr_hash_ops;