network: dhcp4: reset counter only when the lease address is new

This commit is contained in:
Yu Watanabe
2020-09-04 09:05:45 +09:00
parent 4dd6a3aad5
commit 687b3bc6f4
+6 -1
View File
@@ -656,6 +656,7 @@ static int configure_dhcpv4_duplicate_address_detection(Link *link) {
static int dhcp4_start_acd(Link *link) {
union in_addr_union addr;
struct in_addr old;
int r;
if (!link->network->dhcp_send_decline)
@@ -672,6 +673,10 @@ static int dhcp4_start_acd(Link *link) {
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;
@@ -687,7 +692,7 @@ static int dhcp4_start_acd(Link *link) {
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;