if (!link_dhcp4_enabled(link))
return 0;
- if (!link->dhcp_client) {
- r = sd_dhcp_client_new(&link->dhcp_client, link->network->dhcp_anonymize);
- if (r < 0)
- return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to allocate DHCP4 client: %m");
+ if (link->dhcp_client)
+ return -EBUSY; /* Already configured. */
- r = sd_dhcp_client_attach_event(link->dhcp_client, link->manager->event, 0);
- if (r < 0)
- return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to attach event to DHCP4 client: %m");
- }
+ r = sd_dhcp_client_new(&link->dhcp_client, link->network->dhcp_anonymize);
+ if (r < 0)
+ return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to allocate DHCP4 client: %m");
+
+ r = sd_dhcp_client_attach_event(link->dhcp_client, link->manager->event, 0);
+ if (r < 0)
+ return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to attach event to DHCP4 client: %m");
r = sd_dhcp_client_set_mac(link->dhcp_client,
link->hw_addr.addr.bytes,
if (!link_ipv4ll_enabled(link))
return 0;
- if (!link->ipv4ll) {
- r = sd_ipv4ll_new(&link->ipv4ll);
- if (r < 0)
- return r;
+ if (link->ipv4ll)
+ return -EBUSY;
- r = sd_ipv4ll_attach_event(link->ipv4ll, link->manager->event, 0);
- if (r < 0)
- return r;
- }
+ r = sd_ipv4ll_new(&link->ipv4ll);
+ if (r < 0)
+ return r;
+
+ r = sd_ipv4ll_attach_event(link->ipv4ll, link->manager->event, 0);
+ if (r < 0)
+ return r;
if (link->sd_device &&
net_get_unique_predictable_data(link->sd_device, true, &seed) >= 0) {
if (!link_lldp_rx_enabled(link))
return 0;
- if (!link->lldp) {
- r = sd_lldp_new(&link->lldp);
- if (r < 0)
- return r;
+ if (link->lldp)
+ return -EBUSY;
- r = sd_lldp_attach_event(link->lldp, link->manager->event, 0);
- if (r < 0)
- return r;
- }
+ r = sd_lldp_new(&link->lldp);
+ if (r < 0)
+ return r;
+
+ r = sd_lldp_attach_event(link->lldp, link->manager->event, 0);
+ if (r < 0)
+ return r;
r = sd_lldp_set_ifindex(link->lldp, link->ifindex);
if (r < 0)