]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: address: drop deprecated temporary address
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 30 Nov 2021 06:52:54 +0000 (15:52 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 30 Nov 2021 17:17:23 +0000 (18:17 +0100)
Fixes #19838.

src/network/networkd-address.c

index 826b061f24e2214c080f11f96a24613159a57c10..f1bda88eeb2e60d9583207768aa564cdb7c43763 100644 (file)
@@ -1394,6 +1394,20 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
                         address->scope = tmp->scope;
                         address_set_lifetime(address, &cinfo);
                         address_enter_configured(address);
+
+                        if (address->family == AF_INET6 &&
+                            address->source == NETWORK_CONFIG_SOURCE_FOREIGN &&
+                            FLAGS_SET(address->flags, IFA_F_SECONDARY | IFA_F_DEPRECATED)) {
+
+                                /* The temporary address became deprecated, i.e. preferred lifetime == 0. */
+                                log_address_debug(address, "Received deprecated", link);
+                                r = address_remove(address);
+                                if (r < 0)
+                                        link_enter_failed(link);
+
+                                return 0;
+                        }
+
                         log_address_debug(address, "Received updated", link);
                 } else {
                         address_set_lifetime(tmp, &cinfo);