From: Tom Gundersen Date: Fri, 13 Nov 2015 14:05:58 +0000 (+0100) Subject: networkd: check explicit state rather than link->network X-Git-Tag: v228~33^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a56a2048f9592acc4934b9ce15d71bc7e1df1a17;p=thirdparty%2Fsystemd.git networkd: check explicit state rather than link->network When deserializing we can now have an attached network without the various clients yet having been configured. Hence, don't misused the link->network as a check to determine if a link is ready to be used, but check the state explicitly. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index c37532bb73d..a415035887a 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);