Fix udev netif_rename problem

This commit is contained in:
Arne Fitzenreiter
2009-04-29 11:39:56 +02:00
parent 3519a7b9dd
commit 9c7b8b4550
6 changed files with 51 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
diff -Naur udev-096.org/udev_device.c udev-096/udev_device.c
--- udev-096.org/udev_device.c 2006-07-09 21:48:19.000000000 +0200
+++ udev-096/udev_device.c 2009-04-28 22:04:56.000000000 +0200
@@ -102,40 +102,8 @@
strlcpy(ifr.ifr_newname, udev->name, IFNAMSIZ);
retval = ioctl(sk, SIOCSIFNAME, &ifr);
if (retval != 0) {
- int loop;
-
- /* see if the destination interface name already exists */
- if (errno != EEXIST) {
- err("error changing netif name: %s", strerror(errno));
- goto exit;
- }
-
- /* free our own name, another process may wait for us */
- strlcpy(ifr.ifr_newname, udev->dev->kernel_name, IFNAMSIZ);
- strlcat(ifr.ifr_newname, "_rename", IFNAMSIZ);
- retval = ioctl(sk, SIOCSIFNAME, &ifr);
- if (retval != 0) {
- err("error changing netif name: %s", strerror(errno));
- goto exit;
- }
-
- /* wait 30 seconds for our target to become available */
- strlcpy(ifr.ifr_name, ifr.ifr_newname, IFNAMSIZ);
- strlcpy(ifr.ifr_newname, udev->name, IFNAMSIZ);
- loop = 30 * 20;
- while (loop--) {
- retval = ioctl(sk, SIOCSIFNAME, &ifr);
- if (retval != 0) {
- if (errno != EEXIST) {
- err("error changing net interface name: %s", strerror(errno));
- break;
- }
- dbg("wait for netif '%s' to become free, loop=%i", udev->name, (30 * 20) - loop);
- usleep(1000 * 1000 / 20);
- }
- }
+ err("error changing netif name: %s", strerror(errno));
}
-
exit:
close(sk);
return retval;