]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce in{4,6}_addr_is_multicast()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 23 Feb 2024 04:12:57 +0000 (13:12 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Sun, 25 Feb 2024 11:43:37 +0000 (11:43 +0000)
src/basic/in-addr-util.c
src/basic/in-addr-util.h

index 8bd9c75d59605be3389a44866d5f85a178d8fbd8..82c8ff9a2d4cae0942defcd77ff469bddf8e789f 100644 (file)
@@ -91,14 +91,26 @@ bool in6_addr_is_link_local_all_nodes(const struct in6_addr *a) {
                 be32toh(a->s6_addr32[3]) == UINT32_C(0x00000001);
 }
 
+bool in4_addr_is_multicast(const struct in_addr *a) {
+        assert(a);
+
+        return IN_MULTICAST(be32toh(a->s_addr));
+}
+
+bool in6_addr_is_multicast(const struct in6_addr *a) {
+        assert(a);
+
+        return IN6_IS_ADDR_MULTICAST(a);
+}
+
 int in_addr_is_multicast(int family, const union in_addr_union *u) {
         assert(u);
 
         if (family == AF_INET)
-                return IN_MULTICAST(be32toh(u->in.s_addr));
+                return in4_addr_is_multicast(&u->in);
 
         if (family == AF_INET6)
-                return IN6_IS_ADDR_MULTICAST(&u->in6);
+                return in6_addr_is_multicast(&u->in6);
 
         return -EAFNOSUPPORT;
 }
index 9fae3cae453ffb0bd6e0a92b3cadc59c257e5ca5..5c820c6ec6ac23aa0aba0ce2a80ee2b86b615af9 100644 (file)
@@ -40,6 +40,8 @@ static inline bool in_addr_data_is_set(const struct in_addr_data *a) {
         return in_addr_data_is_null(a);
 }
 
+bool in4_addr_is_multicast(const struct in_addr *a);
+bool in6_addr_is_multicast(const struct in6_addr *a);
 int in_addr_is_multicast(int family, const union in_addr_union *u);
 
 bool in4_addr_is_link_local(const struct in_addr *a);