]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: network_get - allow udev_device to be NULL
authorTom Gundersen <teg@jklm.no>
Mon, 11 May 2015 22:22:29 +0000 (00:22 +0200)
committerTom Gundersen <teg@jklm.no>
Mon, 11 May 2015 22:43:45 +0000 (00:43 +0200)
In containers we never have udev devices, so drop the assert.

This fixes an assertion introduced in af3aa302741b6edb0729925febb5f8bc26721fe3.

TODO
src/network/networkd-network.c

diff --git a/TODO b/TODO
index 3edb7fdfca313732d5fec55c4f6d8d6735c287db..932fef64311cd761dfb3ad5a817fb55d7b638c66 100644 (file)
--- a/TODO
+++ b/TODO
@@ -49,8 +49,6 @@ Before 220:
 
 * introduce argv0array=
 
-* Assertion 'device' failed at src/network/networkd-network.c:280, function network_get(). Aborting.
-
 Features:
 
 * invent a better systemd-run scheme for naming scopes, that works with remoting
index 4d4972e5d62d8f4d38a207aaad7eded784acd9ac..8aa4eb2ed1734813aba919aea694a2a2828ee3a6 100644 (file)
@@ -273,23 +273,22 @@ int network_get(Manager *manager, struct udev_device *device,
                 Network **ret) {
         Network *network;
         struct udev_device *parent;
-        const char *path, *parent_driver, *driver, *devtype;
+        const char *path = NULL, *parent_driver = NULL, *driver = NULL, *devtype = NULL;
 
         assert(manager);
         assert(ret);
-        assert(device);
 
-        path = udev_device_get_property_value(device, "ID_PATH");
+        if (device) {
+                path = udev_device_get_property_value(device, "ID_PATH");
 
-        parent = udev_device_get_parent(device);
-        if (parent)
-                parent_driver = udev_device_get_driver(parent);
-        else
-                parent_driver = NULL;
+                parent = udev_device_get_parent(device);
+                if (parent)
+                        parent_driver = udev_device_get_driver(parent);
 
-        driver = udev_device_get_property_value(device, "ID_NET_DRIVER");
+                driver = udev_device_get_property_value(device, "ID_NET_DRIVER");
 
-        devtype = udev_device_get_devtype(device);
+                devtype = udev_device_get_devtype(device);
+        }
 
         LIST_FOREACH(networks, network, manager->networks) {
                 if (net_match_config(network->match_mac, network->match_path,
@@ -299,7 +298,7 @@ int network_get(Manager *manager, struct udev_device *device,
                                      network->match_arch,
                                      address, path, parent_driver, driver,
                                      devtype, ifname)) {
-                        if (network->match_name) {
+                        if (network->match_name && device) {
                                 const char *attr;
                                 uint8_t name_assign_type = NET_NAME_UNKNOWN;