]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/libsystemd/sd-bus/bus-protocol.h
license: LGPL-2.1+ -> LGPL-2.1-or-later
[thirdparty/systemd.git] / src / libsystemd / sd-bus / bus-protocol.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
0461f8cd
LP
2#pragma once
3
6017365a 4#include <endian.h>
0461f8cd 5
2ac7c17f
LP
6#include "macro.h"
7
22d097a6
LP
8/* Packet header */
9
2ac7c17f
LP
10struct _packed_ bus_header {
11 /* The first four fields are identical for dbus1, and dbus2 */
22d097a6
LP
12 uint8_t endian;
13 uint8_t type;
14 uint8_t flags;
15 uint8_t version;
2ac7c17f
LP
16
17 union _packed_ {
18 /* dbus1: Used for SOCK_STREAM connections */
19 struct _packed_ {
20 uint32_t body_size;
21
22 /* Note that what the bus spec calls "serial" we'll call
23 "cookie" instead, because we don't want to imply that the
24 cookie was in any way monotonically increasing. */
25 uint32_t serial;
26 uint32_t fields_size;
27 } dbus1;
28
29 /* dbus2: Used for kdbus connections */
30 struct _packed_ {
31 uint32_t _reserved;
32 uint64_t cookie;
33 } dbus2;
34
35 /* Note that both header versions have the same size! */
36 };
37};
22d097a6 38
0461f8cd
LP
39/* Endianness */
40
41enum {
42 _BUS_INVALID_ENDIAN = 0,
43 BUS_LITTLE_ENDIAN = 'l',
44 BUS_BIG_ENDIAN = 'B',
45#if __BYTE_ORDER == __BIG_ENDIAN
46 BUS_NATIVE_ENDIAN = BUS_BIG_ENDIAN,
47 BUS_REVERSE_ENDIAN = BUS_LITTLE_ENDIAN
48#else
49 BUS_NATIVE_ENDIAN = BUS_LITTLE_ENDIAN,
50 BUS_REVERSE_ENDIAN = BUS_BIG_ENDIAN
51#endif
52};
53
54/* Flags */
55
56enum {
be0b7a1a
LP
57 BUS_MESSAGE_NO_REPLY_EXPECTED = 1 << 0,
58 BUS_MESSAGE_NO_AUTO_START = 1 << 1,
59 BUS_MESSAGE_ALLOW_INTERACTIVE_AUTHORIZATION = 1 << 2,
0461f8cd
LP
60};
61
62/* Header fields */
63
64enum {
65 _BUS_MESSAGE_HEADER_INVALID = 0,
66 BUS_MESSAGE_HEADER_PATH,
67 BUS_MESSAGE_HEADER_INTERFACE,
68 BUS_MESSAGE_HEADER_MEMBER,
69 BUS_MESSAGE_HEADER_ERROR_NAME,
70 BUS_MESSAGE_HEADER_REPLY_SERIAL,
71 BUS_MESSAGE_HEADER_DESTINATION,
72 BUS_MESSAGE_HEADER_SENDER,
73 BUS_MESSAGE_HEADER_SIGNATURE,
74 BUS_MESSAGE_HEADER_UNIX_FDS,
75 _BUS_MESSAGE_HEADER_MAX
76};
77
29a07cdb
LP
78/* RequestName parameters */
79
80enum {
be0b7a1a
LP
81 BUS_NAME_ALLOW_REPLACEMENT = 1 << 0,
82 BUS_NAME_REPLACE_EXISTING = 1 << 1,
83 BUS_NAME_DO_NOT_QUEUE = 1 << 2,
29a07cdb
LP
84};
85
0461f8cd
LP
86/* RequestName returns */
87enum {
88 BUS_NAME_PRIMARY_OWNER = 1,
89 BUS_NAME_IN_QUEUE = 2,
90 BUS_NAME_EXISTS = 3,
91 BUS_NAME_ALREADY_OWNER = 4
92};
93
94/* ReleaseName returns */
95enum {
96 BUS_NAME_RELEASED = 1,
97 BUS_NAME_NON_EXISTENT = 2,
98 BUS_NAME_NOT_OWNER = 3,
99};
100
71ebe743
LP
101/* StartServiceByName returns */
102enum {
103 BUS_START_REPLY_SUCCESS = 1,
104 BUS_START_REPLY_ALREADY_RUNNING = 2,
105};