]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus-util: introduce bus_get_instance_id()
authorMike Yuan <me@yhndnzj.com>
Mon, 13 Jan 2025 15:42:34 +0000 (16:42 +0100)
committerMike Yuan <me@yhndnzj.com>
Mon, 13 Jan 2025 20:52:19 +0000 (21:52 +0100)
src/shared/bus-util.c
src/shared/bus-util.h

index 99be9d539559dd401f70c37e6ec4796e279c3e35..0a887aec7929653433f6437a25b5aa6e0b389a43 100644 (file)
@@ -905,6 +905,29 @@ int bus_query_sender_pidref(
         return bus_creds_get_pidref(creds, ret);
 }
 
+int bus_get_instance_id(sd_bus *bus, sd_id128_t *ret) {
+        _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+        int r;
+
+        assert(bus);
+        assert(ret);
+
+        r = sd_bus_call_method(bus,
+                               "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "GetId",
+                               /* error = */ NULL, &reply,
+                               NULL);
+        if (r < 0)
+                return r;
+
+        const char *id;
+
+        r = sd_bus_message_read_basic(reply, 's', &id);
+        if (r < 0)
+                return r;
+
+        return sd_id128_from_string(id, ret);
+}
+
 static const char* const bus_transport_table[] = {
         [BUS_TRANSPORT_LOCAL]   = "local",
         [BUS_TRANSPORT_REMOTE]  = "remote",
index 47c0711868b50a07f5956d4a820d93b4de516bb8..5fb4bcca9faaad8e06f9325c918b3dccf24da357 100644 (file)
@@ -81,4 +81,6 @@ int bus_register_malloc_status(sd_bus *bus, const char *destination);
 int bus_creds_get_pidref(sd_bus_creds *c, PidRef *ret);
 int bus_query_sender_pidref(sd_bus_message *m, PidRef *ret);
 
+int bus_get_instance_id(sd_bus *bus, sd_id128_t *ret);
+
 const char* bus_transport_to_string(BusTransport transport) _const_;