diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-11-13 15:29:45 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-11-13 15:29:45 +0100 |
commit | a7e565d76a3cbf91b45389ba2327d5afeab7cd20 (patch) | |
tree | 93a920895e51d6e357795105f56f57b8328b0c76 /src | |
parent | b9e2f7eb00643f28390cedf883f516f4ba7193bb (diff) | |
parent | a56a2048f9592acc4934b9ce15d71bc7e1df1a17 (diff) |
Merge pull request #1882 from teg/networkd-dhcp6-fix
networkd: link - fix ipv6ll_gained() handling
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-network/sd-dhcp6-client.c | 4 | ||||
-rw-r--r-- | src/network/networkd-dhcp6.c | 3 | ||||
-rw-r--r-- | src/network/networkd-link.c | 7 |
3 files changed, 6 insertions, 8 deletions
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index e00ca2b00d..a443bb3a7a 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -259,12 +259,12 @@ int sd_dhcp6_client_set_request_option(sd_dhcp6_client *client, uint16_t option) int sd_dhcp6_client_get_lease(sd_dhcp6_client *client, sd_dhcp6_lease **ret) { assert_return(client, -EINVAL); - assert_return(ret, -EINVAL); if (!client->lease) return -ENOMSG; - *ret = client->lease; + if (ret) + *ret = client->lease; return 0; } diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index 3ec9b84a93..d407b31b78 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -131,7 +131,8 @@ static void dhcp6_handler(sd_dhcp6_client *client, int event, void *userdata) { case SD_DHCP6_CLIENT_EVENT_STOP: case SD_DHCP6_CLIENT_EVENT_RESEND_EXPIRE: case SD_DHCP6_CLIENT_EVENT_RETRANS_MAX: - log_link_warning(link, "DHCPv6 lease lost"); + if (sd_dhcp6_client_get_lease(client, NULL) >= 0) + log_link_warning(link, "DHCPv6 lease lost"); link->dhcp6_configured = false; break; diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index c37532bb73..a415035887 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -506,9 +506,6 @@ static int link_stop_clients(Link *link) { assert(link->manager); assert(link->manager->event); - if (!link->network) - return 0; - if (link->dhcp_client) { k = sd_dhcp_client_stop(link->dhcp_client); if (k < 0) @@ -2485,7 +2482,7 @@ int link_ipv6ll_gained(Link *link) { link->ipv6ll_address = true; link_check_ready(link); - if (link->network) { + if (!IN_SET(link->state, LINK_STATE_PENDING, LINK_STATE_PENDING, LINK_STATE_UNMANAGED, LINK_STATE_FAILED)) { r = link_acquire_ipv6_conf(link); if (r < 0) { link_enter_failed(link); @@ -2501,7 +2498,7 @@ static int link_carrier_gained(Link *link) { assert(link); - if (link->network) { + if (!IN_SET(link->state, LINK_STATE_PENDING, LINK_STATE_PENDING, LINK_STATE_UNMANAGED, LINK_STATE_FAILED)) { r = link_acquire_conf(link); if (r < 0) { link_enter_failed(link); |