mirror of
https://github.com/systemd/systemd.git
synced 2025-01-24 06:04:05 +03:00
net-util: match on the driver as exposed by ethtool if DRIVER not set
Also fix a copy-paste error that broke matching on interface name.
This commit is contained in:
parent
95f41b7298
commit
bf175aafd2
@ -216,8 +216,9 @@
|
||||
<listitem>
|
||||
<para>The driver currently bound to the device, as
|
||||
exposed by the udev property <literal>DRIVER</literal>
|
||||
of its parent device.
|
||||
</para>
|
||||
of its parent device, or if that is not set the driver
|
||||
as exposed by <literal>ethtool -i</literal> of the
|
||||
device itself.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
@ -807,7 +807,9 @@
|
||||
<term><varname>Driver=</varname></term>
|
||||
<listitem>
|
||||
<para>The driver currently bound to the device, as exposed by the
|
||||
udev property <literal>DRIVER</literal> of its parent device.</para>
|
||||
udev property <literal>DRIVER</literal> of its parent device, or if
|
||||
that is not set the driver as exposed by <literal>ethtool -i</literal>
|
||||
of the device itself.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
@ -366,7 +366,7 @@ static int netdev_load_one(Manager *manager, const char *filename) {
|
||||
if (net_match_config(NULL, NULL, NULL, NULL, NULL,
|
||||
netdev->match_host, netdev->match_virt,
|
||||
netdev->match_kernel, netdev->match_arch,
|
||||
NULL, NULL, NULL, NULL, NULL) <= 0)
|
||||
NULL, NULL, NULL, NULL, NULL, NULL) <= 0)
|
||||
return 0;
|
||||
|
||||
r = hashmap_put(netdev->manager->netdevs, netdev->name, netdev);
|
||||
|
@ -181,6 +181,7 @@ int network_get(Manager *manager, struct udev_device *device, Network **ret) {
|
||||
udev_device_get_sysattr_value(device, "address"),
|
||||
udev_device_get_property_value(device, "ID_PATH"),
|
||||
udev_device_get_driver(udev_device_get_parent(device)),
|
||||
udev_device_get_property_value(device, "ID_NET_DRIVER"),
|
||||
udev_device_get_devtype(device),
|
||||
udev_device_get_sysname(device))) {
|
||||
log_debug("%s: found matching network '%s'",
|
||||
|
@ -42,6 +42,7 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
Condition *match_arch,
|
||||
const char *dev_mac,
|
||||
const char *dev_path,
|
||||
const char *dev_parent_driver,
|
||||
const char *dev_driver,
|
||||
const char *dev_type,
|
||||
const char *dev_name) {
|
||||
@ -64,13 +65,17 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
if (match_path && (!dev_path || fnmatch(match_path, dev_path, 0)))
|
||||
return 0;
|
||||
|
||||
if (match_driver && !streq_ptr(match_driver, dev_driver))
|
||||
return 0;
|
||||
if (match_driver) {
|
||||
if (dev_parent_driver && !streq(match_driver, dev_parent_driver))
|
||||
return 0;
|
||||
else if (!streq_ptr(match_driver, dev_driver))
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (match_type && !streq_ptr(match_type, dev_type))
|
||||
return 0;
|
||||
|
||||
if (match_name && (!dev_path || fnmatch(match_name, dev_name, 0)))
|
||||
if (match_name && (!dev_name || fnmatch(match_name, dev_name, 0)))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
|
@ -38,6 +38,7 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
Condition *match_arch,
|
||||
const char *dev_mac,
|
||||
const char *dev_path,
|
||||
const char *dev_parent_driver,
|
||||
const char *dev_driver,
|
||||
const char *dev_type,
|
||||
const char *dev_name);
|
||||
|
@ -247,6 +247,7 @@ int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
|
||||
udev_device_get_sysattr_value(device, "address"),
|
||||
udev_device_get_property_value(device, "ID_PATH"),
|
||||
udev_device_get_driver(udev_device_get_parent(device)),
|
||||
udev_device_get_property_value(device, "ID_NET_DRIVER"),
|
||||
udev_device_get_devtype(device),
|
||||
NULL)) {
|
||||
log_debug("Config file %s applies to device %s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user