mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
bus: CREDS and NAMES are optional kdbus metadata now
This commit is contained in:
parent
0571a6b0a9
commit
16be43684f
@ -237,8 +237,9 @@ enum {
|
||||
KDBUS_HELLO_STARTER = 1 << 0,
|
||||
KDBUS_HELLO_ACCEPT_FD = 1 << 1,
|
||||
|
||||
/* The following have an effect on directed messages only --
|
||||
* not for broadcasts */
|
||||
/* subscription for metadata to attach */
|
||||
KDBUS_HELLO_ATTACH_CREDS = 1 << 8,
|
||||
KDBUS_HELLO_ATTACH_NAMES = 1 << 9,
|
||||
KDBUS_HELLO_ATTACH_COMM = 1 << 10,
|
||||
KDBUS_HELLO_ATTACH_EXE = 1 << 11,
|
||||
KDBUS_HELLO_ATTACH_CMDLINE = 1 << 12,
|
||||
|
@ -26,6 +26,8 @@ global:
|
||||
sd_bus_set_server;
|
||||
sd_bus_set_anonymous;
|
||||
sd_bus_negotiate_fds;
|
||||
sd_bus_negotiate_attach_creds;
|
||||
sd_bus_negotiate_attach_names;
|
||||
sd_bus_negotiate_attach_comm;
|
||||
sd_bus_negotiate_attach_exe;
|
||||
sd_bus_negotiate_attach_cmdline;
|
||||
|
@ -264,6 +264,24 @@ _public_ int sd_bus_negotiate_fds(sd_bus *bus, int b) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_negotiate_attach_creds(sd_bus *bus, int b) {
|
||||
assert_return(bus, -EINVAL);
|
||||
assert_return(bus->state == BUS_UNSET, -EPERM);
|
||||
assert_return(!bus_pid_changed(bus), -ECHILD);
|
||||
|
||||
SET_FLAG(bus->hello_flags, KDBUS_HELLO_ATTACH_CREDS, b);
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_negotiate_attach_names(sd_bus *bus, int b) {
|
||||
assert_return(bus, -EINVAL);
|
||||
assert_return(bus->state == BUS_UNSET, -EPERM);
|
||||
assert_return(!bus_pid_changed(bus), -ECHILD);
|
||||
|
||||
SET_FLAG(bus->hello_flags, KDBUS_HELLO_ATTACH_NAMES, b);
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_negotiate_attach_comm(sd_bus *bus, int b) {
|
||||
assert_return(bus, -EINVAL);
|
||||
assert_return(bus->state == BUS_UNSET, -EPERM);
|
||||
|
@ -62,6 +62,8 @@ int main(int argc, char *argv[]) {
|
||||
r = sd_bus_set_address(b, address);
|
||||
assert_se(r >= 0);
|
||||
|
||||
assert_se(sd_bus_negotiate_attach_creds(a, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_names(a, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_comm(a, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_exe(a, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_cmdline(a, 1) >= 0);
|
||||
@ -70,6 +72,8 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(sd_bus_negotiate_attach_selinux_context(a, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_audit(a, 1) >= 0);
|
||||
|
||||
assert_se(sd_bus_negotiate_attach_creds(b, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_names(b, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_comm(b, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_exe(b, 1) >= 0);
|
||||
assert_se(sd_bus_negotiate_attach_cmdline(b, 1) >= 0);
|
||||
|
@ -73,6 +73,8 @@ int sd_bus_set_bus_client(sd_bus *bus, int b);
|
||||
int sd_bus_set_server(sd_bus *bus, int b, sd_id128_t server_id);
|
||||
int sd_bus_set_anonymous(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_fds(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_attach_creds(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_attach_names(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_attach_comm(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_attach_exe(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_attach_cmdline(sd_bus *bus, int b);
|
||||
|
Loading…
Reference in New Issue
Block a user