- 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;
+ strscpy(name, IFNAMSIZ, event->name);
+
+ r = sd_rtnl_open(&rtnl, 0);
+ if (r < 0)
+ return r;
+
+ r = rtnl_set_link_name(rtnl, udev_device_get_ifindex(dev), name);
+ if (r < 0)
+ log_error("error changing net interface name %s to %s: %s",
+ oldname, name, strerror(-r));
+ else
+ print_kmsg("renamed network interface %s to %s", oldname, name);
+
+ return r;