1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-19 22:50:17 +03:00

udev-builtin-net_driver: use correct interface name

Previously, when the interface name contains '!', the builtin command
failed to get the driver of the interface.
This commit is contained in:
Yu Watanabe 2025-03-06 08:16:10 +09:00
parent bec2f4dc3e
commit e3bc8d3449

View 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);
}