X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_device.c;h=23ba313db3098e85cc91f50a38c678a6e86e6381;hb=56a8a8836d5d3955939c9cd0060d5ebdf00ddfc5;hp=d50c5ae043ee237ec44168d19814469f9bb27c0b;hpb=eff4a6736937fb9d55c09c598d0d232d38c5b06a;p=elogind.git diff --git a/udev_device.c b/udev_device.c index d50c5ae04..23ba313db 100644 --- a/udev_device.c +++ b/udev_device.c @@ -78,6 +78,26 @@ dev_t udev_device_get_devt(struct udevice *udev) return makedev(0, 0); } +static void kernel_log(struct ifreq ifr) +{ + int klog; + FILE *f; + + klog = open("/dev/kmsg", O_WRONLY); + if (klog < 0) + return; + + f = fdopen(klog, "w"); + if (f == NULL) { + close(klog); + return; + } + + fprintf(f, "<6>udev: renamed network interface %s to %s\n", + ifr.ifr_name, ifr.ifr_newname); + fclose(f); +} + static int rename_netif(struct udevice *udev) { int sk; @@ -98,7 +118,9 @@ static int rename_netif(struct udevice *udev) strlcpy(ifr.ifr_name, udev->dev->kernel, IFNAMSIZ); strlcpy(ifr.ifr_newname, udev->name, IFNAMSIZ); retval = ioctl(sk, SIOCSIFNAME, &ifr); - if (retval != 0) { + if (retval == 0) + kernel_log(ifr); + else { int loop; /* see if the destination interface name already exists */ @@ -122,8 +144,10 @@ static int rename_netif(struct udevice *udev) loop = 30 * 20; while (loop--) { retval = ioctl(sk, SIOCSIFNAME, &ifr); - if (retval == 0) + if (retval == 0) { + kernel_log(ifr); break; + } if (errno != EEXIST) { err("error changing net interface name %s to %s: %s", @@ -239,8 +263,8 @@ int udev_device_event(struct udev_rules *rules, struct udevice *udev) if (udev_db_get_device(udev, udev->dev->devpath) == 0) { udev_db_delete_device(udev); if (udev->ignore_remove) { - dbg("remove event for '%s' requested to be ignored by rule", udev->name); - return 0; + info("ignore_remove for '%s'", udev->name); + goto exit; } /* restore stored persistent data */ list_for_each_entry(name_loop, &udev->env_list, node)