]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce in6_addr_is_ipv4_mapped_address()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 18 May 2021 03:56:23 +0000 (12:56 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 7 Jun 2021 21:33:27 +0000 (06:33 +0900)
src/basic/in-addr-util.c
src/basic/in-addr-util.h

index 9d7e51f8fd758e30913fe9cb5ce7d4a24c56e104..9cc92a1c767bf83746bb2129ce75860a0857ac0d 100644 (file)
@@ -121,6 +121,12 @@ int in_addr_is_localhost(int family, const union in_addr_union *u) {
         return -EAFNOSUPPORT;
 }
 
+bool in6_addr_is_ipv4_mapped_address(const struct in6_addr *a) {
+        return a->s6_addr32[0] == 0 &&
+                a->s6_addr32[1] == 0 &&
+                a->s6_addr32[2] == htobe32(UINT32_C(0x0000ffff));
+}
+
 bool in4_addr_equal(const struct in_addr *a, const struct in_addr *b) {
         assert(a);
         assert(b);
index 906b3fe97e567b354883e3a4d86dc33f68fff896..f3ead91962315bb586809d6646e309aff27a1ceb 100644 (file)
@@ -58,6 +58,7 @@ int in_addr_is_localhost(int family, const union in_addr_union *u);
 
 bool in4_addr_is_local_multicast(const struct in_addr *a);
 bool in4_addr_is_non_local(const struct in_addr *a);
+bool in6_addr_is_ipv4_mapped_address(const struct in6_addr *a);
 
 bool in4_addr_equal(const struct in_addr *a, const struct in_addr *b);
 bool in6_addr_equal(const struct in6_addr *a, const struct in6_addr *b);