]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce in4_addr_is_local_multicast()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Sep 2020 06:34:22 +0000 (15:34 +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 ceb7b113d911003606a71edce80f70e283142821..c102504fdd5b2046044b30144901561936a2cf83 100644 (file)
@@ -76,6 +76,12 @@ int in_addr_is_multicast(int family, const union in_addr_union *u) {
         return -EAFNOSUPPORT;
 }
 
+bool in4_addr_is_local_multicast(const struct in_addr *a) {
+        assert(a);
+
+        return (be32toh(a->s_addr) & UINT32_C(0xffffff00)) == UINT32_C(0xe0000000);
+}
+
 bool in4_addr_is_localhost(const struct in_addr *a) {
         assert(a);
 
index e22ca3b945d05331a1c78c5b8a8d81e52f3d49d2..45c93a0056fcfcda5f7d7a48659127022696eede 100644 (file)
@@ -32,6 +32,7 @@ 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);
 
+bool in4_addr_is_local_multicast(const struct in_addr *a);
 bool in4_addr_is_non_local(const struct in_addr *a);
 
 bool in4_addr_equal(const struct in_addr *a, const struct in_addr *b);