The attached sd_device object will be used later.
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,
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");
* 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");