X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Fkdbus.h;h=1ea4329ea2642bbd572c5937624f389028ed169b;hb=1a2409e262da65a4b0ca8ab18fcf5eabd2d404ca;hp=b167c4d00e3523617bdbabe2c726c54fe24476b7;hpb=619d7a039f9f64ffa593634c2715838ffbc17be4;p=elogind.git diff --git a/src/libsystemd/sd-bus/kdbus.h b/src/libsystemd/sd-bus/kdbus.h index b167c4d00..1ea4329ea 100644 --- a/src/libsystemd/sd-bus/kdbus.h +++ b/src/libsystemd/sd-bus/kdbus.h @@ -4,6 +4,7 @@ * Copyright (C) 2013-2014 Linux Foundation * Copyright (C) 2013-2014 Lennart Poettering * Copyright (C) 2013-2014 Daniel Mack + * Copyright (C) 2013-2014 David Herrmann * * kdbus is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the @@ -45,8 +46,8 @@ struct kdbus_notify_id_change { /** * struct kdbus_notify_name_change - name registry change message - * @old: ID and flags of former owner of a name - * @now: ID and flags of new owner of a name + * @old_id: ID and flags of former owner of a name + * @new_id: ID and flags of new owner of a name * @name: Well-known name * * Sent from kernel to userspace when the owner or activator of @@ -212,7 +213,6 @@ struct kdbus_policy_access { * bloom filter * @KDBUS_ITEM_DST_NAME: Destination's well-known name * @KDBUS_ITEM_MAKE_NAME: Name of domain, bus, endpoint - * @KDBUS_ITEM_MEMFD_NAME: The human readable name of a memfd (debugging) * @KDBUS_ITEM_ATTACH_FLAGS: Attach-flags, used for updating which metadata * a connection subscribes to * @_KDBUS_ITEM_ATTACH_BASE: Start of metadata attach items @@ -253,7 +253,6 @@ enum kdbus_item_type { KDBUS_ITEM_BLOOM_MASK, KDBUS_ITEM_DST_NAME, KDBUS_ITEM_MAKE_NAME, - KDBUS_ITEM_MEMFD_NAME, KDBUS_ITEM_ATTACH_FLAGS, _KDBUS_ITEM_ATTACH_BASE = 0x1000, @@ -444,6 +443,31 @@ struct kdbus_cmd_recv { __u64 offset; } __attribute__((aligned(8))); +/** + * struct kdbus_cmd_cancel - struct to cancel a synchronously pending message + * @cookie The cookie of the pending message + * @flags Flags for the free command. Currently unused. + * + * This struct is used with the KDBUS_CMD_CANCEL ioctl. + */ +struct kdbus_cmd_cancel { + __u64 cookie; + __u64 flags; +} __attribute__((aligned(8))); + +/** + * struct kdbus_cmd_free - struct to free a slice of memory in the pool + * @offset The offset of the memory slice, as returned by other + * ioctls + * @flags Flags for the free command. Currently unused. + * + * This struct is used with the KDBUS_CMD_FREE ioctl. + */ +struct kdbus_cmd_free { + __u64 offset; + __u64 flags; +} __attribute__((aligned(8))); + /** * enum kdbus_policy_access_type - permissions of a policy record * @_KDBUS_POLICY_ACCESS_NULL: Uninitialized/invalid @@ -476,6 +500,8 @@ enum kdbus_policy_type { * enum kdbus_hello_flags - flags for struct kdbus_cmd_hello * @KDBUS_HELLO_ACCEPT_FD: The connection allows the reception of * any passed file descriptors + * @KDBUS_HELLO_ACCEPT_MEMFD: The connection allows the reception of + * any passed memfd file descriptors * @KDBUS_HELLO_ACTIVATOR: Special-purpose connection which registers * a well-know name for a process to be started * when traffic arrives @@ -490,9 +516,10 @@ enum kdbus_policy_type { */ enum kdbus_hello_flags { KDBUS_HELLO_ACCEPT_FD = 1ULL << 0, - KDBUS_HELLO_ACTIVATOR = 1ULL << 1, - KDBUS_HELLO_POLICY_HOLDER = 1ULL << 2, - KDBUS_HELLO_MONITOR = 1ULL << 3, + KDBUS_HELLO_ACCEPT_MEMFD = 1ULL << 1, + KDBUS_HELLO_ACTIVATOR = 1ULL << 2, + KDBUS_HELLO_POLICY_HOLDER = 1ULL << 3, + KDBUS_HELLO_MONITOR = 1ULL << 4, }; /** @@ -530,6 +557,7 @@ enum kdbus_attach_flags { /** * struct kdbus_cmd_hello - struct to say hello to kdbus * @size: The total size of the structure + * @features: Feature negotiation bitmask * @conn_flags: Connection flags (KDBUS_HELLO_*). * @attach_flags: Mask of metadata to attach to each message sent * (KDBUS_ATTACH_*) @@ -549,6 +577,7 @@ enum kdbus_attach_flags { */ struct kdbus_cmd_hello { __u64 size; + __u64 features; __u64 conn_flags; __u64 attach_flags; __u64 bus_flags; @@ -572,14 +601,16 @@ enum kdbus_make_flags { /** * struct kdbus_cmd_make - struct to make a bus, an endpoint or a domain * @size: The total size of the struct + * @features: Feature negotiation bitmask * @flags: Properties for the bus/ep/domain to create * @items: Items describing details * - * This structure is used with the KDBUS_CMD_BUS_MAKE, KDBUS_CMD_EP_MAKE and - * KDBUS_CMD_DOMAIN_MAKE ioctls. + * This structure is used with the KDBUS_CMD_BUS_MAKE, KDBUS_CMD_ENDPOINT_MAKE + * and KDBUS_CMD_DOMAIN_MAKE ioctls. */ struct kdbus_cmd_make { __u64 size; + __u64 features; __u64 flags; struct kdbus_item items[0]; } __attribute__((aligned(8))); @@ -682,7 +713,7 @@ struct kdbus_cmd_conn_info { __u64 flags; __u64 id; __u64 offset; - char name[0]; + struct kdbus_item items[0]; } __attribute__((aligned(8))); /** @@ -711,9 +742,20 @@ struct kdbus_conn_info { */ struct kdbus_cmd_update { __u64 size; + __u64 flags; struct kdbus_item items[0]; } __attribute__((aligned(8))); +/** + * enum kdbus_cmd_match_flags - flags to control the KDBUS_CMD_MATCH_ADD ioctl + * @KDBUS_MATCH_REPLACE: If entries with the supplied cookie already + * exists, remove them before installing the new + * matches. + */ +enum kdbus_cmd_match_flags { + KDBUS_MATCH_REPLACE = 1ULL << 0, +}; + /** * struct kdbus_cmd_match - struct to add or remove matches * @size: The total size of the struct @@ -727,6 +769,7 @@ struct kdbus_cmd_update { struct kdbus_cmd_match { __u64 size; __u64 cookie; + __u64 flags; struct kdbus_item items[0]; } __attribute__((aligned(8))); @@ -739,7 +782,7 @@ struct kdbus_cmd_match { * is closed. * @KDBUS_CMD_DOMAIN_MAKE: Similar to KDBUS_CMD_BUS_MAKE, but it creates a * new kdbus domain. - * @KDBUS_CMD_EP_MAKE: Creates a new named special endpoint to talk to + * @KDBUS_CMD_ENDPOINT_MAKE: Creates a new named special endpoint to talk to * the bus. Such endpoints usually carry a more * restrictive policy and grant restricted access * to specific applications. @@ -775,7 +818,7 @@ struct kdbus_cmd_match { * @KDBUS_CMD_CONN_UPDATE: Update the properties of a connection. Used to * update the metadata subscription mask and * policy. - * @KDBUS_CMD_EP_UPDATE: Update the properties of a custom enpoint. Used + * @KDBUS_CMD_ENDPOINT_UPDATE: Update the properties of a custom enpoint. Used * to update the policy. * @KDBUS_CMD_MATCH_ADD: Install a match which broadcast messages should * be delivered to the connection. @@ -786,7 +829,7 @@ enum kdbus_ioctl_type { struct kdbus_cmd_make), KDBUS_CMD_DOMAIN_MAKE = _IOW(KDBUS_IOCTL_MAGIC, 0x10, struct kdbus_cmd_make), - KDBUS_CMD_EP_MAKE = _IOW(KDBUS_IOCTL_MAGIC, 0x20, + KDBUS_CMD_ENDPOINT_MAKE = _IOW(KDBUS_IOCTL_MAGIC, 0x20, struct kdbus_cmd_make), KDBUS_CMD_HELLO = _IOWR(KDBUS_IOCTL_MAGIC, 0x30, @@ -797,8 +840,10 @@ enum kdbus_ioctl_type { struct kdbus_msg), KDBUS_CMD_MSG_RECV = _IOWR(KDBUS_IOCTL_MAGIC, 0x41, struct kdbus_cmd_recv), - KDBUS_CMD_MSG_CANCEL = _IOW(KDBUS_IOCTL_MAGIC, 0x42, __u64 *), - KDBUS_CMD_FREE = _IOW(KDBUS_IOCTL_MAGIC, 0x43, __u64 *), + KDBUS_CMD_MSG_CANCEL = _IOW(KDBUS_IOCTL_MAGIC, 0x42, + struct kdbus_cmd_cancel), + KDBUS_CMD_FREE = _IOW(KDBUS_IOCTL_MAGIC, 0x43, + struct kdbus_cmd_free), KDBUS_CMD_NAME_ACQUIRE = _IOWR(KDBUS_IOCTL_MAGIC, 0x50, struct kdbus_cmd_name), @@ -812,7 +857,7 @@ enum kdbus_ioctl_type { KDBUS_CMD_CONN_UPDATE = _IOW(KDBUS_IOCTL_MAGIC, 0x61, struct kdbus_cmd_update), - KDBUS_CMD_EP_UPDATE = _IOW(KDBUS_IOCTL_MAGIC, 0x71, + KDBUS_CMD_ENDPOINT_UPDATE = _IOW(KDBUS_IOCTL_MAGIC, 0x71, struct kdbus_cmd_update), KDBUS_CMD_MATCH_ADD = _IOW(KDBUS_IOCTL_MAGIC, 0x80,