mirror of
https://github.com/systemd/systemd.git
synced 2026-08-03 14:40:31 +00:00
in-addr-util: introduce in{4,6}_addr_is_multicast()
This commit is contained in:
committed by
Luca Boccassi
parent
9f0430b74b
commit
c7f46150bb
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user