summaryrefslogtreecommitdiff
path: root/src/network/networkd-ipv6ll.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-08-02 03:33:21 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-08-02 03:35:00 +0900
commitbd7e0a3f1cd28fd00d7c21bea766bffb42917c36 (patch)
treeabb0f2528a03cf0d6182d490c0a30685ed9c1858 /src/network/networkd-ipv6ll.c
parent5fb5fae933132431d7ca5dd2865f42e1907e6fae (diff)
downloadsystemd-bd7e0a3f1cd28fd00d7c21bea766bffb42917c36.tar.gz
network: make link_may_have_ipv6ll() optionally check Multicast= setting
Fixes the IPv6LL issue in #23197.
Diffstat (limited to 'src/network/networkd-ipv6ll.c')
-rw-r--r--src/network/networkd-ipv6ll.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/network/networkd-ipv6ll.c b/src/network/networkd-ipv6ll.c
index 9b85989701..32229a3fc7 100644
--- a/src/network/networkd-ipv6ll.c
+++ b/src/network/networkd-ipv6ll.c
@@ -38,7 +38,7 @@ bool link_ipv6ll_enabled(Link *link) {
return link->network->link_local & ADDRESS_FAMILY_IPV6;
}
-bool link_may_have_ipv6ll(Link *link) {
+bool link_may_have_ipv6ll(Link *link, bool check_multicast) {
assert(link);
/*
@@ -62,6 +62,9 @@ bool link_may_have_ipv6ll(Link *link) {
if (!link->network)
return false;
+ if (check_multicast && !FLAGS_SET(link->flags, IFF_MULTICAST) && link->network->multicast <= 0)
+ return false;
+
ORDERED_HASHMAP_FOREACH(a, link->network->addresses_by_section) {
if (a->family != AF_INET6)
continue;