From 63348d13fae61fefcb29133bfae8371b33cf4b6d Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 16 Nov 2015 16:46:14 +0100 Subject: networkd: ndisc/dhcpv6 - handle starting running clients The clients may be triggered to be started repeatedly without being stopped first, simply swallow the error rather than failing the link. --- src/libsystemd-network/sd-dhcp6-client.c | 2 +- src/libsystemd-network/sd-ndisc.c | 2 +- src/network/networkd-link.c | 4 ++-- src/network/networkd-ndisc.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index a443bb3a7a..a9518791b3 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -1137,7 +1137,7 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client) { assert_return(client->index > 0, -EINVAL); if (!IN_SET(client->state, DHCP6_STATE_STOPPED)) - return -EALREADY; + return -EBUSY; r = client_reset(client); if (r < 0) diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c index 0881973e7f..6703d87bc4 100644 --- a/src/libsystemd-network/sd-ndisc.c +++ b/src/libsystemd-network/sd-ndisc.c @@ -628,7 +628,7 @@ int sd_ndisc_router_discovery_start(sd_ndisc *nd) { assert(nd->event); if (nd->state != NDISC_STATE_IDLE) - return -EINVAL; + return -EBUSY; if (nd->index < 1) return -EINVAL; diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index a415035887..f97600e2b5 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1264,7 +1264,7 @@ static int link_acquire_ipv6_conf(Link *link) { log_link_debug(link, "Acquiring DHCPv6 lease"); r = sd_dhcp6_client_start(link->dhcp6_client); - if (r < 0) + if (r < 0 && r != -EBUSY) return log_link_warning_errno(link, r, "Could not acquire DHCPv6 lease: %m"); } @@ -1274,7 +1274,7 @@ static int link_acquire_ipv6_conf(Link *link) { log_link_debug(link, "Discovering IPv6 routers"); r = sd_ndisc_router_discovery_start(link->ndisc_router_discovery); - if (r < 0) + if (r < 0 && r != -EBUSY) return log_link_warning_errno(link, r, "Could not start IPv6 Router Discovery: %m"); } diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 126f9c0fe9..37c6ec2049 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -159,7 +159,7 @@ static void ndisc_router_handler(sd_ndisc *nd, uint8_t flags, const struct in6_a dhcp6_request_address(link); r = sd_dhcp6_client_start(link->dhcp6_client); - if (r < 0 && r != -EALREADY) + if (r < 0 && r != -EBUSY) log_link_warning_errno(link, r, "Starting DHCPv6 client on NDisc request failed: %m"); } @@ -205,7 +205,7 @@ static void ndisc_handler(sd_ndisc *nd, int event, void *userdata) { dhcp6_request_address(link); r = sd_dhcp6_client_start(link->dhcp6_client); - if (r < 0 && r != -EALREADY) + if (r < 0 && r != -EBUSY) log_link_warning_errno(link, r, "Starting DHCPv6 client after NDisc timeout failed: %m"); break; case SD_NDISC_EVENT_STOP: -- cgit v1.2.3-54-g00ecf