}
static int address_set_netlink_message(const Address *address, sd_netlink_message *req, Link *link) {
- uint32_t flags;
int r;
assert(address);
/* 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. */
- flags = address->flags | IFA_F_PERMANENT;
- r = sd_rtnl_message_addr_set_flags(req, flags & 0xff);
+ r = sd_rtnl_message_addr_set_flags(req, address->flags & 0xff);
if (r < 0)
return log_link_error_errno(link, r, "Could not set flags: %m");
- if (flags & ~0xff) {
- r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags);
+ if ((address->flags & ~0xff) != 0) {
+ r = sd_netlink_message_append_u32(req, IFA_FLAGS, address->flags);
if (r < 0)
return log_link_error_errno(link, r, "Could not set extended flags: %m");
}