]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce in6_addr_is_link_local_all_nodes()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Sep 2020 06:33:56 +0000 (15:33 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 16 Sep 2020 15:04:22 +0000 (00:04 +0900)
src/basic/in-addr-util.c
src/basic/in-addr-util.h

index 8783ab3c9b00c08aa9720b78e304327ec017736f..ceb7b113d911003606a71edce80f70e283142821 100644 (file)
@@ -54,6 +54,16 @@ int in_addr_is_link_local(int family, const union in_addr_union *u) {
         return -EAFNOSUPPORT;
 }
 
+bool in6_addr_is_link_local_all_nodes(const struct in6_addr *a) {
+        assert(a);
+
+        /* ff02::1 */
+        return be32toh(a->s6_addr32[0]) == UINT32_C(0xff020000) &&
+                a->s6_addr32[1] == 0 &&
+                a->s6_addr32[2] == 0 &&
+                be32toh(a->s6_addr32[3]) == UINT32_C(0x00000001);
+}
+
 int in_addr_is_multicast(int family, const union in_addr_union *u) {
         assert(u);
 
index e5df2a8058b69b18d1836c27bb09f935417daabe..e22ca3b945d05331a1c78c5b8a8d81e52f3d49d2 100644 (file)
@@ -27,6 +27,7 @@ int in_addr_is_multicast(int family, const union in_addr_union *u);
 
 bool in4_addr_is_link_local(const struct in_addr *a);
 int in_addr_is_link_local(int family, const union in_addr_union *u);
+bool in6_addr_is_link_local_all_nodes(const struct in6_addr *a);
 
 bool in4_addr_is_localhost(const struct in_addr *a);
 int in_addr_is_localhost(int family, const union in_addr_union *u);