]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: update interface name stored in various network engines
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 13 Jul 2021 11:02:44 +0000 (20:02 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 13 Jul 2021 23:40:47 +0000 (00:40 +0100)
src/network/networkd-link.c

index d38f5cd7cf9b854075694e15a1f5d34d4f2604fc..a6f8174b80fd4d87020961ccfba323e99498eb9b 100644 (file)
@@ -2201,6 +2201,55 @@ static int link_update_name(Link *link, sd_netlink_message *message) {
         if (r < 0)
                 return log_link_debug_errno(link, r, "Failed to manage link by its new name: %m");
 
+        if (link->dhcp_client) {
+                r = sd_dhcp_client_set_ifname(link->dhcp_client, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in DHCP client: %m");
+        }
+
+        if (link->dhcp6_client) {
+                r = sd_dhcp6_client_set_ifname(link->dhcp6_client, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in DHCP6 client: %m");
+        }
+
+        if (link->ndisc) {
+                r = sd_ndisc_set_ifname(link->ndisc, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in NDisc: %m");
+        }
+
+        if (link->dhcp_server) {
+                r = sd_dhcp_server_set_ifname(link->dhcp_server, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in DHCP server: %m");
+        }
+
+        if (link->radv) {
+                r = sd_radv_set_ifname(link->radv, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in Router Advertisement: %m");
+        }
+
+        if (link->lldp) {
+                r = sd_lldp_set_ifname(link->lldp, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in LLDP: %m");
+        }
+
+        if (link->ipv4ll) {
+                r = sd_ipv4ll_set_ifname(link->ipv4ll, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in IPv4LL client: %m");
+        }
+
+        Address *a;
+        SET_FOREACH(a, link->addresses_ipv4acd) {
+                r = sd_ipv4acd_set_ifname(a->acd, link->ifname);
+                if (r < 0)
+                        return log_link_debug_errno(link, r, "Failed to update interface name in IPv4ACD client: %m");
+        }
+
         return 0;
 }