chiark / gitweb /
bus: expose priority field of messages, in preparation for prioq support
[elogind.git] / src / libsystemd / sd-bus / bus-kernel.c
index 833ea5574ddbde16fc180ace3973815287e3ec95..77ad5ca506869ea8db5ea0b965636bed4cc931b9 100644 (file)
@@ -260,6 +260,7 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) {
                 m->destination ? unique : KDBUS_DST_ID_BROADCAST;
         m->kdbus->payload_type = KDBUS_PAYLOAD_DBUS;
         m->kdbus->cookie = m->header->serial;
+        m->kdbus->priority = m->priority;
 
         if (m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED)
                 m->kdbus->cookie_reply = m->reply_cookie;
@@ -500,9 +501,13 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
                         break;
 
                 case KDBUS_ITEM_TIMESTAMP:
-                        m->realtime = d->timestamp.realtime_ns / NSEC_PER_USEC;
-                        m->monotonic = d->timestamp.monotonic_ns / NSEC_PER_USEC;
-                        m->seqnum = d->timestamp.seqnum;
+
+                        if (bus->attach_flags & KDBUS_ATTACH_TIMESTAMP) {
+                                m->realtime = d->timestamp.realtime_ns / NSEC_PER_USEC;
+                                m->monotonic = d->timestamp.monotonic_ns / NSEC_PER_USEC;
+                                m->seqnum = d->timestamp.seqnum;
+                        }
+
                         break;
 
                 case KDBUS_ITEM_PID_COMM:
@@ -568,6 +573,11 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
                                 goto fail;
                         break;
 
+                case KDBUS_ITEM_CONN_NAME:
+                        m->creds.conn_name = d->str;
+                        m->creds.mask |= SD_BUS_CREDS_CONNECTION_NAME & bus->creds_mask;
+                        break;
+
                 case KDBUS_ITEM_FDS:
                 case KDBUS_ITEM_SECLABEL:
                         break;
@@ -1240,6 +1250,9 @@ int kdbus_translate_attach_flags(uint64_t mask, uint64_t *kdbus_mask) {
         if (mask & SD_BUS_CREDS_WELL_KNOWN_NAMES)
                 m |= KDBUS_ATTACH_NAMES;
 
+        if (mask & SD_BUS_CREDS_CONNECTION_NAME)
+                m |= KDBUS_ATTACH_CONN_NAME;
+
         *kdbus_mask = m;
         return 0;
 }