From: Yu Watanabe Date: Tue, 25 Oct 2022 21:36:39 +0000 (+0900) Subject: network: attach device to DHCP clients X-Git-Tag: v253-rc1~639^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b1dbdf0c260cafaf83bfa6ddabaa163c017f5cf;p=thirdparty%2Fsystemd.git network: attach device to DHCP clients The attached sd_device object will be used later. --- diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index c5bddb60fd9..e4005719d05 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1357,6 +1357,10 @@ static int dhcp4_configure(Link *link) { if (r < 0) return log_link_debug_errno(link, r, "DHCPv4 CLIENT: Failed to attach event to DHCPv4 client: %m"); + r = sd_dhcp_client_attach_device(link->dhcp_client, link->dev); + if (r < 0) + return log_link_debug_errno(link, r, "DHCPv4 CLIENT: Failed to attach device: %m"); + r = sd_dhcp_client_set_mac(link->dhcp_client, link->hw_addr.bytes, link->bcast_addr.length > 0 ? link->bcast_addr.bytes : NULL, diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index 789868c26aa..d6ec2333512 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -594,6 +594,10 @@ static int dhcp6_configure(Link *link) { if (r < 0) return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to attach event: %m"); + r = sd_dhcp6_client_attach_device(client, link->dev); + if (r < 0) + return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to attach device: %m"); + r = dhcp6_set_identifier(link, client); if (r < 0) return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to set identifier: %m"); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 00e4e451ef3..04e3432c948 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1410,6 +1410,18 @@ static int link_initialized(Link *link, sd_device *device) { * or sysattrs) may be outdated. */ device_unref_and_replace(link->dev, device); + if (link->dhcp_client) { + r = sd_dhcp_client_attach_device(link->dhcp_client, link->dev); + if (r < 0) + log_link_warning_errno(link, r, "Failed to attach device to DHCPv4 client, ignoring: %m"); + } + + if (link->dhcp6_client) { + r = sd_dhcp6_client_attach_device(link->dhcp6_client, link->dev); + if (r < 0) + log_link_warning_errno(link, r, "Failed to attach device to DHCPv6 client, ignoring: %m"); + } + r = link_set_sr_iov_ifindices(link); if (r < 0) log_link_warning_errno(link, r, "Failed to manage SR-IOV PF and VF ports, ignoring: %m");