chiark / gitweb /
bus: update kdbus.h
[elogind.git] / src / libsystemd-bus / kdbus.h
index 61dc33d8d5b7b8cfab4dc24df6f838b7a8924326..f6423c9d42197f5916edcae7bfb0a9f7f599a412 100644 (file)
@@ -193,6 +193,8 @@ struct kdbus_policy {
 
 /**
  * enum kdbus_item_type - item types to chain data in a list
+ * @_KDBUS_ITEM_NULL:          Uninitialized/invalid
+ * @_KDBUS_ITEM_USER_BASE:     Start of user items
  * @KDBUS_ITEM_PAYLOAD_VEC:    Vector to data
  * @KDBUS_ITEM_PAYLOAD_OFF:    Data at returned offset to message head
  * @KDBUS_ITEM_PAYLOAD_MEMFD:  Data as sealed memfd
@@ -200,10 +202,11 @@ struct kdbus_policy {
  * @KDBUS_ITEM_BLOOM:          For broadcasts, carries bloom filter
  * @KDBUS_ITEM_BLOOM_SIZE:     Desired bloom size, used by KDBUS_CMD_BUS_MAKE
  * @KDBUS_ITEM_DST_NAME:       Destination's well-known name
- * @KDBUS_ITEM_PRIORITY:       Queue priority for message
  * @KDBUS_ITEM_MAKE_NAME:      Name of namespace, bus, endpoint
+ * @_KDBUS_ITEM_POLICY_BASE:   Start of policy items
  * @KDBUS_ITEM_POLICY_NAME:    Policy in struct kdbus_policy
  * @KDBUS_ITEM_POLICY_ACCESS:  Policy in struct kdbus_policy
+ * @_KDBUS_ITEM_ATTACH_BASE:   Start of metadata attach items
  * @KDBUS_ITEM_NAME:           Well-know name with flags
  * @KDBUS_ITEM_ID:             Connection ID
  * @KDBUS_ITEM_TIMESTAMP:      Timestamp
@@ -216,6 +219,7 @@ struct kdbus_policy {
  * @KDBUS_ITEM_CAPS:           The process capabilities
  * @KDBUS_ITEM_SECLABEL:       The security label
  * @KDBUS_ITEM_AUDIT:          The audit IDs
+ * @_KDBUS_ITEM_KERNEL_BASE:   Start of kernel-generated message items
  * @KDBUS_ITEM_NAME_ADD:       Notify in struct kdbus_notify_name_change
  * @KDBUS_ITEM_NAME_REMOVE:    Notify in struct kdbus_notify_name_change
  * @KDBUS_ITEM_NAME_CHANGE:    Notify in struct kdbus_notify_name_change
@@ -234,7 +238,6 @@ enum kdbus_item_type {
        KDBUS_ITEM_BLOOM,
        KDBUS_ITEM_BLOOM_SIZE,
        KDBUS_ITEM_DST_NAME,
-       KDBUS_ITEM_PRIORITY,
        KDBUS_ITEM_MAKE_NAME,
 
        _KDBUS_ITEM_POLICY_BASE = 0x400,
@@ -313,9 +316,11 @@ struct kdbus_item {
 
 /**
  * enum kdbus_msg_flags - type of message
- * @KDBUS_MSG_FLAGS_EXPECT_REPLY:      Expect a reply message, used for method
- *                                     calls. The cookie identifies the
- *                                     message and the respective reply
+ * @KDBUS_MSG_FLAGS_EXPECT_REPLY:      Expect a reply message, used for
+ *                                     method calls. The userspace-supplied
+ *                                     cookie identifies the message and the
+ *                                     respective reply carries the cookie
+ *                                     in cookie_reply
  * @KDBUS_MSG_FLAGS_NO_AUTO_START:     Do not start a service, if the addressed
  *                                     name is not currently active
  */
@@ -327,11 +332,11 @@ enum kdbus_msg_flags {
 /**
  * enum kdbus_payload_type - type of payload carried by message
  * @KDBUS_PAYLOAD_KERNEL:      Kernel-generated simple message
- * @KDBUS_PAYLOAD_DBUS:                D-Bus marshalling
+ * @KDBUS_PAYLOAD_DBUS:                D-Bus marshalling "DBusDBus"
  */
 enum kdbus_payload_type {
        KDBUS_PAYLOAD_KERNEL,
-       KDBUS_PAYLOAD_DBUS      = 0x4442757344427573ULL, /* 'DBusDBus' */
+       KDBUS_PAYLOAD_DBUS      = 0x4442757344427573ULL,
 };
 
 /**
@@ -341,21 +346,15 @@ enum kdbus_payload_type {
  * @dst_id:            64-bit ID of the destination connection
  * @src_id:            64-bit ID of the source connection
  * @payload_type:      Payload type (KDBUS_PAYLOAD_*)
- * @cookie:            Userspace-supplied cookie
- * @cookie_reply:      For kernel-generated messages, this is the cookie
- *                     the message is a reply to
- * @timeout_ns:                For non-kernel-generated messages, this denotes the
- *                     message timeout in nanoseconds. A message has to be
- *                     received with KDBUS_CMD_MSG_RECV by the destination
- *                     connection within this time frame. For messages that
- *                     have KDBUS_MSG_FLAGS_EXPECT_REPLY set in @flags,
- *                     this value also denotes the timeout for the reply to
- *                     this message. If there is no reply, or the message is
- *                     not received in time by the other side, a
- *                     kernel-generated message with an attached
- *                     KDBUS_ITEM_REPLY_TIMEOUT item is sent to @src_id.
- *                     A 0-value is only valid if KDBUS_MSG_FLAGS_EXPECT_REPLY
- *                     is unset in @flags.
+ * @cookie:            Userspace-supplied cookie, for the connection
+ *                     to identify its messages
+ * @cookie_reply:      A reply to the requesting message with the same
+ *                     cookie. The requesting connection can match its
+ *                     request and the reply with this value
+ * @timeout_ns:                The time to wait for a message reply from the peer.
+ *                     If there is no reply, a kernel-generated message
+ *                     with an attached KDBUS_ITEM_REPLY_TIMEOUT item
+ *                     is sent to @src_id.
  * @items:             A list of kdbus_items containing the message payload
  */
 struct kdbus_msg {
@@ -374,6 +373,7 @@ struct kdbus_msg {
 
 /**
  * enum kdbus_policy_access_type - permissions of a policy record
+ * @_KDBUS_POLICY_ACCESS_NULL: Uninitialized/invalid
  * @KDBUS_POLICY_ACCESS_USER:  Grant access to a uid
  * @KDBUS_POLICY_ACCESS_GROUP: Grant access to gid
  * @KDBUS_POLICY_ACCESS_WORLD: World-accessible
@@ -528,8 +528,9 @@ enum kdbus_name_flags {
  * struct kdbus_cmd_name - struct to describe a well-known name
  * @size:              The total size of the struct
  * @flags:             Flags for a name entry (KDBUS_NAME_*)
- * @id:                        Privileged users may use this field to (de)register
- *                     names on behalf of other peers.
+ * @owner_id:          The current owner of the name. For requests,
+ *                     privileged users may set this field to
+ *                     (de)register names on behalf of other connections.
  * @conn_flags:                The flags of the owning connection (KDBUS_HELLO_*)
  * @name:              The well-known name
  *
@@ -538,7 +539,7 @@ enum kdbus_name_flags {
 struct kdbus_cmd_name {
        __u64 size;
        __u64 flags;
-       __u64 id;
+       __u64 owner_id;
        __u64 conn_flags;
        char name[0];
 } __attribute__((aligned(8)));
@@ -629,10 +630,10 @@ struct kdbus_conn_info {
 /**
  * struct kdbus_cmd_match - struct to add or remove matches
  * @size:              The total size of the struct
- * @id:                        Privileged users may (de)register matches on behalf
- *                     of other peers. In other cases, set to 0.
+ * @owner_id:          Privileged users may (de)register matches on behalf
+ *                     of other peers
  * @cookie:            Userspace supplied cookie. When removing, the cookie
- *                     identifies the match to remove.
+ *                     identifies the match to remove
  * @items:             A list of items for additional information
  *
  * This structure is used with the KDBUS_CMD_ADD_MATCH and
@@ -640,7 +641,7 @@ struct kdbus_conn_info {
  */
 struct kdbus_cmd_match {
        __u64 size;
-       __u64 id;
+       __u64 owner_id;
        __u64 cookie;
        struct kdbus_item items[0];
 } __attribute__((aligned(8)));
@@ -765,6 +766,8 @@ enum kdbus_ioctl_type {
  * @EBADFD:            A bus connection is in a corrupted state.
  * @EBADMSG:           Passed data contains a combination of conflicting or
  *                     inconsistent types.
+ * @EBUSY:             The user tried to say BYEBYE to a connection, but the
+ *                     connection had a non-empty message list.
  * @ECONNRESET:                A connection is shut down, no further operations are
  *                     possible.
  * @ECOMM:             A peer does not accept the file descriptors addressed
@@ -791,6 +794,8 @@ enum kdbus_ioctl_type {
  *                     size.
  * @ENOBUFS:           There is no space left for the submitted data to fit
  *                     into the receiver's pool.
+ * @ENOENT:            The name to query information about is currently not on
+ *                     the bus.
  * @ENOMEM:            Out of memory.
  * @ENOSYS:            The requested functionality is not available.
  * @ENOTCONN:          The addressed peer is not an active connection.