diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c index 18db8e06eb..c8fc10d0c4 100644 --- a/src/libsystemd-network/network-internal.c +++ b/src/libsystemd-network/network-internal.c @@ -107,7 +107,6 @@ bool net_match_config(Set *match_mac, Condition *match_arch, const struct ether_addr *dev_mac, const char *dev_path, - const char *dev_parent_driver, const char *dev_driver, const char *dev_type, const char *dev_name) { diff --git a/src/libsystemd-network/network-internal.h b/src/libsystemd-network/network-internal.h index 12c303b1e0..022ea6bae0 100644 --- a/src/libsystemd-network/network-internal.h +++ b/src/libsystemd-network/network-internal.h @@ -25,7 +25,6 @@ bool net_match_config(Set *match_mac, Condition *match_arch, const struct ether_addr *dev_mac, const char *dev_path, - const char *dev_parent_driver, const char *dev_driver, const char *dev_type, const char *dev_name); diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 2a69f2e94b..9137a93794 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -1110,6 +1110,7 @@ int device_add_devlink(sd_device *device, const char *devlink) { static int device_add_property_internal_from_string(sd_device *device, const char *str) { _cleanup_free_ char *key = NULL; char *value; + int r; assert(device); assert(str); @@ -1127,7 +1128,13 @@ static int device_add_property_internal_from_string(sd_device *device, const cha if (isempty(++value)) value = NULL; - return device_add_property_internal(device, key, value); + /* Add the property to both sd_device::properties and sd_device::properties_db, + * as this is called by only handle_db_line(). */ + r = device_add_property_aux(device, key, value, false); + if (r < 0) + return r; + + return device_add_property_aux(device, key, value, true); } int device_set_usec_initialized(sd_device *device, usec_t when) { diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index 0263917468..ecd6cf4105 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -673,7 +673,7 @@ int netdev_load_one(Manager *manager, const char *filename) { netdev_raw->match_host, netdev_raw->match_virt, netdev_raw->match_kernel_cmdline, netdev_raw->match_kernel_version, netdev_raw->match_arch, - NULL, NULL, NULL, NULL, NULL, NULL) <= 0) + NULL, NULL, NULL, NULL, NULL) <= 0) return 0; if (netdev_raw->kind == _NETDEV_KIND_INVALID) { diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 45bf44cd36..0a7b825835 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -427,8 +427,7 @@ int network_get_by_name(Manager *manager, const char *name, Network **ret) { int network_get(Manager *manager, sd_device *device, const char *ifname, const struct ether_addr *address, Network **ret) { - const char *path = NULL, *parent_driver = NULL, *driver = NULL, *devtype = NULL; - sd_device *parent; + const char *path = NULL, *driver = NULL, *devtype = NULL; Network *network; assert(manager); @@ -437,9 +436,6 @@ int network_get(Manager *manager, sd_device *device, if (device) { (void) sd_device_get_property_value(device, "ID_PATH", &path); - if (sd_device_get_parent(device, &parent) >= 0) - (void) sd_device_get_driver(parent, &parent_driver); - (void) sd_device_get_property_value(device, "ID_NET_DRIVER", &driver); (void) sd_device_get_devtype(device, &devtype); @@ -451,8 +447,7 @@ int network_get(Manager *manager, sd_device *device, network->match_name, network->match_host, network->match_virt, network->match_kernel_cmdline, network->match_kernel_version, network->match_arch, - address, path, parent_driver, driver, - devtype, ifname)) { + address, path, driver, devtype, ifname)) { if (network->match_name && device) { const char *attr; uint8_t name_assign_type = NET_NAME_UNKNOWN; diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c index 60da08a86f..1b41b1f6a2 100644 --- a/src/udev/net/link-config.c +++ b/src/udev/net/link-config.c @@ -243,13 +243,10 @@ int link_config_get(link_config_ctx *ctx, sd_device *device, link_config **ret) assert(ret); LIST_FOREACH(links, link, ctx->links) { - const char *address = NULL, *id_path = NULL, *parent_driver = NULL, *id_net_driver = NULL, *devtype = NULL, *sysname = NULL; - sd_device *parent; + const char *address = NULL, *id_path = NULL, *id_net_driver = NULL, *devtype = NULL, *sysname = NULL; (void) sd_device_get_sysattr_value(device, "address", &address); (void) sd_device_get_property_value(device, "ID_PATH", &id_path); - if (sd_device_get_parent(device, &parent) >= 0) - (void) sd_device_get_driver(parent, &parent_driver); (void) sd_device_get_property_value(device, "ID_NET_DRIVER", &id_net_driver); (void) sd_device_get_devtype(device, &devtype); (void) sd_device_get_sysname(device, &sysname); @@ -260,7 +257,6 @@ int link_config_get(link_config_ctx *ctx, sd_device *device, link_config **ret) link->match_kernel_version, link->match_arch, address ? ether_aton(address) : NULL, id_path, - parent_driver, id_net_driver, devtype, sysname)) { diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index ca6e977d74..3ea1b9dabe 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -286,6 +286,11 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.assertNotRegex(output, '1 lo ') self.assertRegex(output, 'dropin-test') + output = subprocess.check_output(['networkctl', 'status', 'dropin-*']).rstrip().decode('utf-8') + self.assertNotRegex(output, '1 lo ') + self.assertRegex(output, 'dropin-test') + self.assertRegex(output, 'Driver: dummy') + def test_bridge(self): self.copy_unit_to_networkd_unit_path('25-bridge.netdev') self.start_networkd()