chiark / gitweb /
net-match: fix Driver= match
authorTom Gundersen <teg@jklm.no>
Tue, 18 Feb 2014 21:06:49 +0000 (22:06 +0100)
committerTom Gundersen <teg@jklm.no>
Tue, 18 Feb 2014 21:34:26 +0000 (22:34 +0100)
It should match on the driver of the parent device.

TODO
man/systemd-networkd.service.xml
man/udev.xml
src/network/networkd-network.c
src/udev/net/link-config.c

diff --git a/TODO b/TODO
index 925d7a5..57c0572 100644 (file)
--- 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
index 9c7ca83..04fedc5 100644 (file)
                                         <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>
index 54a2dd3..eab5d25 100644 (file)
         <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>
index 48131c1..a470c22 100644 (file)
@@ -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'",
index bd97cd8..3afaff1 100644 (file)
@@ -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",