]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Revert "sd-bus: do not connect to dbus-1 socket when kdbus is available"
authorDavid Herrmann <dh.herrmann@gmail.com>
Thu, 27 Aug 2015 14:32:22 +0000 (16:32 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Thu, 27 Aug 2015 14:32:22 +0000 (16:32 +0200)
This reverts commit d4d00020d6ad855d65d31020fefa5003e1bb477f. The idea of
the commit is broken and needs to be reworked. We really cannot reduce
the bus-addresses to a single address. We always will have systemd with
native clients and legacy clients at the same time, so we also need both
addresses at the same time.

31 files changed:
src/basic/def.h
src/bus-proxyd/bus-proxyd.c
src/bus-proxyd/stdio-bridge.c
src/core/automount.c
src/core/service.c
src/core/socket.c
src/core/timer.c
src/dbus1-generator/dbus1-generator.c
src/libsystemd/sd-bus/bus-control.c
src/libsystemd/sd-bus/bus-convenience.c
src/libsystemd/sd-bus/bus-creds.c
src/libsystemd/sd-bus/bus-internal.c
src/libsystemd/sd-bus/bus-internal.h
src/libsystemd/sd-bus/bus-kernel.c
src/libsystemd/sd-bus/bus-match.c
src/libsystemd/sd-bus/bus-message.c
src/libsystemd/sd-bus/bus-objects.c
src/libsystemd/sd-bus/bus-track.c
src/libsystemd/sd-bus/busctl.c
src/libsystemd/sd-bus/sd-bus.c
src/libsystemd/sd-bus/test-bus-benchmark.c
src/libsystemd/sd-bus/test-bus-chat.c
src/libsystemd/sd-bus/test-bus-cleanup.c
src/libsystemd/sd-bus/test-bus-error.c
src/libsystemd/sd-bus/test-bus-gvariant.c
src/libsystemd/sd-bus/test-bus-kernel.c
src/libsystemd/sd-bus/test-bus-match.c
src/libsystemd/sd-bus/test-bus-objects.c
src/libsystemd/sd-bus/test-bus-server.c
src/shared/bus-util.c
src/shared/bus-util.h

index e0d6822f38f6c67771a517435d63011caf300593..5aaba1fe87264d06b2ca6448eafae0e167a9f07b 100644 (file)
@@ -63,6 +63,7 @@
 
 #define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket"
 #define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus"
+#define DEFAULT_SYSTEM_BUS_ADDRESS KERNEL_SYSTEM_BUS_ADDRESS ";" UNIX_SYSTEM_BUS_ADDRESS
 #define UNIX_USER_BUS_ADDRESS_FMT "unix:path=%s/bus"
 #define KERNEL_USER_BUS_ADDRESS_FMT "kernel:path=/sys/fs/kdbus/"UID_FMT"-user/bus"
 
index 6e07aea94e2c0128f12b76d413493cf0996dee68..3cc3b33ae70a7322c71afc478bd15fed940c61c3 100644 (file)
@@ -177,9 +177,8 @@ static int help(void) {
                "     --configuration=PATH Configuration file or directory\n"
                "     --machine=MACHINE    Connect to specified machine\n"
                "     --address=ADDRESS    Connect to the bus specified by ADDRESS\n"
-               "                          (default: %s)\n",
-               program_invocation_short_name,
-               is_kdbus_available() ? KERNEL_SYSTEM_BUS_ADDRESS : UNIX_SYSTEM_BUS_ADDRESS);
+               "                          (default: " DEFAULT_SYSTEM_BUS_ADDRESS ")\n",
+               program_invocation_short_name);
 
         return 0;
 }
@@ -263,7 +262,7 @@ static int parse_argv(int argc, char *argv[]) {
         }
 
         if (!arg_address) {
-                arg_address = strdup(is_kdbus_available() ? KERNEL_SYSTEM_BUS_ADDRESS : UNIX_SYSTEM_BUS_ADDRESS);
+                arg_address = strdup(DEFAULT_SYSTEM_BUS_ADDRESS);
                 if (!arg_address)
                         return log_oom();
         }
index c5dac396d3259e4b6b03616f6d38e5f2ef9907b3..f275f6705fb6bc5c0eff6045f532a7cd8548da62 100644 (file)
@@ -50,9 +50,8 @@ static int help(void) {
                "     --version            Show package version\n"
                "     --machine=MACHINE    Connect to specified machine\n"
                "     --address=ADDRESS    Connect to the bus specified by ADDRESS\n"
-               "                          (default: %s)\n",
-               program_invocation_short_name,
-               is_kdbus_available() ? KERNEL_SYSTEM_BUS_ADDRESS : UNIX_SYSTEM_BUS_ADDRESS);
+               "                          (default: " DEFAULT_SYSTEM_BUS_ADDRESS ")\n",
+               program_invocation_short_name);
 
         return 0;
 }
@@ -138,7 +137,7 @@ static int parse_argv(int argc, char *argv[]) {
         }
 
         if (!arg_address) {
-                arg_address = strdup(is_kdbus_available() ? KERNEL_SYSTEM_BUS_ADDRESS : UNIX_SYSTEM_BUS_ADDRESS);
+                arg_address = strdup(DEFAULT_SYSTEM_BUS_ADDRESS);
                 if (!arg_address)
                         return log_oom();
         }
index 2b84c441b2b9cc9e3848754a6639b25841425920..4af381b4b62510be609754378f8187156a16d834 100644 (file)
@@ -39,6 +39,7 @@
 #include "path-util.h"
 #include "dbus-automount.h"
 #include "bus-util.h"
+#include "bus-error.h"
 #include "formats-util.h"
 #include "process-util.h"
 #include "async.h"
index 7bd8cb8b91929eb6c9552144e3797b1846b08103..b790ec98befa71ca438ed10f99c2a03bad4866ad 100644 (file)
@@ -42,6 +42,7 @@
 #include "utf8.h"
 #include "env-util.h"
 #include "fileio.h"
+#include "bus-error.h"
 #include "bus-util.h"
 #include "bus-kernel.h"
 #include "formats-util.h"
index c78e8ad01b8eab6fcfff1e561427b3f09cf70458..a3870574732edbace69b1d8b12cd111a7bcc9fdd 100644 (file)
@@ -43,6 +43,7 @@
 #include "def.h"
 #include "smack-util.h"
 #include "bus-util.h"
+#include "bus-error.h"
 #include "selinux-util.h"
 #include "dbus-socket.h"
 #include "unit.h"
index 7027f83dfd600abbc8deae4c48e9782c5914296b..89758c6b1930ffb7385fc8c89e7310adeb0bea7a 100644 (file)
@@ -27,6 +27,7 @@
 #include "dbus-timer.h"
 #include "special.h"
 #include "bus-util.h"
+#include "bus-error.h"
 
 static const UnitActiveState state_translation_table[_TIMER_STATE_MAX] = {
         [TIMER_DEAD] = UNIT_INACTIVE,
index 25c8e209fd7b3fc607be5776ce1b7b81413d9bcf..4980fccc31b6a4c3f8e07291b63a18438b6c8770 100644 (file)
@@ -84,8 +84,7 @@ static int create_dbus_files(
                         fprintf(f, "Environment=DBUS_STARTER_BUS_TYPE=%s\n", type);
 
                         if (streq(type, "system"))
-                                fprintf(f, "Environment=DBUS_STARTER_ADDRESS=%s\n",
-                                        is_kdbus_available() ? KERNEL_SYSTEM_BUS_ADDRESS : UNIX_SYSTEM_BUS_ADDRESS);
+                                fprintf(f, "Environment=DBUS_STARTER_ADDRESS=" DEFAULT_SYSTEM_BUS_ADDRESS "\n");
                         else if (streq(type, "session")) {
                                 char *run;
 
@@ -95,10 +94,8 @@ static int create_dbus_files(
                                         return -EINVAL;
                                 }
 
-                                if (is_kdbus_available())
-                                        fprintf(f, "Environment=DBUS_STARTER_ADDRESS="KERNEL_USER_BUS_ADDRESS_FMT "\n", getuid());
-                                else
-                                        fprintf(f, "Environment=DBUS_STARTER_ADDRESS="UNIX_USER_BUS_ADDRESS_FMT "\n", run);
+                                fprintf(f, "Environment=DBUS_STARTER_ADDRESS="KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT "\n",
+                                        getuid(), run);
                         }
                 }
 
index ef3e087b285c7a588d64f7c9c49cb208c70f9f93..aeb48bedd13cc3a5603e6a1e2c48661b397a76d1 100644 (file)
@@ -32,6 +32,7 @@
 #include "bus-message.h"
 #include "bus-control.h"
 #include "bus-bloom.h"
+#include "bus-util.h"
 #include "capability.h"
 
 _public_ int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
index 79747e058b0552b82f7d26a1cfef9a35a8308829..af5f7da11c0ebada9fb46dd3af097af6a6fa5e0f 100644 (file)
@@ -22,6 +22,7 @@
 #include "bus-internal.h"
 #include "bus-message.h"
 #include "bus-signature.h"
+#include "bus-util.h"
 #include "bus-type.h"
 
 _public_ int sd_bus_emit_signal(
index 130fbf7a23f45c00cc516da08e4d2ed9b8e4edf1..1c365b7fcd54960da7dfc2e1cae6504882cbe304 100644 (file)
 #include "fileio.h"
 #include "audit.h"
 #include "bus-message.h"
+#include "bus-util.h"
 #include "strv.h"
 #include "bus-creds.h"
 #include "bus-label.h"
-#include "bus-internal.h"
 
 enum {
         CAP_OFFSET_INHERITABLE = 0,
index f4ab57f5bc2e9c8a361739c0e1566677c4435a87..fea796cd30483d01c7984a010f9072030fe120d1 100644 (file)
@@ -371,45 +371,3 @@ int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error) {
 
         return 1;
 }
-
-bool is_kdbus_wanted(void) {
-        _cleanup_free_ char *value = NULL;
-#ifdef ENABLE_KDBUS
-        const bool configured = true;
-#else
-        const bool configured = false;
-#endif
-        int r;
-
-        if (get_proc_cmdline_key("kdbus", NULL) > 0)
-                return true;
-
-        r = get_proc_cmdline_key("kdbus=", &value);
-        if (r <= 0)
-                return configured;
-
-        return parse_boolean(value) == 1;
-}
-
-bool is_kdbus_available(void) {
-        static int cached = -1;
-        _cleanup_close_ int fd = -1;
-        struct kdbus_cmd cmd = { .size = sizeof(cmd), .flags = KDBUS_FLAG_NEGOTIATE };
-
-        if (cached >= 0)
-                return (bool) cached;
-
-        if (!is_kdbus_wanted()) {
-                cached = false;
-                return false;
-        }
-
-        fd = open("/sys/fs/kdbus/control", O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
-        if (fd < 0) {
-                cached = false;
-                return false;
-        }
-
-        cached = ioctl(fd, KDBUS_CMD_BUS_MAKE, &cmd) >= 0;
-        return cached;
-}
index 9b68fdd64207e94bee436538839d3d05797bcfe8..7af61a9433ff1e0c20586aa1ad92b30a26687ac0 100644 (file)
 #include "bus-kernel.h"
 #include "kdbus.h"
 
-typedef enum BusTransport {
-        BUS_TRANSPORT_LOCAL,
-        BUS_TRANSPORT_REMOTE,
-        BUS_TRANSPORT_MACHINE,
-        _BUS_TRANSPORT_MAX,
-        _BUS_TRANSPORT_INVALID = -1
-} BusTransport;
-
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_flush_close_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_slot*, sd_bus_slot_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_message*, sd_bus_message_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_creds*, sd_bus_creds_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_track*, sd_bus_track_unref);
-
-#define _cleanup_bus_unref_ _cleanup_(sd_bus_unrefp)
-#define _cleanup_bus_flush_close_unref_ _cleanup_(sd_bus_flush_close_unrefp)
-#define _cleanup_bus_slot_unref_ _cleanup_(sd_bus_slot_unrefp)
-#define _cleanup_bus_message_unref_ _cleanup_(sd_bus_message_unrefp)
-#define _cleanup_bus_creds_unref_ _cleanup_(sd_bus_creds_unrefp)
-#define _cleanup_bus_track_unref_ _cleanup_(sd_bus_slot_unrefp)
-#define _cleanup_bus_error_free_ _cleanup_(sd_bus_error_free)
-
 struct reply_callback {
         sd_bus_message_handler_t callback;
         usec_t timeout;
@@ -417,9 +394,6 @@ int bus_get_root_path(sd_bus *bus);
 
 int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error);
 
-bool is_kdbus_wanted(void);
-bool is_kdbus_available(void);
-
 #define bus_assert_return(expr, r, error)                               \
         do {                                                            \
                 if (!assert_log(expr))                                  \
index 6750cbd77bd74030536e251f96209feaf3de13f8..577a8b44c362835359f66e277820bab5ccce4b1d 100644 (file)
@@ -45,6 +45,7 @@
 #include "bus-message.h"
 #include "bus-kernel.h"
 #include "bus-bloom.h"
+#include "bus-util.h"
 #include "bus-label.h"
 
 #define UNIQUE_NAME_MAX (3+DECIMAL_STR_MAX(uint64_t))
index 7175cbe8ed9f7a73ddf920df82481b168e4df5b5..2b83f439a7ba49f1d3f7582646a5d41c4e329535 100644 (file)
@@ -22,6 +22,7 @@
 #include "bus-internal.h"
 #include "bus-message.h"
 #include "bus-match.h"
+#include "bus-util.h"
 #include "strv.h"
 
 /* Example:
index 970aaabdc2b988b2bfeefb87753657d35fa06a78..a21ed8cb62859ca19b8e56d49576820e2fd874b2 100644 (file)
@@ -35,6 +35,7 @@
 #include "bus-type.h"
 #include "bus-signature.h"
 #include "bus-gvariant.h"
+#include "bus-util.h"
 
 static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
 
index a8e9a12494667273cb76254e3acf8f1830911548..0593aa658aab62d7c5098ea223ada6b178983159 100644 (file)
@@ -26,6 +26,7 @@
 #include "bus-type.h"
 #include "bus-signature.h"
 #include "bus-introspect.h"
+#include "bus-util.h"
 #include "bus-slot.h"
 #include "bus-objects.h"
 
index 7803e39c3def331a8024d0896af68d9823644d22..e43891be258477a686b397855e741d979e2e613e 100644 (file)
@@ -20,6 +20,7 @@
 ***/
 
 #include "sd-bus.h"
+#include "bus-util.h"
 #include "bus-internal.h"
 #include "bus-track.h"
 
index 181621ffc7298a701e19433636c176458b9452d2..a1f0f30d6cdc39284e5ec44e208af9bb46424b95 100644 (file)
@@ -30,6 +30,7 @@
 #include "set.h"
 
 #include "sd-bus.h"
+#include "bus-internal.h"
 #include "bus-util.h"
 #include "bus-dump.h"
 #include "bus-signature.h"
index 31cdcb4e5b44af3835e009846ae41528be774466..5434d62af5821249fe81f1e5f7de8f345c641be8 100644 (file)
@@ -44,6 +44,7 @@
 #include "bus-kernel.h"
 #include "bus-control.h"
 #include "bus-objects.h"
+#include "bus-util.h"
 #include "bus-container.h"
 #include "bus-protocol.h"
 #include "bus-track.h"
@@ -1173,10 +1174,7 @@ int bus_set_address_system(sd_bus *b) {
         if (e)
                 return sd_bus_set_address(b, e);
 
-        if (is_kdbus_available())
-                return sd_bus_set_address(b, KERNEL_SYSTEM_BUS_ADDRESS);
-
-        return sd_bus_set_address(b, UNIX_SYSTEM_BUS_ADDRESS);
+        return sd_bus_set_address(b, DEFAULT_SYSTEM_BUS_ADDRESS);
 }
 
 _public_ int sd_bus_open_system(sd_bus **ret) {
@@ -1224,17 +1222,16 @@ int bus_set_address_user(sd_bus *b) {
                 return sd_bus_set_address(b, e);
 
         e = secure_getenv("XDG_RUNTIME_DIR");
-        if (is_kdbus_available())
-                (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT, getuid());
-        else if (e) {
+        if (e) {
                 _cleanup_free_ char *ee = NULL;
 
                 ee = bus_address_escape(e);
                 if (!ee)
                         return -ENOMEM;
 
-                (void) asprintf(&b->address, UNIX_USER_BUS_ADDRESS_FMT, ee);
-        }
+                (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT, getuid(), ee);
+        } else
+                (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT, getuid());
 
         if (!b->address)
                 return -ENOMEM;
index d3bf6da850ca2e4a414029f985e4d0bc7554a32c..d14110aa04e9951d3599bfeda1d145828b4245ea 100644 (file)
@@ -28,6 +28,7 @@
 #include "sd-bus.h"
 #include "bus-kernel.h"
 #include "bus-internal.h"
+#include "bus-util.h"
 
 #define MAX_SIZE (2*1024*1024)
 
index a0aecc1f550923aa9d6ef6f1000ff3f456f18eb5..20f1b532b71c3e342c8f58806f57dcb6933f5f78 100644 (file)
@@ -33,6 +33,7 @@
 #include "bus-error.h"
 #include "bus-match.h"
 #include "bus-internal.h"
+#include "bus-util.h"
 
 static int match_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
         log_info("Match triggered! interface=%s member=%s", strna(sd_bus_message_get_interface(m)), strna(sd_bus_message_get_member(m)));
index b483d47468481736f4d6d940f1634b525fa69080..f58688059304e821be5be2495317eeaf9814eb9f 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdio.h>
 
 #include "sd-bus.h"
+#include "bus-util.h"
 #include "bus-internal.h"
 #include "bus-message.h"
 #include "refcnt.h"
index f2cfbc706fbb827984337ba654b8ced54151bc5a..5753c04b0e818dac8e9a69fe3818a02cf9744e25 100644 (file)
@@ -20,6 +20,7 @@
 ***/
 
 #include "sd-bus.h"
+#include "bus-error.h"
 #include "bus-util.h"
 #include "errno-list.h"
 #include "bus-common-errors.h"
index 414d4e9a58f09c4264358bcf60883c0607b14539..b078bdc5f6809c26fa82ab2166b549608a524264 100644 (file)
@@ -27,6 +27,7 @@
 #include "macro.h"
 #include "sd-bus.h"
 #include "bus-gvariant.h"
+#include "bus-util.h"
 #include "bus-internal.h"
 #include "bus-message.h"
 #include "bus-dump.h"
index 6284153a58d63974a3ec0ea3d91d3ddbaf20a699..6506eaab2e52e414e15735c8c21aad3de08dc465 100644 (file)
@@ -25,8 +25,8 @@
 #include "log.h"
 
 #include "sd-bus.h"
-#include "bus-util.h"
 #include "bus-kernel.h"
+#include "bus-util.h"
 #include "bus-dump.h"
 
 int main(int argc, char *argv[]) {
index e29975db44e45c322081f8666c8a7a3217ed1d0c..75ea28371bf250eb5f4699e967d85c905287c40f 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "bus-match.h"
 #include "bus-message.h"
+#include "bus-util.h"
 #include "bus-slot.h"
 
 static bool mask[32];
index 195013f49af6320141533e6a021087c87d563c0c..0a35b750b39620bfc2eed5fa2d8f07a1dd8be70d 100644 (file)
@@ -30,6 +30,7 @@
 #include "sd-bus.h"
 #include "bus-internal.h"
 #include "bus-message.h"
+#include "bus-util.h"
 #include "bus-dump.h"
 
 struct context {
index 604df098cc67f42c6a2fd426ec628c96b085ef34..080d8eddb76ddc2fa4c939c13050cf6a5a3eefa7 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "sd-bus.h"
 #include "bus-internal.h"
+#include "bus-util.h"
 
 struct context {
         int fds[2];
index 1bcb8903f38ade5c071dfe497ae9dcafa5bf6205..1369a61458af9f098f3586b6a2e519fd5ad2b067 100644 (file)
@@ -2032,3 +2032,37 @@ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_send
         *ret_external = external;
         return 1;
 }
+
+bool is_kdbus_wanted(void) {
+        _cleanup_free_ char *value = NULL;
+#ifdef ENABLE_KDBUS
+        const bool configured = true;
+#else
+        const bool configured = false;
+#endif
+
+        int r;
+
+        if (get_proc_cmdline_key("kdbus", NULL) > 0)
+                return true;
+
+        r = get_proc_cmdline_key("kdbus=", &value);
+        if (r <= 0)
+                return configured;
+
+        return parse_boolean(value) == 1;
+}
+
+bool is_kdbus_available(void) {
+        _cleanup_close_ int fd = -1;
+        struct kdbus_cmd cmd = { .size = sizeof(cmd), .flags = KDBUS_FLAG_NEGOTIATE };
+
+        if (!is_kdbus_wanted())
+                return false;
+
+        fd = open("/sys/fs/kdbus/control", O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
+        if (fd < 0)
+                return false;
+
+        return ioctl(fd, KDBUS_CMD_BUS_MAKE, &cmd) >= 0;
+}
index 0c683c071301281c225c32b8bf07f90da0452784..4ae216b7d9c400cab586d4e18fccb0a23260d3a3 100644 (file)
 
 #include "sd-event.h"
 #include "sd-bus.h"
-#include "bus-error.h"
-#include "bus-internal.h"
 #include "hashmap.h"
 #include "install.h"
 #include "time-util.h"
 
+typedef enum BusTransport {
+        BUS_TRANSPORT_LOCAL,
+        BUS_TRANSPORT_REMOTE,
+        BUS_TRANSPORT_MACHINE,
+        _BUS_TRANSPORT_MAX,
+        _BUS_TRANSPORT_INVALID = -1
+} BusTransport;
+
 typedef int (*bus_property_set_t) (sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata);
 
 struct bus_properties_map {
@@ -129,6 +135,21 @@ typedef struct UnitInfo {
 
 int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u);
 
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_flush_close_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_slot*, sd_bus_slot_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_message*, sd_bus_message_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_creds*, sd_bus_creds_unref);
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_track*, sd_bus_track_unref);
+
+#define _cleanup_bus_unref_ _cleanup_(sd_bus_unrefp)
+#define _cleanup_bus_flush_close_unref_ _cleanup_(sd_bus_flush_close_unrefp)
+#define _cleanup_bus_slot_unref_ _cleanup_(sd_bus_slot_unrefp)
+#define _cleanup_bus_message_unref_ _cleanup_(sd_bus_message_unrefp)
+#define _cleanup_bus_creds_unref_ _cleanup_(sd_bus_creds_unrefp)
+#define _cleanup_bus_track_unref_ _cleanup_(sd_bus_slot_unrefp)
+#define _cleanup_bus_error_free_ _cleanup_(sd_bus_error_free)
+
 #define BUS_DEFINE_PROPERTY_GET_ENUM(function, name, type)              \
         int function(sd_bus *bus,                                       \
                      const char *path,                                  \
@@ -176,3 +197,6 @@ int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, Un
 
 int bus_path_encode_unique(sd_bus *b, const char *prefix, const char *sender_id, const char *external_id, char **ret_path);
 int bus_path_decode_unique(const char *path, const char *prefix, char **ret_sender, char **ret_external);
+
+bool is_kdbus_wanted(void);
+bool is_kdbus_available(void);