From: Yu Watanabe Date: Tue, 15 Sep 2020 06:34:22 +0000 (+0900) Subject: in-addr-util: introduce in4_addr_is_local_multicast() X-Git-Tag: v247-rc1~221^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ccea2448652cddb2d9ff492e1870432461128c7c;p=thirdparty%2Fsystemd.git in-addr-util: introduce in4_addr_is_local_multicast() --- diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index ceb7b113d91..c102504fdd5 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -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); diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h index e22ca3b945d..45c93a0056f 100644 --- a/src/basic/in-addr-util.h +++ b/src/basic/in-addr-util.h @@ -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);