From: Tobias Brunner Date: Thu, 15 Oct 2020 14:10:07 +0000 (+0200) Subject: kernel-netlink: Update cached address flags X-Git-Tag: 5.9.1rc1~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2eb43ca40596d88521a1591f7d4c392b700e3bbf;p=thirdparty%2Fstrongswan.git kernel-netlink: Update cached address flags Note that manually adding an IPv6 address without disabling duplicate address detection (DAD, e.g. via `nodad` when using iproute2) will cause a roam event due to a flag change after about 1-2 seconds (TENTATIVE is removed). If this is a problem, we might have to ignore addresses with TENTATIVE flag when we receive a RTM_NEWADDR message until that flag is eventually removed. Fixes #3511. --- diff --git a/src/libcharon/plugins/kernel_netlink/kernel_netlink_net.c b/src/libcharon/plugins/kernel_netlink/kernel_netlink_net.c index f174c26987..57a26b7deb 100644 --- a/src/libcharon/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libcharon/plugins/kernel_netlink/kernel_netlink_net.c @@ -1278,6 +1278,17 @@ static void process_addr(private_kernel_netlink_net_t *this, addr_map_entry_remove(this->addrs, addr, iface); addr_entry_destroy(addr); } + else if (entry->addr->flags != msg->ifa_flags) + { + found = TRUE; + entry->addr->flags = msg->ifa_flags; + if (event && iface->usable) + { + changed = TRUE; + DBG1(DBG_KNL, "flags changed for %H on %s", host, + iface->ifname); + } + } } else {