diff options
author | Tom Gundersen <teg@jklm.no> | 2015-05-12 00:22:29 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-05-12 00:43:45 +0200 |
commit | 24c083dfcbff3d1dd86a22cba7555a9ae6d8a53d (patch) | |
tree | f4e30951822d9ae9d9c6e00a02ed152ebb98ed90 | |
parent | e4f66b7773ae21278bf6b9c02a3282eec5996266 (diff) |
networkd: network_get - allow udev_device to be NULL
In containers we never have udev devices, so drop the assert.
This fixes an assertion introduced in af3aa302741b6edb0729925febb5f8bc26721fe3.
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | src/network/networkd-network.c | 21 |
2 files changed, 10 insertions, 13 deletions
@@ -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 diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 4d4972e5d6..8aa4eb2ed1 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -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; |