return link->sysctl_ipv6_enabled;
}
+static bool link_is_can(Link *link) {
+ assert(link);
+
+ return link->iftype == ARPHRD_CAN ||
+ STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan");
+}
+
static bool link_dhcp6_enabled(Link *link) {
assert(link);
if (link->network->bond)
return false;
- if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"))
+ if (link_is_can(link))
return false;
if (link_sysctl_ipv6_enabled(link) == 0)
if (link->network->bond)
return false;
- if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"))
+ if (link_is_can(link))
return false;
return link->network->dhcp & ADDRESS_FAMILY_IPV4;
if (link->network->bond)
return false;
- if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"))
+ if (link_is_can(link))
return false;
return link->network->dhcp_server;
if (!link->network)
return false;
+ if (link_is_can(link))
+ return false;
+
if (STRPTR_IN_SET(link->kind,
"vrf", "wireguard", "ipip", "gre", "ip6gre","ip6tnl", "sit", "vti",
- "vti6", "can", "vcan", "vxcan", "nlmon", "xfrm"))
+ "vti6", "nlmon", "xfrm"))
return false;
/* L3 or L3S mode do not support ARP. */
if (!link->network)
return false;
- if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "can", "vcan", "vxcan", "nlmon"))
+ if (link_is_can(link))
+ return false;
+
+ if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "nlmon"))
return false;
if (link->network->bond)
if (link_sysctl_ipv6_enabled(link) == 0)
return false;
- if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"))
+ if (link_is_can(link))
return false;
/* DHCPv6 client will not be started if no IPv6 link-local address is configured. */
assert(link->network);
assert(link->state == LINK_STATE_INITIALIZED);
- if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"))
+ if (link_is_can(link))
return link_configure_can(link);
/* Drop foreign config, but ignore loopback or critical devices.