X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=1f96c634efc64525c0048ae5ad899fa9af37ced2;hp=3b9881d71e57c88825f580e11596f1c225d5a060;hb=7f77697a1744f8df2089848b9d718faf7ba6c665;hpb=d0d6a4cd70477970812bff0a37e70f66208d7c14 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 3b9881d71..1f96c634e 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1097,36 +1097,44 @@ static int link_up(Link *link) { } } - if (!link_ipv6ll_enabled(link)) { - r = sd_rtnl_message_open_container(req, IFLA_AF_SPEC); - if (r < 0) { - log_link_error(link, "Could not open IFLA_AF_SPEC container: %s", strerror(-r)); - return r; - } + r = sd_rtnl_message_open_container(req, IFLA_AF_SPEC); + if (r < 0) { + log_link_error(link, "Could not open IFLA_AF_SPEC container: %s", strerror(-r)); + return r; + } - r = sd_rtnl_message_open_container(req, AF_INET6); - if (r < 0) { - log_link_error(link, "Could not open AF_INET6 container: %s", strerror(-r)); - return r; - } + r = sd_rtnl_message_open_container(req, AF_INET6); + if (r < 0) { + log_link_error(link, "Could not open AF_INET6 container: %s", strerror(-r)); + return r; + } + if (!link_ipv6ll_enabled(link)) { r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, IN6_ADDR_GEN_MODE_NONE); if (r < 0) { log_link_error(link, "Could not append IFLA_INET6_ADDR_GEN_MODE: %s", strerror(-r)); return r; } + } - r = sd_rtnl_message_close_container(req); + if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) { + r = sd_rtnl_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6); if (r < 0) { - log_link_error(link, "Could not close AF_INET6 contaire: %s", strerror(-r)); + log_link_error(link, "Could not append IFLA_INET6_TOKEN: %s", strerror(-r)); return r; } + } - r = sd_rtnl_message_close_container(req); - if (r < 0) { - log_link_error(link, "Could not close IFLA_AF_SPEC contaire: %s", strerror(-r)); - return r; - } + r = sd_rtnl_message_close_container(req); + if (r < 0) { + log_link_error(link, "Could not close AF_INET6 container: %s", strerror(-r)); + return r; + } + + r = sd_rtnl_message_close_container(req); + if (r < 0) { + log_link_error(link, "Could not close IFLA_AF_SPEC contaire: %s", strerror(-r)); + return r; } r = sd_rtnl_call_async(link->manager->rtnl, req, link_up_handler, link,