zero(hello);
hello.size = sizeof(hello);
hello.conn_flags = b->hello_flags;
+ hello.attach_flags = b->attach_flags;
hello.pool_size = KDBUS_POOL_SIZE;
r = ioctl(b->input_fd, KDBUS_CMD_HELLO, &hello);
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;
for (i = 0; i < b->n_memfd_cache; i++)
close_and_munmap(b->memfd_cache[i].fd, b->memfd_cache[i].address, b->memfd_cache[i].size);
}
+
+int sd_bus_kernel_translate_request_name_flags(uint64_t sd_bus_flags, uint64_t *kdbus_flags) {
+
+ assert_return(kdbus_flags != NULL, -EINVAL);
+
+ *kdbus_flags = 0;
+
+ if (sd_bus_flags & SD_BUS_NAME_ALLOW_REPLACEMENT)
+ *kdbus_flags |= KDBUS_NAME_ALLOW_REPLACEMENT;
+
+ if (sd_bus_flags & SD_BUS_NAME_REPLACE_EXISTING)
+ *kdbus_flags |= KDBUS_NAME_REPLACE_EXISTING;
+
+ if (!(sd_bus_flags & SD_BUS_NAME_DO_NOT_QUEUE))
+ *kdbus_flags |= KDBUS_NAME_QUEUE;
+
+ return 0;
+}