X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fkdbus.h;h=d419772f52f96d7fb9d0a9917db6dd3e0624e887;hb=8bd54e897c2a62866e6b15244e784a07ff2b2af4;hp=60150748616268052618daa6d198ff6ebdd5dab2;hpb=0c7225549d539c77620e15c850c60e4dc124a131;p=elogind.git diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 601507486..d419772f5 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -36,14 +36,14 @@ /* Message sent from kernel to userspace, when the owner or starter of * a well-known name changes */ -struct kdbus_manager_msg_name_change { +struct kdbus_notify_name_change { __u64 old_id; __u64 new_id; __u64 flags; /* 0 or (possibly?) KDBUS_NAME_IN_QUEUE */ char name[0]; }; -struct kdbus_manager_msg_id_change { +struct kdbus_notify_id_change { __u64 id; __u64 flags; /* The kernel flags field from KDBUS_HELLO */ }; @@ -88,38 +88,40 @@ struct kdbus_memfd { /* Message Item Types */ enum { - _KDBUS_MSG_NULL, + _KDBUS_ITEM_NULL, /* Filled in by userspace */ - KDBUS_MSG_PAYLOAD_VEC, /* .data_vec, reference to memory area */ - KDBUS_MSG_PAYLOAD_OFF, /* .data_vec, reference to memory area */ - KDBUS_MSG_PAYLOAD_MEMFD, /* file descriptor of a special data file */ - KDBUS_MSG_FDS, /* .data_fds of file descriptors */ - KDBUS_MSG_BLOOM, /* for broadcasts, carries bloom filter blob in .data */ - KDBUS_MSG_DST_NAME, /* destination's well-known name, in .str */ - KDBUS_MSG_PRIORITY, /* queue priority for message */ + KDBUS_ITEM_PAYLOAD_VEC, /* .data_vec, reference to memory area */ + KDBUS_ITEM_PAYLOAD_OFF, /* .data_vec, reference to memory area */ + KDBUS_ITEM_PAYLOAD_MEMFD, /* file descriptor of a special data file */ + KDBUS_ITEM_FDS, /* .data_fds of file descriptors */ + KDBUS_ITEM_BLOOM, /* for broadcasts, carries bloom filter blob in .data */ + KDBUS_ITEM_DST_NAME, /* destination's well-known name, in .str */ + KDBUS_ITEM_PRIORITY, /* queue priority for message */ /* Filled in by kernelspace */ - KDBUS_MSG_SRC_NAMES = 0x400,/* NUL separated string list with well-known names of source */ - KDBUS_MSG_TIMESTAMP, /* .timestamp */ - KDBUS_MSG_SRC_CREDS, /* .creds */ - KDBUS_MSG_SRC_PID_COMM, /* optional, in .str */ - KDBUS_MSG_SRC_TID_COMM, /* optional, in .str */ - KDBUS_MSG_SRC_EXE, /* optional, in .str */ - KDBUS_MSG_SRC_CMDLINE, /* optional, in .str (a chain of NUL str) */ - KDBUS_MSG_SRC_CGROUP, /* optional, in .str */ - KDBUS_MSG_SRC_CAPS, /* caps data blob, in .data */ - KDBUS_MSG_SRC_SECLABEL, /* NUL terminated string, in .str */ - KDBUS_MSG_SRC_AUDIT, /* .audit */ + KDBUS_ITEM_NAMES = 0x400,/* NUL separated string list with well-known names of source */ + KDBUS_ITEM_TIMESTAMP, /* .timestamp */ + + /* when appended to a message, the following items refer to the sender */ + KDBUS_ITEM_CREDS, /* .creds */ + KDBUS_ITEM_PID_COMM, /* optional, in .str */ + KDBUS_ITEM_TID_COMM, /* optional, in .str */ + KDBUS_ITEM_EXE, /* optional, in .str */ + KDBUS_ITEM_CMDLINE, /* optional, in .str (a chain of NUL str) */ + KDBUS_ITEM_CGROUP, /* optional, in .str */ + KDBUS_ITEM_CAPS, /* caps data blob, in .data */ + KDBUS_ITEM_SECLABEL, /* NUL terminated string, in .str */ + KDBUS_ITEM_AUDIT, /* .audit */ /* Special messages from kernel, consisting of one and only one of these data blocks */ - KDBUS_MSG_NAME_ADD = 0x800,/* .name_change */ - KDBUS_MSG_NAME_REMOVE, /* .name_change */ - KDBUS_MSG_NAME_CHANGE, /* .name_change */ - KDBUS_MSG_ID_ADD, /* .id_change */ - KDBUS_MSG_ID_REMOVE, /* .id_change */ - KDBUS_MSG_REPLY_TIMEOUT, /* empty, but .reply_cookie in .kdbus_msg is filled in */ - KDBUS_MSG_REPLY_DEAD, /* dito */ + KDBUS_ITEM_NAME_ADD = 0x800,/* .name_change */ + KDBUS_ITEM_NAME_REMOVE, /* .name_change */ + KDBUS_ITEM_NAME_CHANGE, /* .name_change */ + KDBUS_ITEM_ID_ADD, /* .id_change */ + KDBUS_ITEM_ID_REMOVE, /* .id_change */ + KDBUS_ITEM_REPLY_TIMEOUT, /* empty, but .reply_cookie in .kdbus_msg is filled in */ + KDBUS_ITEM_REPLY_DEAD, /* dito */ }; /** @@ -151,8 +153,8 @@ struct kdbus_item { /* specific fields */ struct kdbus_memfd memfd; int fds[0]; - struct kdbus_manager_msg_name_change name_change; - struct kdbus_manager_msg_id_change id_change; + struct kdbus_notify_name_change name_change; + struct kdbus_notify_id_change id_change; }; }; @@ -236,16 +238,20 @@ struct kdbus_cmd_policy { enum { KDBUS_HELLO_STARTER = 1 << 0, KDBUS_HELLO_ACCEPT_FD = 1 << 1, +}; - /* The following have an effect on directed messages only -- - * not for broadcasts */ - KDBUS_HELLO_ATTACH_COMM = 1 << 10, - KDBUS_HELLO_ATTACH_EXE = 1 << 11, - KDBUS_HELLO_ATTACH_CMDLINE = 1 << 12, - KDBUS_HELLO_ATTACH_CGROUP = 1 << 13, - KDBUS_HELLO_ATTACH_CAPS = 1 << 14, - KDBUS_HELLO_ATTACH_SECLABEL = 1 << 15, - KDBUS_HELLO_ATTACH_AUDIT = 1 << 16, +/* Flags for message attachments */ +enum { + KDBUS_ATTACH_TIMESTAMP = 1 << 0, + KDBUS_ATTACH_CREDS = 1 << 1, + KDBUS_ATTACH_NAMES = 1 << 2, + KDBUS_ATTACH_COMM = 1 << 3, + KDBUS_ATTACH_EXE = 1 << 4, + KDBUS_ATTACH_CMDLINE = 1 << 5, + KDBUS_ATTACH_CGROUP = 1 << 6, + KDBUS_ATTACH_CAPS = 1 << 7, + KDBUS_ATTACH_SECLABEL = 1 << 8, + KDBUS_ATTACH_AUDIT = 1 << 9, }; struct kdbus_cmd_hello { @@ -258,6 +264,9 @@ struct kdbus_cmd_hello { * more. Kernel might refuse client's * capabilities by returning an error * from KDBUS_HELLO */ + __u64 attach_flags; /* userspace specifies the metadata + * attachments it wishes to receive with + * every message. */ /* kernel → userspace */ __u64 bus_flags; /* this is .flags copied verbatim from @@ -269,6 +278,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]; }; @@ -345,8 +356,13 @@ struct kdbus_cmd_name { char name[0]; }; +enum { + KDBUS_NAME_LIST_UNIQUE_NAMES = 1 << 0, +}; + struct kdbus_cmd_names { __u64 size; + __u64 flags; struct kdbus_cmd_name names[0]; }; @@ -359,7 +375,8 @@ enum { struct kdbus_cmd_name_info { __u64 size; /* overall size of info */ - __u64 flags; + __u64 flags; /* query flags */ + __u64 attach_flags; /* which meta data payload to attach */ __u64 id; /* either ID, or 0 and _ITEM_NAME follows */ struct kdbus_creds creds; struct kdbus_item items[0]; /* list of item records */