static int dhcp4_start_acd(Link *link) {
union in_addr_union addr;
+ struct in_addr old;
int r;
if (!link->network->dhcp_send_decline)
if (r < 0)
return r;
+ r = sd_ipv4acd_get_address(link->network->dhcp_acd, &old);
+ if (r < 0)
+ return r;
+
r = sd_ipv4acd_set_address(link->network->dhcp_acd, &addr.in);
if (r < 0)
return r;
log_link_debug(link, "Starting IPv4ACD client. Probing DHCPv4 address %s", strna(pretty));
}
- r = sd_ipv4acd_start(link->network->dhcp_acd, true);
+ r = sd_ipv4acd_start(link->network->dhcp_acd, !in4_addr_equal(&addr.in, &old));
if (r < 0)
return r;