From 7f676aa324cb5498a5f9caaaa3d51ecfe53242e0 Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 26 Sep 2017 17:17:32 +0530 Subject: networkd: ndisc Do not stop ndisc client incase of conf error. Now in ndisc_netlink_handler if route or address fails we stop the clients. link_enter_failed->link_stop_clients that is dhcp, ndisc etc. The clients should be keep on running . Fixes #5625 --- src/network/networkd-ndisc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index d52b511bb5..27d3f9c935 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -39,10 +39,8 @@ static int ndisc_netlink_handler(sd_netlink *rtnl, sd_netlink_message *m, void * link->ndisc_messages--; r = sd_netlink_message_get_errno(m); - if (r < 0 && r != -EEXIST) { + if (r < 0 && r != -EEXIST) log_link_error_errno(link, r, "Could not set NDisc route or address: %m"); - link_enter_failed(link); - } if (link->ndisc_messages == 0) { link->ndisc_configured = true; -- cgit v1.2.3 From 5971cb9de9081b537945d28895df70992e5664d0 Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Thu, 28 Sep 2017 00:45:15 +0530 Subject: networkd: Bridge slave don't look for RA/dhcp(IPv4/IPv6) Incase of bridge slaves we have disabled RA, DHCP(IPv4/IPv6). just skip the check in link_check_ready for IPv6. --- src/network/networkd-link.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 6b591271a0..9220197627 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -743,20 +743,23 @@ void link_check_ready(Link *link) { !link->ipv4ll_route) return; - if (link_ipv6ll_enabled(link)) - if (in_addr_is_null(AF_INET6, (const union in_addr_union*) &link->ipv6ll_address) > 0) + if (!link->network->bridge) { + + if (link_ipv6ll_enabled(link)) + if (in_addr_is_null(AF_INET6, (const union in_addr_union*) &link->ipv6ll_address) > 0) + return; + + if ((link_dhcp4_enabled(link) && !link_dhcp6_enabled(link) && + !link->dhcp4_configured) || + (link_dhcp6_enabled(link) && !link_dhcp4_enabled(link) && + !link->dhcp6_configured) || + (link_dhcp4_enabled(link) && link_dhcp6_enabled(link) && + !link->dhcp4_configured && !link->dhcp6_configured)) return; - if ((link_dhcp4_enabled(link) && !link_dhcp6_enabled(link) && - !link->dhcp4_configured) || - (link_dhcp6_enabled(link) && !link_dhcp4_enabled(link) && - !link->dhcp6_configured) || - (link_dhcp4_enabled(link) && link_dhcp6_enabled(link) && - !link->dhcp4_configured && !link->dhcp6_configured)) - return; - - if (link_ipv6_accept_ra_enabled(link) && !link->ndisc_configured) - return; + if (link_ipv6_accept_ra_enabled(link) && !link->ndisc_configured) + return; + } SET_FOREACH(a, link->addresses, i) if (!address_is_ready(a)) -- cgit v1.2.3