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

Lennart Poettering lennart at kemper.freedesktop.org
Fri Apr 12 13:53:40 PDT 2013


 src/libsystemd-bus/bus-kernel.c      |   22 ++++++++++++++++++++--
 src/libsystemd-bus/test-bus-kernel.c |    3 +++
 2 files changed, 23 insertions(+), 2 deletions(-)

New commits:
commit 2da833ac2d91abc6b4e3fa613b7eebbaba76144a
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 12 22:51:23 2013 +0200

    kdbus: make our little test pass cleanly again

diff --git a/src/libsystemd-bus/test-bus-kernel.c b/src/libsystemd-bus/test-bus-kernel.c
index 8266272..af82466 100644
--- a/src/libsystemd-bus/test-bus-kernel.c
+++ b/src/libsystemd-bus/test-bus-kernel.c
@@ -106,6 +106,9 @@ int main(int argc, char *argv[]) {
 
                 bus_message_dump(m);
                 assert_se(sd_bus_message_rewind(m, true) >= 0);
+
+                if (sd_bus_message_is_method_call(m, "an.inter.face", "AMethod"))
+                        break;
         }
 
         r = sd_bus_release_name(a, "net.x0pointer.foobar");

commit b5baa8fe8838870cc2bd7cef0949299f061ae15d
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 12 22:48:34 2013 +0200

    kbdus: add null bloom filter to our messages
    
    This makes things work again with the requirements of the kernel on
    bloom filters.

diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c
index c190138..7918aea 100644
--- a/src/libsystemd-bus/bus-kernel.c
+++ b/src/libsystemd-bus/bus-kernel.c
@@ -69,7 +69,7 @@ static void append_payload_vec(struct kdbus_msg_data **d, const void *p, size_t
 
 static void append_destination(struct kdbus_msg_data **d, const char *s, size_t length) {
         assert(d);
-        assert(d);
+        assert(s);
 
         *d = ALIGN8_PTR(*d);
 
@@ -80,6 +80,19 @@ static void append_destination(struct kdbus_msg_data **d, const char *s, size_t
         *d = (struct kdbus_msg_data*) ((uint8_t*) *d + (*d)->size);
 }
 
+static void append_bloom(struct kdbus_msg_data **d, const void *p, size_t length) {
+        assert(d);
+        assert(p);
+
+        *d = ALIGN8_PTR(*d);
+
+        (*d)->size = offsetof(struct kdbus_msg_data, data) + length;
+        (*d)->type = KDBUS_MSG_BLOOM;
+        memcpy((*d)->data, p, length);
+
+        *d = (struct kdbus_msg_data*) ((uint8_t*) *d + (*d)->size);
+}
+
 static int bus_message_setup_kmsg(sd_bus_message *m) {
         struct kdbus_msg_data *d;
         bool well_known;
@@ -107,6 +120,8 @@ static int bus_message_setup_kmsg(sd_bus_message *m) {
         /* Add in fixed header, fields header, fields header padding and payload */
         sz += 4 * ALIGN8(offsetof(struct kdbus_msg_data, vec) + sizeof(struct kdbus_vec));
 
+        sz += ALIGN8(offsetof(struct kdbus_msg_data, data) + 5);
+
         /* Add in well-known destination header */
         if (well_known) {
                 dl = strlen(m->destination);
@@ -124,7 +139,7 @@ static int bus_message_setup_kmsg(sd_bus_message *m) {
                 ((m->header->flags & SD_BUS_MESSAGE_NO_AUTO_START) ? KDBUS_MSG_FLAGS_NO_AUTO_START : 0);
         m->kdbus->dst_id =
                 well_known ? 0 :
-                m->destination ? unique : (uint64_t) -1;
+                m->destination ? unique : KDBUS_DST_ID_BROADCAST;
         m->kdbus->payload_type = KDBUS_PAYLOAD_DBUS1;
         m->kdbus->cookie = m->header->serial;
 
@@ -150,6 +165,9 @@ static int bus_message_setup_kmsg(sd_bus_message *m) {
         if (m->body)
                 append_payload_vec(&d, m->body, m->header->body_size);
 
+        if (m->kdbus->dst_id == KDBUS_DST_ID_BROADCAST)
+                append_bloom(&d, "bloom", 5);
+
         m->kdbus->size = (uint8_t*) d - (uint8_t*) m->kdbus;
         assert(m->kdbus->size <= sz);
 



More information about the systemd-commits mailing list