chiark / gitweb /
net-util: match on the driver as exposed by ethtool if DRIVER not set
[elogind.git] / src / network / networkd-network.c
index a470c22e3dfedf96a6b7f044a307fd10441c8679..14fa92aeaf62d6cce055ef23439696f5a3927c1c 100644 (file)
@@ -74,7 +74,7 @@ static int network_load_one(Manager *manager, const char *filename) {
         network->dhcp_domainname = true;
 
         r = config_parse(NULL, filename, file, "Match\0Network\0Address\0Route\0DHCPv4\0", config_item_perf_lookup,
-                        (void*) network_gperf_lookup, false, false, network);
+                        (void*) network_network_gperf_lookup, false, false, network);
         if (r < 0) {
                 log_warning("Could not parse config file %s: %s", filename, strerror(-r));
                 return r;
@@ -175,10 +175,13 @@ int network_get(Manager *manager, struct udev_device *device, Network **ret) {
         LIST_FOREACH(networks, network, manager->networks) {
                 if (net_match_config(network->match_mac, network->match_path,
                                         network->match_driver, network->match_type,
-                                        network->match_name,
+                                        network->match_name, network->match_host,
+                                        network->match_virt, network->match_kernel,
+                                        network->match_arch,
                                         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'",