summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-12-09 16:38:02 +0900
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-12-09 15:04:43 +0100
commit71df07760ed58c8ba4a622f2aa83a16d99e264fc (patch)
treef1a96438e97493dbde3b71874062e964b8cf01c0
parent014e7dffd4d28b5827cd044546b216367126b17b (diff)
downloadsystemd-71df07760ed58c8ba4a622f2aa83a16d99e264fc.tar.gz
network: sd-ipv4ll and sd-ipv4acd only support ethernet interfaces
The deny list in link_ipv4ll_enabled() are mostly non-ethernet type, whose link->iftype are not ARPHRD_ETHER, e.g. ARPHRD_NONE for bareudp, ARPHRD_WIREGURAD for wireguard, ARPHRD_GRE for gre, and so on. Only the exception is vrf, which is ARPHRD_ETHER, but seems not to support ARP.
-rw-r--r--src/network/networkd-link.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 956e2984bc..7bc391d68d 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -87,9 +87,12 @@ bool link_ipv4ll_enabled(Link *link) {
if (ether_addr_is_null(&link->hw_addr.ether))
return false;
- if (STRPTR_IN_SET(link->kind,
- "vrf", "wireguard", "ipip", "gre", "ip6gre","ip6tnl", "sit", "vti",
- "vti6", "nlmon", "xfrm", "bareudp"))
+ /* ARPHRD_INFINIBAND seems to potentially support IPv4LL.
+ * But currently sd-ipv4ll and sd-ipv4acd only support ARPHRD_ETHER. */
+ if (link->iftype != ARPHRD_ETHER)
+ return false;
+
+ if (streq_ptr(link->kind, "vrf"))
return false;
/* L3 or L3S mode do not support ARP. */