@@ -861,6 +863,32 @@
}
- r = rtnl_set_link_name(&event->rtnl, ifindex, event->name);
+ r = rtnl_set_link_name(&event->rtnl, ifindex, event->name, event->altnames);
+ /* keep trying if the destination interface name already exists */
+ if (r != -EEXIST)
+ goto out;
+
+ /* free our own name, another process may wait for us */
+ snprintf(name, IFNAMSIZ, "rename%d", ifindex);
-+ r = rtnl_set_link_name(&event->rtnl, ifindex, name);
++ r = rtnl_set_link_name(&event->rtnl, ifindex, name, NULL);
+ if (r < 0)
+ goto out;
+
+
+ nanosleep(&duration, NULL);
+
-+ r = rtnl_set_link_name(&event->rtnl, ifindex, name);
++ r = rtnl_set_link_name(&event->rtnl, ifindex, name, NULL);
+ if (r != -EEXIST)
+ goto out;
+ }