found #869995 232-25+deb9u1 found #869995 232-25+deb9u2 tags #869995 patch stretch thanks
Hi, I have missed that this bug was actually closed for good. I can confirm that the issue is fixed in sid and buster, but is is still a crippling bug in stretch. I can confirm that the two attached patches fix the issue in 232-25. Please consider adding those patches for one of the next point releases. Greetings Marc
--- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -918,5 +918,8 @@ int config_parse_address_flags(const cha bool address_is_ready(const Address *a) { assert(a); - return !(a->flags & (IFA_F_TENTATIVE | IFA_F_DEPRECATED)); + if (a->family == AF_INET6) + return !(a->flags & (IFA_F_TENTATIVE)); + else + return !(a->flags & (IFA_F_TENTATIVE | IFA_F_DEPRECATED)); } --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -165,6 +165,10 @@ static void ndisc_router_process_autonom return; } + /* The preferred lifetime is never greater than the valid lifetime */ + if (lifetime_preferred > lifetime_valid) + return; + r = address_new(&address); if (r < 0) { log_link_error_errno(link, r, "Could not allocate address: %m");
--- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -91,6 +91,10 @@ static bool link_ipv4ll_enabled(Link *li } static bool link_ipv6ll_enabled(Link *link) { + _cleanup_free_ char *disable_ipv6 = NULL; + const char *p = NULL; + int r; + assert(link); if (!socket_ipv6_is_supported()) @@ -101,6 +105,12 @@ static bool link_ipv6ll_enabled(Link *li if (!link->network) return false; + p = strjoina("/proc/sys/net/ipv6/conf/", link->ifname, "/disable_ipv6"); + r = read_one_line_file(p, &disable_ipv6); + if (r >= 0) { + if (streq(disable_ipv6, "1")) + return false; + } return link->network->link_local & ADDRESS_FAMILY_IPV6; } @@ -1636,6 +1646,9 @@ static int link_up_handler(sd_netlink *r brought up later */ log_link_warning_errno(link, r, "Could not bring up interface: %m"); + printf("link_up_handler= %s\n", link->ifname); + link_check_ready(link); + return 1; }