mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-26 09:57:26 +03:00
[networkd-ndisc] set IPv6LL address in DHCP client
Fix issue #3256 and probably #1982. Referenced link_acquire_ipv6_conf() in networkd-link.c.
This commit is contained in:
parent
35b132e8ad
commit
9243aa45fa
@ -157,6 +157,10 @@ static void ndisc_router_handler(sd_ndisc *nd, uint8_t flags, const struct in6_a
|
|||||||
if (flags & ND_RA_FLAG_MANAGED)
|
if (flags & ND_RA_FLAG_MANAGED)
|
||||||
dhcp6_request_address(link);
|
dhcp6_request_address(link);
|
||||||
|
|
||||||
|
r = sd_dhcp6_client_set_local_address(link->dhcp6_client, &link->ipv6ll_address);
|
||||||
|
if (r < 0 && r != -EBUSY)
|
||||||
|
return log_link_warning_errno(link, r, "Could not set IPv6LL address in DHCP client: %m");
|
||||||
|
|
||||||
r = sd_dhcp6_client_start(link->dhcp6_client);
|
r = sd_dhcp6_client_start(link->dhcp6_client);
|
||||||
if (r < 0 && r != -EBUSY)
|
if (r < 0 && r != -EBUSY)
|
||||||
log_link_warning_errno(link, r, "Starting DHCPv6 client on NDisc request failed: %m");
|
log_link_warning_errno(link, r, "Starting DHCPv6 client on NDisc request failed: %m");
|
||||||
@ -203,6 +207,10 @@ static void ndisc_handler(sd_ndisc *nd, int event, void *userdata) {
|
|||||||
case SD_NDISC_EVENT_TIMEOUT:
|
case SD_NDISC_EVENT_TIMEOUT:
|
||||||
dhcp6_request_address(link);
|
dhcp6_request_address(link);
|
||||||
|
|
||||||
|
r = sd_dhcp6_client_set_local_address(link->dhcp6_client, &link->ipv6ll_address);
|
||||||
|
if (r < 0 && r != -EBUSY)
|
||||||
|
return log_link_warning_errno(link, r, "Could not set IPv6LL address in DHCP client: %m");
|
||||||
|
|
||||||
r = sd_dhcp6_client_start(link->dhcp6_client);
|
r = sd_dhcp6_client_start(link->dhcp6_client);
|
||||||
if (r < 0 && r != -EBUSY)
|
if (r < 0 && r != -EBUSY)
|
||||||
log_link_warning_errno(link, r, "Starting DHCPv6 client after NDisc timeout failed: %m");
|
log_link_warning_errno(link, r, "Starting DHCPv6 client after NDisc timeout failed: %m");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user