chiark / gitweb /
networkd: don't hard depend on system bus
authorTom Gundersen <teg@jklm.no>
Sat, 18 Jan 2014 00:37:35 +0000 (01:37 +0100)
committerTom Gundersen <teg@jklm.no>
Sat, 18 Jan 2014 00:56:41 +0000 (01:56 +0100)
We may not have a dbus daemon in the initrd (until we can rely on kdbus). In
this case, simply ignore any attempts at using the bus. There is only one user
for now, but surely more to come.

In order to work reliably in the real root without kdbus, but at the same time
don't delay boot when kdbus is in use, order ourselves after dbus.service.

src/network/networkd-link.c
src/network/networkd-manager.c
units/systemd-networkd.service.in

index 7f692d1f9b9323ef9697e7215540d7d321df139b..f1a2695e83f4dccab666900b5acc517738f96f6f 100644 (file)
@@ -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",
index 8eaf101df3956e9d4ac56f24ef9732f1544ccfdd..c630ed7ed91aa6bae261a7ae5f3694a01aa5b4b6 100644 (file)
@@ -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;
index 850193b53c7012c37d0d4aa8598578e63b1d64fa..835c07ddcd5aeb838f672e69db81709248b8f6ab 100644 (file)
@@ -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