summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-02-18 22:06:49 +0100
committerTom Gundersen <teg@jklm.no>2014-02-18 22:34:26 +0100
commit9b1c2626cef16722603bded9bb52033aba34dd74 (patch)
treef0fd71d1ef7144ca0aefe7aa139cc8958963e691
parent11a7f22939d21558df919cab44b8fbe36ab5dae0 (diff)
net-match: fix Driver= match
It should match on the driver of the parent device.
-rw-r--r--TODO1
-rw-r--r--man/systemd-networkd.service.xml3
-rw-r--r--man/udev.xml3
-rw-r--r--src/network/networkd-network.c2
-rw-r--r--src/udev/net/link-config.c2
5 files changed, 6 insertions, 5 deletions
diff --git a/TODO b/TODO
index 925d7a5574..57c057227b 100644
--- a/TODO
+++ b/TODO
@@ -639,7 +639,6 @@ Features:
- Make sure ID_PATH is always exported and complete for
network devices where possible, so we can safely rely
on Path= matching
- - Check if Driver= is broken, or just my driver (bcma)
* sd-rtnl:
- add support for exiting containers without reading them fully first
diff --git a/man/systemd-networkd.service.xml b/man/systemd-networkd.service.xml
index 9c7ca83438..04fedc56d0 100644
--- a/man/systemd-networkd.service.xml
+++ b/man/systemd-networkd.service.xml
@@ -165,7 +165,8 @@
<term><varname>Driver</varname></term>
<listitem>
<para>The driver currently bound to the device, as
- exposed by the udev property <literal>DRIVER</literal>.
+ exposed by the udev property <literal>DRIVER</literal>
+ of its parent device.
</para>
</listitem>
</varlistentry>
diff --git a/man/udev.xml b/man/udev.xml
index 54a2dd33dd..eab5d25f0a 100644
--- a/man/udev.xml
+++ b/man/udev.xml
@@ -805,7 +805,8 @@
<varlistentry>
<term><varname>Driver</varname></term>
<listitem>
- <para>The driver currently bound to the device, as exposed by the udev property <literal>DRIVER</literal>.</para>
+ <para>The driver currently bound to the device, as exposed by the
+ udev property <literal>DRIVER</literal> of its parent device.</para>
</listitem>
</varlistentry>
<varlistentry>
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 48131c1f09..a470c22e3d 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -178,7 +178,7 @@ int network_get(Manager *manager, struct udev_device *device, Network **ret) {
network->match_name,
udev_device_get_sysattr_value(device, "address"),
udev_device_get_property_value(device, "ID_PATH"),
- udev_device_get_driver(device),
+ udev_device_get_driver(udev_device_get_parent(device)),
udev_device_get_devtype(device),
udev_device_get_sysname(device))) {
log_debug("%s: found matching network '%s'",
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index bd97cd8cf8..3afaff10c8 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -244,7 +244,7 @@ int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
link->match_driver, link->match_type, NULL,
udev_device_get_sysattr_value(device, "address"),
udev_device_get_property_value(device, "ID_PATH"),
- udev_device_get_driver(device),
+ udev_device_get_driver(udev_device_get_parent(device)),
udev_device_get_devtype(device),
NULL)) {
log_debug("Config file %s applies to device %s",