From: Yu Watanabe Date: Tue, 15 Sep 2020 06:33:56 +0000 (+0900) Subject: in-addr-util: introduce in6_addr_is_link_local_all_nodes() X-Git-Tag: v247-rc1~221^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5643cfc0d94fcc3865f35848b9eb35b89660c817;p=thirdparty%2Fsystemd.git in-addr-util: introduce in6_addr_is_link_local_all_nodes() --- diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index 8783ab3c9b0..ceb7b113d91 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -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); diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h index e5df2a8058b..e22ca3b945d 100644 --- a/src/basic/in-addr-util.h +++ b/src/basic/in-addr-util.h @@ -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);