mirror of
https://github.com/systemd/systemd
synced 2024-09-16 06:43:18 +00:00
bus: add cal to determine machine id of an owner of a service
This commit is contained in:
parent
195f8e3612
commit
7066618570
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Reference in a new issue