bus: add cal to determine machine id of an owner of a service

This commit is contained in:
Lennart Poettering 2013-04-23 11:18:17 -03:00
parent 195f8e3612
commit 7066618570
2 changed files with 33 additions and 0 deletions

View 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);
}

View 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 */