]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-builtin-net_driver: use correct interface name
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 5 Mar 2025 23:16:10 +0000 (08:16 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 12 Mar 2025 16:08:57 +0000 (01:08 +0900)
Previously, when the interface name contains '!', the builtin command
failed to get the driver of the interface.

src/udev/udev-builtin-net_driver.c

index 5e35b39ee455e4af72898cc5b9c80e23bd8ea04e..832ed6fdee7025211f08b5e3b9d14243d54d7cc9 100644 (file)
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include "alloc-util.h"
+#include "device-private.h"
 #include "device-util.h"
 #include "errno-util.h"
 #include "ethtool-util.h"
@@ -13,16 +14,16 @@ static int builtin_net_driver_set_driver(UdevEvent *event, int argc, char **argv
         sd_device *dev = ASSERT_PTR(ASSERT_PTR(event)->dev);
         _cleanup_close_ int ethtool_fd = -EBADF;
         _cleanup_free_ char *driver = NULL;
-        const char *sysname;
+        const char *ifname;
         int r;
 
-        r = sd_device_get_sysname(dev, &sysname);
+        r = device_get_ifname(dev, &ifname);
         if (r < 0)
-                return log_device_warning_errno(dev, r, "Failed to get sysname: %m");
+                return log_device_warning_errno(dev, r, "Failed to get network interface name: %m");
 
-        r = ethtool_get_driver(&ethtool_fd, sysname, &driver);
+        r = ethtool_get_driver(&ethtool_fd, ifname, &driver);
         if (ERRNO_IS_NEG_NOT_SUPPORTED(r)) {
-                log_device_debug_errno(dev, r, "Querying driver name via ethtool API is not supported by device '%s', ignoring: %m", sysname);
+                log_device_debug_errno(dev, r, "Querying driver name via ethtool API is not supported by device '%s', ignoring: %m", ifname);
                 return 0;
         }
         if (r == -ENODEV) {
@@ -30,7 +31,7 @@ static int builtin_net_driver_set_driver(UdevEvent *event, int argc, char **argv
                 return 0;
         }
         if (r < 0)
-                return log_device_warning_errno(dev, r, "Failed to get driver for '%s': %m", sysname);
+                return log_device_warning_errno(dev, r, "Failed to get driver for '%s': %m", ifname);
 
         return udev_builtin_add_property(event, "ID_NET_DRIVER", driver);
 }