[systemd-commits] src/libsystemd-bus src/systemd

Kay Sievers kay at kemper.freedesktop.org
Sun Nov 17 13:43:01 PST 2013


 src/libsystemd-bus/kdbus.h            |    5 +++--
 src/libsystemd-bus/libsystemd-bus.sym |    2 ++
 src/libsystemd-bus/sd-bus.c           |   18 ++++++++++++++++++
 src/libsystemd-bus/test-bus-kernel.c  |    4 ++++
 src/systemd/sd-bus.h                  |    2 ++
 5 files changed, 29 insertions(+), 2 deletions(-)

New commits:
commit 16be43684f6d9bbd494b157682f5473460fbf98a
Author: Kay Sievers <kay at vrfy.org>
Date:   Sun Nov 17 22:35:58 2013 +0100

    bus: CREDS and NAMES are optional kdbus metadata now

diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h
index 6015074..fadb2f2 100644
--- a/src/libsystemd-bus/kdbus.h
+++ b/src/libsystemd-bus/kdbus.h
@@ -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,
diff --git a/src/libsystemd-bus/libsystemd-bus.sym b/src/libsystemd-bus/libsystemd-bus.sym
index f1abf01..03353f1 100644
--- a/src/libsystemd-bus/libsystemd-bus.sym
+++ b/src/libsystemd-bus/libsystemd-bus.sym
@@ -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;
diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index 95469d8..2345c73 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -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);
diff --git a/src/libsystemd-bus/test-bus-kernel.c b/src/libsystemd-bus/test-bus-kernel.c
index 511c547..0504502 100644
--- a/src/libsystemd-bus/test-bus-kernel.c
+++ b/src/libsystemd-bus/test-bus-kernel.c
@@ -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);
diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
index 61f232c..cff4e53 100644
--- a/src/systemd/sd-bus.h
+++ b/src/systemd/sd-bus.h
@@ -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);



More information about the systemd-commits mailing list