network: update MAC address in IPv4ACD client for DHCP4

This commit is contained in:
Yu Watanabe 2020-10-14 15:29:47 +09:00
parent a7df5cae54
commit 5431227400

View file

@ -651,6 +651,34 @@ static int dhcp4_configure_dad(Link *link) {
return 0;
}
static int dhcp4_dad_update_mac(Link *link) {
bool running;
int r;
assert(link);
if (!link->dhcp_acd)
return 0;
running = sd_ipv4acd_is_running(link->dhcp_acd);
r = sd_ipv4acd_stop(link->dhcp_acd);
if (r < 0)
return r;
r = sd_ipv4acd_set_mac(link->dhcp_acd, &link->mac);
if (r < 0)
return r;
if (running) {
r = sd_ipv4acd_start(link->dhcp_acd, true);
if (r < 0)
return r;
}
return 0;
}
static int dhcp4_start_acd(Link *link) {
union in_addr_union addr;
struct in_addr old;
@ -1462,6 +1490,10 @@ int dhcp4_update_mac(Link *link) {
if (r < 0)
return r;
r = dhcp4_dad_update_mac(link);
if (r < 0)
return r;
return 0;
}