-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Currently the ID_NET_DRIVER is set in net_setup_link builtin. But this is called pretty late in the udev processing chain. Right now in some custom rules it was workarounded by calling ethtool binary directly, which is ugly. So let's split this code to a separate builtin. (cherry picked from commit 2b5b25f) Resolves: RHEL-22443
- Loading branch information
Showing
8 changed files
with
52 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* SPDX-License-Identifier: LGPL-2.1-or-later */ | ||
|
||
#include "alloc-util.h" | ||
#include "device-util.h" | ||
#include "errno-util.h" | ||
#include "ethtool-util.h" | ||
#include "fd-util.h" | ||
#include "log.h" | ||
#include "string-util.h" | ||
#include "udev-builtin.h" | ||
|
||
static int builtin_net_driver_set_driver(UdevEvent *event, int argc, char **argv, bool test) { | ||
sd_device *dev = ASSERT_PTR(ASSERT_PTR(event)->dev); | ||
_cleanup_close_ int ethtool_fd = -EBADF; | ||
_cleanup_free_ char *driver = NULL; | ||
const char *sysname; | ||
int r; | ||
|
||
r = sd_device_get_sysname(dev, &sysname); | ||
if (r < 0) | ||
return log_device_warning_errno(dev, r, "Failed to get sysname: %m"); | ||
|
||
r = ethtool_get_driver(ðtool_fd, sysname, &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); | ||
return 0; | ||
} | ||
if (r == -ENODEV) { | ||
log_device_debug_errno(dev, r, "Device already vanished, ignoring."); | ||
return 0; | ||
} | ||
if (r < 0) | ||
return log_device_warning_errno(dev, r, "Failed to get driver for '%s': %m", sysname); | ||
|
||
return udev_builtin_add_property(event->dev, test, "ID_NET_DRIVER", driver); | ||
} | ||
|
||
const UdevBuiltin udev_builtin_net_driver = { | ||
.name = "net_driver", | ||
.cmd = builtin_net_driver_set_driver, | ||
.help = "Set driver for network device", | ||
.run_once = true, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters