The issue seems to be triggered by the code in src/udev/udev-
event.c::rename_netif()

static int rename_netif(struct udev_event *event)
{
        struct udev_device *dev = event->dev;
        int sk;
        struct ifreq ifr;
        int err;

        log_debug("changing net interface name from '%s' to '%s'\n",
                  udev_device_get_sysname(dev), event->name);

        sk = socket(PF_INET, SOCK_DGRAM, 0);
        if (sk < 0) {
                err = -errno;
                log_error("error opening socket: %m\n");
                return err;
        }

        memset(&ifr, 0x00, sizeof(struct ifreq));
        strscpy(ifr.ifr_name, IFNAMSIZ, udev_device_get_sysname(dev));
        strscpy(ifr.ifr_newname, IFNAMSIZ, event->name);
        err = ioctl(sk, SIOCSIFNAME, &ifr);
        if (err >= 0) {
                print_kmsg("renamed network interface %s to %s\n", 
ifr.ifr_name, ifr.ifr_newname);
        } else {
                err = -errno;
                log_error("error changing net interface name %s to %s: %m\n", 
ifr.ifr_name, ifr.ifr_newname);
        }
        close(sk);
        return err;
}

It seems as if the call to ioctl(sk, SIOCSIFNAME, &ifr) returns error
code -EEXIST (17, 0x11)).

$ man 7 netdevice | grep -A 2 SIOCSIFNAME
       SIOCSIFNAME
              Changes  the  name  of the interface specified in ifr_name to 
ifr_newname.  This is a privileged operation.  It is
              only allowed when the interface is not up.

"It is only allowed when the interface is not up" but the dmesg log
shows that the IPv6 protocol is already up on those interfaces

[ 19.251979] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 19.251985] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 19.251990] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready
[ 19.251995] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready
[ 19.251999] IPv6: ADDRCONF(NETDEV_UP): eth4: link is not ready
[ 22.029079] systemd-udevd[1348]: error changing net interface name eth2 to 
eth1: File exists

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1235162

Title:
  Persistent net names via /etc/udev/rules.d/70-persistent-net.rules are
  ignored

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1235162/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to