From: Daniel Mack Date: Fri, 29 Nov 2013 15:24:40 +0000 (+0100) Subject: libsystemd-bus: copy over kdbus provided 128-bit bus id X-Git-Tag: v209~1220 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=c58dea190c4cc66330942ccb7a9d485ff45504d3;p=elogind.git libsystemd-bus: copy over kdbus provided 128-bit bus id kdbus now copies the bus unique id back to userspace in the hello ioctl(). Use these bytes to set the server id of the sd_bus. --- diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 959392a62..d2fcfd7f9 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -357,6 +357,9 @@ int bus_kernel_take_fd(sd_bus *b) { b->bus_client = true; b->can_fds = !!(hello.conn_flags & KDBUS_HELLO_ACCEPT_FD); + /* the kernel told us the UUID of the underlying bus */ + memcpy(b->server_id.bytes, hello.id128, sizeof(b->server_id.bytes)); + r = bus_start_running(b); if (r < 0) return r; diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 52085b92c..c69c1feec 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -276,6 +276,8 @@ struct kdbus_cmd_hello { __u64 bloom_size; /* The bloom filter size chosen by the * bus owner */ __u64 pool_size; /* maximum size of pool buffer */ + __u8 id128[16]; /* the unique id of the bus */ + struct kdbus_item items[0]; };