chiark / gitweb /
core: fix typo in log message
[elogind.git] / src / core / busname.c
index d4aa463397ea58de428fc4623d1646e2df8e9bc2..9ab95569eb7237e5aac993b2b0f637c7e5ba6fad 100644 (file)
 #include "bus-internal.h"
 #include "bus-util.h"
 #include "service.h"
+#include "kdbus.h"
+#include "bus-policy.h"
 #include "dbus-busname.h"
 #include "busname.h"
-#include "kdbus.h"
 
 static const UnitActiveState state_translation_table[_BUSNAME_STATE_MAX] = {
         [BUSNAME_DEAD] = UNIT_INACTIVE,
@@ -730,7 +731,9 @@ static int busname_peek_message(BusName *n) {
                 .size = sizeof(cmd_recv),
                 .flags = KDBUS_RECV_PEEK,
         };
-        struct kdbus_cmd_free cmd_free = {};
+        struct kdbus_cmd_free cmd_free = {
+                .size = sizeof(cmd_free),
+        };
         const char *comm = NULL;
         struct kdbus_item *d;
         struct kdbus_msg *k;
@@ -971,6 +974,16 @@ static int busname_get_timeout(Unit *u, uint64_t *timeout) {
         return 1;
 }
 
+static bool busname_supported(Manager *m) {
+        int supported = -1;
+        assert(m);
+
+        if (supported < 0)
+                supported = access("/sys/fs/kdbus", F_OK) >= 0;
+
+        return supported;
+}
+
 static const char* const busname_state_table[_BUSNAME_STATE_MAX] = {
         [BUSNAME_DEAD] = "dead",
         [BUSNAME_MAKING] = "making",
@@ -1032,6 +1045,8 @@ const UnitVTable busname_vtable = {
 
         .reset_failed = busname_reset_failed,
 
+        .supported = busname_supported,
+
         .bus_interface = "org.freedesktop.systemd1.BusName",
         .bus_vtable = bus_busname_vtable,