diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 0d98b07887..1c666d0123 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -827,6 +827,7 @@ int udev_event_spawn(UdevEvent *event, static int rename_netif(UdevEvent *event) { sd_device *dev = event->dev; const char *oldname; + unsigned flags; int ifindex, r; if (!event->name) @@ -854,6 +855,16 @@ static int rename_netif(UdevEvent *event) { return 0; } + r = rtnl_get_link_info(&event->rtnl, ifindex, NULL, &flags); + if (r < 0) + return log_device_warning_errno(dev, r, "Failed to get link flags: %m"); + + if (FLAGS_SET(flags, IFF_UP)) { + log_device_info(dev, "Network interface '%s' is already up, refusing to rename to '%s'.", + oldname, event->name); + return 0; + } + /* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */ r = device_add_property(dev, "ID_RENAMING", "1"); if (r < 0)