chiark / gitweb /
bus: add cal to determine machine id of an owner of a service
authorLennart Poettering <lennart@poettering.net>
Tue, 23 Apr 2013 14:18:17 +0000 (11:18 -0300)
committerLennart Poettering <lennart@poettering.net>
Tue, 23 Apr 2013 19:00:32 +0000 (16:00 -0300)
src/libsystemd-bus/bus-control.c
src/systemd/sd-bus.h

index e980bfc740d1f6466bd105febd11dedac9be1208..a4dc9bf511e92584a1dc81c0e1cc4267e5410755 100644 (file)
@@ -344,3 +344,35 @@ int bus_remove_match_internal(sd_bus *bus, const char *match) {
                         "s",
                         match);
 }
+
+int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128_t *machine) {
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
+        const char *mid;
+        int r;
+
+        if (!bus)
+                return -EINVAL;
+        if (!name)
+                return -EINVAL;
+
+        if (streq_ptr(name, bus->unique_name))
+                return sd_id128_get_machine(machine);
+
+        r = sd_bus_call_method(bus,
+                               name,
+                               "/",
+                               "org.freedesktop.DBus.Peer",
+                               "GetMachineId",
+                               NULL,
+                               &reply,
+                               NULL);
+
+        if (r < 0)
+                return r;
+
+        r = sd_bus_message_read(reply, "s", &mid);
+        if (r < 0)
+                return r;
+
+        return sd_id128_from_string(mid, machine);
+}
index 8824efeabaa81148d439cea884f6924506f73d92..36fab9ffa15c9125b61d4159518d02660e124803 100644 (file)
@@ -179,6 +179,7 @@ int sd_bus_list_names(sd_bus *bus, char ***l);
 int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner);
 int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid);
 int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid);
+int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128_t *machine);
 
 /* Error structures */