diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 7f692d1f9b..f1a2695e83 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -325,11 +325,15 @@ static int set_hostname(sd_bus *bus, const char *hostname) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; int r = 0; - assert(bus); assert(hostname); log_debug("Setting transient hostname: '%s'", hostname); + if (!bus) { /* TODO: replace by assert when we can rely on kdbus */ + log_info("Not connected to system bus, ignoring transient hostname."); + return 0; + } + r = sd_bus_message_new_method_call( bus, "org.freedesktop.hostname1", diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 8eaf101df3..c630ed7ed9 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -55,7 +55,7 @@ int manager_new(Manager **ret) { return r; r = sd_bus_default_system(&m->bus); - if (r < 0) + if (r < 0 && r != -ENOENT) /* TODO: drop when we can rely on kdbus */ return r; m->udev = udev_new(); @@ -288,6 +288,11 @@ int manager_rtnl_listen(Manager *m) { int manager_bus_listen(Manager *m) { int r; + assert(m->event); + + if (!m->bus) /* TODO: drop when we can rely on kdbus */ + return 0; + r = sd_bus_attach_event(m->bus, m->event, 0); if (r < 0) return r; diff --git a/units/systemd-networkd.service.in b/units/systemd-networkd.service.in index 850193b53c..835c07ddcd 100644 --- a/units/systemd-networkd.service.in +++ b/units/systemd-networkd.service.in @@ -9,7 +9,7 @@ Description=Network Service Documentation=man:systemd-networkd.service(8) DefaultDependencies=no -After=dbus.socket +After=dbus.service Before=network.target Wants=network.target ConditionCapability=CAP_NET_ADMIN