From: Yu Watanabe Date: Tue, 22 Jun 2021 10:36:39 +0000 (+0900) Subject: network: address: do not send tentative flag X-Git-Tag: v249-rc3~17^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d5e3b3eb8c66b0240431950a212597561d06fb77;p=thirdparty%2Fsystemd.git network: address: do not send tentative flag Currently, networkd does not set tentative flag on create, and kernel ignore the flag on remove. So, this commit does not change any current behaviour. This is just a preparation for later commits. --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 2756ce74f84..700475f27b0 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -656,6 +656,7 @@ static void log_address_debug(const Address *address, const char *str, const Lin } static int address_set_netlink_message(const Address *address, sd_netlink_message *req, Link *link) { + uint32_t flags; int r; assert(address); @@ -667,14 +668,16 @@ static int address_set_netlink_message(const Address *address, sd_netlink_messag return log_link_error_errno(link, r, "Could not set prefixlen: %m"); /* On remove, only IFA_F_MANAGETEMPADDR flag for IPv6 addresses are used. But anyway, set all - * flags here unconditionally. Without setting the flag, the template addresses generated by - * kernel will not be removed automatically when the main address is removed. */ - r = sd_rtnl_message_addr_set_flags(req, address->flags & 0xff); + * flags except tentative flag here unconditionally. Without setting the flag, the template + * addresses generated by kernel will not be removed automatically when the main address is + * removed. */ + flags = address->flags & ~IFA_F_TENTATIVE; + r = sd_rtnl_message_addr_set_flags(req, flags & 0xff); if (r < 0) return log_link_error_errno(link, r, "Could not set flags: %m"); - if ((address->flags & ~0xff) != 0) { - r = sd_netlink_message_append_u32(req, IFA_FLAGS, address->flags); + if ((flags & ~0xff) != 0) { + r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags); if (r < 0) return log_link_error_errno(link, r, "Could not set extended flags: %m"); }