if (r >= 0 && !streq(ifname, link->ifname)) {
log_link_info(link, "Interface name change detected, %s has been renamed to %s.", link->ifname, ifname);
- link_free_carrier_maps(link);
-
- r = free_and_strdup(&link->ifname, ifname);
- if (r < 0)
- return r;
+ if (link->state == LINK_STATE_PENDING) {
+ r = free_and_strdup(&link->ifname, ifname);
+ if (r < 0)
+ return r;
+ } else {
+ Manager *manager = link->manager;
- r = link_new_carrier_maps(link);
- if (r < 0)
- return r;
+ link_drop(link);
+ r = link_add(manager, m, &link);
+ if (r < 0)
+ return r;
+ }
}
r = sd_netlink_message_read_u32(m, IFLA_MTU, &mtu);