sd-bus: rename internal structs and enums

This renames e.g. struct bus_body_part -> BusMessageBodyPart to
follow our usual coding style. Also, several struct and enum
declarations are moved to relevant headers.
Also, this introduces bus-forward.h.
This commit is contained in:
Yu Watanabe
2025-05-28 11:14:41 +09:00
committed by Daan De Meyer
parent 39c3638445
commit d117687ab3
21 changed files with 389 additions and 364 deletions

View File

@@ -582,7 +582,7 @@ int bus_pcap_header(size_t snaplen, const char *os, const char *info, FILE *f) {
}
int bus_message_pcap_frame(sd_bus_message *m, size_t snaplen, FILE *f) {
struct bus_body_part *part;
BusMessageBodyPart *part;
size_t msglen, caplen, pad;
uint32_t length;
uint64_t ts;

View File

@@ -0,0 +1,31 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "forward.h"
typedef enum BusAuth BusAuth;
typedef enum BusSlotType BusSlotType;
typedef enum BusState BusState;
typedef struct BusFilterCallback BusFilterCallback;
typedef struct BusMatchCallback BusMatchCallback;
typedef struct BusMatchComponent BusMatchComponent;
typedef struct BusMatchNode BusMatchNode;
typedef enum BusMatchNodeType BusMatchNodeType;
typedef enum BusMatchScope BusMatchScope;
typedef struct BusNode BusNode;
typedef struct BusNodeCallback BusNodeCallback;
typedef struct BusNodeEnumerator BusNodeEnumerator;
typedef struct BusNodeObjectManager BusNodeObjectManager;
typedef struct BusNodeVTable BusNodeVTable;
typedef struct BusVTableMember BusVTableMember;
typedef struct BusReplyCallback BusReplyCallback;
typedef struct BusMessageBodyPart BusMessageBodyPart;
typedef struct BusMessageContainer BusMessageContainer;
typedef struct BusMessageHeader BusMessageHeader;
typedef struct BusIntrospect BusIntrospect;

View File

@@ -3,10 +3,10 @@
#include "sd-id128.h"
#include "bus-forward.h"
#include "bus-kernel.h"
#include "bus-match.h"
#include "constants.h"
#include "forward.h"
#include "list.h"
#include "runtime-scope.h"
#include "socket-util.h"
@@ -16,80 +16,62 @@
#define DEFAULT_SYSTEM_BUS_ADDRESS "unix:path=/run/dbus/system_bus_socket"
#define DEFAULT_USER_BUS_ADDRESS_FMT "unix:path=%s/bus"
struct reply_callback {
typedef struct BusReplyCallback {
sd_bus_message_handler_t callback;
usec_t timeout_usec; /* this is a relative timeout until we reach the BUS_HELLO state, and an absolute one right after */
uint64_t cookie;
unsigned prioq_idx;
};
} BusReplyCallback;
struct filter_callback {
typedef struct BusFilterCallback {
sd_bus_message_handler_t callback;
unsigned last_iteration;
LIST_FIELDS(struct filter_callback, callbacks);
};
LIST_FIELDS(BusFilterCallback, callbacks);
} BusFilterCallback;
struct match_callback {
sd_bus_message_handler_t callback;
sd_bus_message_handler_t install_callback;
sd_bus_slot *install_slot; /* The AddMatch() call */
unsigned last_iteration;
/* Don't dispatch this slot with messages that arrived in any iteration before or at the this
* one. We use this to ensure that matches don't apply "retroactively" and confuse the caller:
* only messages received after the match was installed will be considered. */
uint64_t after;
char *match_string;
struct bus_match_node *match_node;
};
struct node {
typedef struct BusNode {
char *path;
struct node *parent;
LIST_HEAD(struct node, child);
LIST_FIELDS(struct node, siblings);
BusNode *parent;
LIST_HEAD(BusNode, child);
LIST_FIELDS(BusNode, siblings);
LIST_HEAD(struct node_callback, callbacks);
LIST_HEAD(struct node_vtable, vtables);
LIST_HEAD(struct node_enumerator, enumerators);
LIST_HEAD(struct node_object_manager, object_managers);
};
LIST_HEAD(BusNodeCallback, callbacks);
LIST_HEAD(BusNodeVTable, vtables);
LIST_HEAD(BusNodeEnumerator, enumerators);
LIST_HEAD(BusNodeObjectManager, object_managers);
} BusNode;
struct node_callback {
struct node *node;
typedef struct BusNodeCallback {
BusNode *node;
bool is_fallback;
unsigned last_iteration;
sd_bus_message_handler_t callback;
LIST_FIELDS(struct node_callback, callbacks);
};
LIST_FIELDS(BusNodeCallback, callbacks);
} BusNodeCallback;
struct node_enumerator {
struct node *node;
typedef struct BusNodeEnumerator {
BusNode *node;
sd_bus_node_enumerator_t callback;
unsigned last_iteration;
LIST_FIELDS(struct node_enumerator, enumerators);
};
LIST_FIELDS(BusNodeEnumerator, enumerators);
} BusNodeEnumerator;
struct node_object_manager {
struct node *node;
typedef struct BusNodeObjectManager {
BusNode *node;
LIST_FIELDS(struct node_object_manager, object_managers);
};
LIST_FIELDS(BusNodeObjectManager, object_managers);
} BusNodeObjectManager;
struct node_vtable {
struct node *node;
typedef struct BusNodeVTable {
BusNode *node;
bool is_fallback;
unsigned last_iteration;
@@ -98,17 +80,17 @@ struct node_vtable {
const sd_bus_vtable *vtable;
sd_bus_object_find_t find;
LIST_FIELDS(struct node_vtable, vtables);
};
LIST_FIELDS(BusNodeVTable, vtables);
} BusNodeVTable;
struct vtable_member {
typedef struct BusVTableMember {
const char *path;
const char *interface;
const char *member;
struct node_vtable *parent;
BusNodeVTable *parent;
unsigned last_iteration;
const sd_bus_vtable *vtable;
};
} BusVTableMember;
typedef enum BusSlotType {
BUS_REPLY_CALLBACK,
@@ -144,17 +126,17 @@ typedef struct sd_bus_slot {
LIST_FIELDS(sd_bus_slot, slots);
union {
struct reply_callback reply_callback;
struct filter_callback filter_callback;
struct match_callback match_callback;
struct node_callback node_callback;
struct node_enumerator node_enumerator;
struct node_object_manager node_object_manager;
struct node_vtable node_vtable;
BusReplyCallback reply_callback;
BusFilterCallback filter_callback;
BusMatchCallback match_callback;
BusNodeCallback node_callback;
BusNodeEnumerator node_enumerator;
BusNodeObjectManager node_object_manager;
BusNodeVTable node_vtable;
};
} sd_bus_slot;
enum bus_state {
typedef enum BusState {
BUS_UNSET,
BUS_WATCH_BIND, /* waiting for the socket to appear via inotify */
BUS_OPENING, /* the kernel's connect() is still not ready */
@@ -164,22 +146,22 @@ enum bus_state {
BUS_CLOSING,
BUS_CLOSED,
_BUS_STATE_MAX,
};
} BusState;
static inline bool BUS_IS_OPEN(enum bus_state state) {
static inline bool BUS_IS_OPEN(BusState state) {
return state > BUS_UNSET && state < BUS_CLOSING;
}
enum bus_auth {
typedef enum BusAuth {
_BUS_AUTH_INVALID,
BUS_AUTH_EXTERNAL,
BUS_AUTH_ANONYMOUS
};
} BusAuth;
typedef struct sd_bus {
unsigned n_ref;
enum bus_state state;
BusState state;
int input_fd, output_fd;
int inotify_fd;
int message_version;
@@ -229,10 +211,10 @@ typedef struct sd_bus {
char *unique_name;
uint64_t unique_id;
struct bus_match_node match_callbacks;
BusMatchNode match_callbacks;
Prioq *reply_callbacks_prioq;
OrderedHashmap *reply_callbacks;
LIST_HEAD(struct filter_callback, filter_callbacks);
LIST_HEAD(BusFilterCallback, filter_callbacks);
Hashmap *nodes;
Set *vtable_methods;
@@ -254,7 +236,7 @@ typedef struct sd_bus {
int last_connect_error;
enum bus_auth auth;
BusAuth auth;
unsigned auth_index;
struct iovec auth_iovec[3];
size_t auth_rbegin;
@@ -423,4 +405,4 @@ int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error);
void bus_enter_closing(sd_bus *bus);
void bus_set_state(sd_bus *bus, enum bus_state state);
void bus_set_state(sd_bus *bus, BusState state);

View File

@@ -69,12 +69,12 @@
" </signal>\n" \
" </interface>\n"
int introspect_begin(struct introspect *i, bool trusted) {
int introspect_begin(BusIntrospect *i, bool trusted) {
FILE *f;
assert(i);
*i = (struct introspect) {
*i = (BusIntrospect) {
.trusted = trusted,
};
@@ -88,7 +88,7 @@ int introspect_begin(struct introspect *i, bool trusted) {
return 0;
}
int introspect_write_default_interfaces(struct introspect *i, bool object_manager) {
int introspect_write_default_interfaces(BusIntrospect *i, bool object_manager) {
assert(i);
assert(i->m.f);
@@ -102,7 +102,7 @@ int introspect_write_default_interfaces(struct introspect *i, bool object_manage
return 0;
}
static int set_interface_name(struct introspect *i, const char *interface_name) {
static int set_interface_name(BusIntrospect *i, const char *interface_name) {
assert(i);
assert(i->m.f);
@@ -118,7 +118,7 @@ static int set_interface_name(struct introspect *i, const char *interface_name)
return free_and_strdup(&i->interface_name, interface_name);
}
int introspect_write_child_nodes(struct introspect *i, OrderedSet *s, const char *prefix) {
int introspect_write_child_nodes(BusIntrospect *i, OrderedSet *s, const char *prefix) {
char *node;
assert(i);
@@ -140,7 +140,7 @@ int introspect_write_child_nodes(struct introspect *i, OrderedSet *s, const char
return 0;
}
static void introspect_write_flags(struct introspect *i, int type, uint64_t flags) {
static void introspect_write_flags(BusIntrospect *i, int type, uint64_t flags) {
assert(i);
assert(i->m.f);
@@ -170,7 +170,7 @@ static void introspect_write_flags(struct introspect *i, int type, uint64_t flag
/* Note that "names" is both an input and an output parameter. It initially points to the first argument name in a
NULL-separated list of strings, and is then advanced with each argument, and the resulting pointer is returned. */
static int introspect_write_arguments(struct introspect *i, const char *signature, const char **names, const char *direction) {
static int introspect_write_arguments(BusIntrospect *i, const char *signature, const char **names, const char *direction) {
int r;
assert(i);
@@ -203,7 +203,7 @@ static int introspect_write_arguments(struct introspect *i, const char *signatur
}
int introspect_write_interface(
struct introspect *i,
BusIntrospect *i,
const char *interface_name,
const sd_bus_vtable *v) {
@@ -270,7 +270,7 @@ int introspect_write_interface(
return 0;
}
int introspect_finish(struct introspect *i, char **ret) {
int introspect_finish(BusIntrospect *i, char **ret) {
assert(i);
assert(i->m.f);
@@ -281,7 +281,7 @@ int introspect_finish(struct introspect *i, char **ret) {
return memstream_finalize(&i->m, ret, NULL);
}
void introspect_done(struct introspect *i) {
void introspect_done(BusIntrospect *i) {
assert(i);
/* Normally introspect_finish() does all the work, this is just a backup for error paths */

View File

@@ -1,21 +1,21 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "forward.h"
#include "bus-forward.h"
#include "memstream-util.h"
struct introspect {
typedef struct BusIntrospect {
MemStream m;
char *interface_name;
bool trusted;
};
} BusIntrospect;
int introspect_begin(struct introspect *i, bool trusted);
int introspect_write_default_interfaces(struct introspect *i, bool object_manager);
int introspect_write_child_nodes(struct introspect *i, OrderedSet *s, const char *prefix);
int introspect_begin(BusIntrospect *i, bool trusted);
int introspect_write_default_interfaces(BusIntrospect *i, bool object_manager);
int introspect_write_child_nodes(BusIntrospect *i, OrderedSet *s, const char *prefix);
int introspect_write_interface(
struct introspect *i,
BusIntrospect *i,
const char *interface_name,
const sd_bus_vtable *v);
int introspect_finish(struct introspect *i, char **ret);
void introspect_done(struct introspect *i);
int introspect_finish(BusIntrospect *i, char **ret);
void introspect_done(BusIntrospect *i);

View File

@@ -50,17 +50,17 @@
* ` BUS_MATCH_LEAF: E
*/
static bool BUS_MATCH_IS_COMPARE(enum bus_match_node_type t) {
static bool BUS_MATCH_IS_COMPARE(BusMatchNodeType t) {
return t >= BUS_MATCH_SENDER && t <= BUS_MATCH_ARG_HAS_LAST;
}
static bool BUS_MATCH_CAN_HASH(enum bus_match_node_type t) {
static bool BUS_MATCH_CAN_HASH(BusMatchNodeType t) {
return (t >= BUS_MATCH_MESSAGE_TYPE && t <= BUS_MATCH_PATH) ||
(t >= BUS_MATCH_ARG && t <= BUS_MATCH_ARG_LAST) ||
(t >= BUS_MATCH_ARG_HAS && t <= BUS_MATCH_ARG_HAS_LAST);
}
static void bus_match_node_free(struct bus_match_node *node) {
static void bus_match_node_free(BusMatchNode *node) {
assert(node);
assert(node->parent);
assert(!node->child);
@@ -102,7 +102,7 @@ static void bus_match_node_free(struct bus_match_node *node) {
free(node);
}
static bool bus_match_node_maybe_free(struct bus_match_node *node) {
static bool bus_match_node_maybe_free(BusMatchNode *node) {
assert(node);
if (node->type == BUS_MATCH_ROOT)
@@ -119,8 +119,8 @@ static bool bus_match_node_maybe_free(struct bus_match_node *node) {
}
static bool value_node_test(
struct bus_match_node *node,
enum bus_match_node_type parent_type,
BusMatchNode *node,
BusMatchNodeType parent_type,
uint8_t value_u8,
const char *value_str,
char **value_strv,
@@ -203,8 +203,8 @@ static bool value_node_test(
}
static bool value_node_same(
struct bus_match_node *node,
enum bus_match_node_type parent_type,
BusMatchNode *node,
BusMatchNodeType parent_type,
uint8_t value_u8,
const char *value_str) {
@@ -239,7 +239,7 @@ static bool value_node_same(
int bus_match_run(
sd_bus *bus,
struct bus_match_node *node,
BusMatchNode *node,
sd_bus_message *m) {
_cleanup_strv_free_ char **test_strv = NULL;
@@ -378,7 +378,7 @@ int bus_match_run(
}
if (BUS_MATCH_CAN_HASH(node->type)) {
struct bus_match_node *found;
BusMatchNode *found;
/* Lookup via hash table, nice! So let's jump directly. */
@@ -407,7 +407,7 @@ int bus_match_run(
}
} else
/* No hash table, so let's iterate manually... */
for (struct bus_match_node *c = node->child; c; c = c->next) {
for (BusMatchNode *c = node->child; c; c = c->next) {
if (!value_node_test(c, node->type, test_u8, test_str, test_strv, m))
continue;
@@ -427,13 +427,13 @@ int bus_match_run(
}
static int bus_match_add_compare_value(
struct bus_match_node *where,
enum bus_match_node_type t,
BusMatchNode *where,
BusMatchNodeType t,
uint8_t value_u8,
const char *value_str,
struct bus_match_node **ret) {
BusMatchNode **ret) {
struct bus_match_node *c, *n = NULL;
BusMatchNode *c, *n = NULL;
int r;
assert(where);
@@ -462,7 +462,7 @@ static int bus_match_add_compare_value(
} else {
/* Comparison node, doesn't exist yet? Then let's create it. */
c = new0(struct bus_match_node, 1);
c = new0(BusMatchNode, 1);
if (!c) {
r = -ENOMEM;
goto fail;
@@ -490,7 +490,7 @@ static int bus_match_add_compare_value(
}
}
n = new0(struct bus_match_node, 1);
n = new0(BusMatchNode, 1);
if (!n) {
r = -ENOMEM;
goto fail;
@@ -539,16 +539,16 @@ fail:
}
static int bus_match_add_leaf(
struct bus_match_node *where,
struct match_callback *callback) {
BusMatchNode *where,
BusMatchCallback *callback) {
struct bus_match_node *n;
BusMatchNode *n;
assert(where);
assert(IN_SET(where->type, BUS_MATCH_ROOT, BUS_MATCH_VALUE));
assert(callback);
n = new0(struct bus_match_node, 1);
n = new0(BusMatchNode, 1);
if (!n)
return -ENOMEM;
@@ -566,7 +566,7 @@ static int bus_match_add_leaf(
return 1;
}
enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n) {
BusMatchNodeType bus_match_node_type_from_string(const char *k, size_t n) {
assert(k);
if (n == 4 && startswith(k, "type"))
@@ -596,7 +596,7 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n
if (n == 5 && startswith(k, "arg")) {
int a, b;
enum bus_match_node_type t;
BusMatchNodeType t;
a = undecchar(k[3]);
b = undecchar(k[4]);
@@ -621,7 +621,7 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n
}
if (n == 9 && startswith(k, "arg") && startswith(k + 5, "path")) {
enum bus_match_node_type t;
BusMatchNodeType t;
int a, b;
a = undecchar(k[3]);
@@ -647,7 +647,7 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n
}
if (n == 14 && startswith(k, "arg") && startswith(k + 5, "namespace")) {
enum bus_match_node_type t;
BusMatchNodeType t;
int a, b;
a = undecchar(k[3]);
@@ -673,7 +673,7 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n
}
if (n == 8 && startswith(k, "arg") && startswith(k + 5, "has")) {
enum bus_match_node_type t;
BusMatchNodeType t;
int a, b;
a = undecchar(k[3]);
@@ -691,11 +691,11 @@ enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n
return -EINVAL;
}
static int match_component_compare(const struct bus_match_component *a, const struct bus_match_component *b) {
static int match_component_compare(const BusMatchComponent *a, const BusMatchComponent *b) {
return CMP(a->type, b->type);
}
void bus_match_parse_free(struct bus_match_component *components, size_t n_components) {
void bus_match_parse_free(BusMatchComponent *components, size_t n_components) {
for (size_t i = 0; i < n_components; i++)
free(components[i].value_str);
@@ -704,10 +704,10 @@ void bus_match_parse_free(struct bus_match_component *components, size_t n_compo
int bus_match_parse(
const char *match,
struct bus_match_component **ret_components,
BusMatchComponent **ret_components,
size_t *ret_n_components) {
struct bus_match_component *components = NULL;
BusMatchComponent *components = NULL;
size_t n_components = 0;
int r;
@@ -719,7 +719,7 @@ int bus_match_parse(
while (*match != '\0') {
const char *eq, *q;
enum bus_match_node_type t;
BusMatchNodeType t;
size_t j = 0;
_cleanup_free_ char *value = NULL;
bool escaped = false, quoted;
@@ -796,7 +796,7 @@ int bus_match_parse(
if (!GREEDY_REALLOC(components, n_components + 1))
return -ENOMEM;
components[n_components++] = (struct bus_match_component) {
components[n_components++] = (BusMatchComponent) {
.type = t,
.value_str = TAKE_PTR(value),
.value_u8 = u,
@@ -825,7 +825,7 @@ int bus_match_parse(
return 0;
}
char* bus_match_to_string(struct bus_match_component *components, size_t n_components) {
char* bus_match_to_string(BusMatchComponent *components, size_t n_components) {
_cleanup_(memstream_done) MemStream m = {};
FILE *f;
int r;
@@ -866,10 +866,10 @@ char* bus_match_to_string(struct bus_match_component *components, size_t n_compo
}
int bus_match_add(
struct bus_match_node *root,
struct bus_match_component *components,
BusMatchNode *root,
BusMatchComponent *components,
size_t n_components,
struct match_callback *callback) {
BusMatchCallback *callback) {
int r;
@@ -890,10 +890,10 @@ int bus_match_add(
}
int bus_match_remove(
struct bus_match_node *root,
struct match_callback *callback) {
BusMatchNode *root,
BusMatchCallback *callback) {
struct bus_match_node *node, *pp;
BusMatchNode *node, *pp;
assert(root);
assert(callback);
@@ -922,8 +922,8 @@ int bus_match_remove(
return 1;
}
void bus_match_free(struct bus_match_node *node) {
struct bus_match_node *c;
void bus_match_free(BusMatchNode *node) {
BusMatchNode *c;
if (!node)
return;
@@ -943,7 +943,7 @@ void bus_match_free(struct bus_match_node *node) {
bus_match_node_free(node);
}
const char* bus_match_node_type_to_string(enum bus_match_node_type t, char buf[], size_t l) {
const char* bus_match_node_type_to_string(BusMatchNodeType t, char buf[], size_t l) {
switch (t) {
case BUS_MATCH_ROOT:
@@ -993,7 +993,7 @@ const char* bus_match_node_type_to_string(enum bus_match_node_type t, char buf[]
}
}
void bus_match_dump(FILE *out, struct bus_match_node *node, unsigned level) {
void bus_match_dump(FILE *out, BusMatchNode *node, unsigned level) {
char buf[32];
if (!node)
@@ -1015,16 +1015,16 @@ void bus_match_dump(FILE *out, struct bus_match_node *node, unsigned level) {
putc('\n', out);
if (BUS_MATCH_CAN_HASH(node->type)) {
struct bus_match_node *c;
BusMatchNode *c;
HASHMAP_FOREACH(c, node->compare.children)
bus_match_dump(out, c, level + 1);
}
for (struct bus_match_node *c = node->child; c; c = c->next)
for (BusMatchNode *c = node->child; c; c = c->next)
bus_match_dump(out, c, level + 1);
}
enum bus_match_scope bus_match_get_scope(const struct bus_match_component *components, size_t n_components) {
BusMatchScope bus_match_get_scope(const BusMatchComponent *components, size_t n_components) {
bool found_driver = false;
if (n_components <= 0)
@@ -1039,7 +1039,7 @@ enum bus_match_scope bus_match_get_scope(const struct bus_match_component *compo
* driver. */
for (size_t i = 0; i < n_components; i++) {
const struct bus_match_component *c = components + i;
const BusMatchComponent *c = components + i;
if (c->type == BUS_MATCH_SENDER) {
if (streq_ptr(c->value_str, "org.freedesktop.DBus.Local"))

View File

@@ -1,9 +1,9 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "forward.h"
#include "bus-forward.h"
enum bus_match_node_type {
typedef enum BusMatchNodeType {
BUS_MATCH_ROOT,
BUS_MATCH_VALUE,
BUS_MATCH_LEAF,
@@ -26,11 +26,29 @@ enum bus_match_node_type {
BUS_MATCH_ARG_HAS_LAST = BUS_MATCH_ARG_HAS + 63,
_BUS_MATCH_NODE_TYPE_MAX,
_BUS_MATCH_NODE_TYPE_INVALID = -EINVAL,
};
} BusMatchNodeType;
struct bus_match_node {
enum bus_match_node_type type;
struct bus_match_node *parent, *next, *prev, *child;
typedef struct BusMatchCallback {
sd_bus_message_handler_t callback;
sd_bus_message_handler_t install_callback;
sd_bus_slot *install_slot; /* The AddMatch() call */
unsigned last_iteration;
/* Don't dispatch this slot with messages that arrived in any iteration before or at the this
* one. We use this to ensure that matches don't apply "retroactively" and confuse the caller:
* only messages received after the match was installed will be considered. */
uint64_t after;
char *match_string;
BusMatchNode *match_node;
} BusMatchCallback;
typedef struct BusMatchNode {
BusMatchNodeType type;
BusMatchNode *parent, *next, *prev, *child;
union {
struct {
@@ -38,41 +56,41 @@ struct bus_match_node {
uint8_t u8;
} value;
struct {
struct match_callback *callback;
BusMatchCallback *callback;
} leaf;
struct {
/* If this is set, then the child is NULL */
Hashmap *children;
} compare;
};
};
} BusMatchNode;
struct bus_match_component {
enum bus_match_node_type type;
typedef struct BusMatchComponent {
BusMatchNodeType type;
uint8_t value_u8;
char *value_str;
};
} BusMatchComponent;
enum bus_match_scope {
typedef enum BusMatchScope {
BUS_MATCH_GENERIC,
BUS_MATCH_LOCAL,
BUS_MATCH_DRIVER,
};
} BusMatchScope;
int bus_match_run(sd_bus *bus, struct bus_match_node *root, sd_bus_message *m);
int bus_match_run(sd_bus *bus, BusMatchNode *root, sd_bus_message *m);
int bus_match_add(struct bus_match_node *root, struct bus_match_component *components, size_t n_components, struct match_callback *callback);
int bus_match_remove(struct bus_match_node *root, struct match_callback *callback);
int bus_match_add(BusMatchNode *root, BusMatchComponent *components, size_t n_components, BusMatchCallback *callback);
int bus_match_remove(BusMatchNode *root, BusMatchCallback *callback);
void bus_match_free(struct bus_match_node *node);
void bus_match_free(BusMatchNode *node);
void bus_match_dump(FILE *out, struct bus_match_node *node, unsigned level);
void bus_match_dump(FILE *out, BusMatchNode *node, unsigned level);
const char* bus_match_node_type_to_string(enum bus_match_node_type t, char buf[], size_t l);
enum bus_match_node_type bus_match_node_type_from_string(const char *k, size_t n);
const char* bus_match_node_type_to_string(BusMatchNodeType t, char buf[], size_t l);
BusMatchNodeType bus_match_node_type_from_string(const char *k, size_t n);
int bus_match_parse(const char *match, struct bus_match_component **ret_components, size_t *ret_n_components);
void bus_match_parse_free(struct bus_match_component *components, size_t n_components);
char* bus_match_to_string(struct bus_match_component *components, size_t n_components);
int bus_match_parse(const char *match, BusMatchComponent **ret_components, size_t *ret_n_components);
void bus_match_parse_free(BusMatchComponent *components, size_t n_components);
char* bus_match_to_string(BusMatchComponent *components, size_t n_components);
enum bus_match_scope bus_match_get_scope(const struct bus_match_component *components, size_t n_components);
BusMatchScope bus_match_get_scope(const BusMatchComponent *components, size_t n_components);

View File

@@ -38,7 +38,7 @@ static void *adjust_pointer(const void *p, void *old_base, size_t sz, void *new_
return (uint8_t*) new_base + ((uint8_t*) p - (uint8_t*) old_base);
}
static void message_free_part(sd_bus_message *m, struct bus_body_part *part) {
static void message_free_part(sd_bus_message *m, BusMessageBodyPart *part) {
assert(m);
assert(part);
@@ -66,13 +66,13 @@ static void message_free_part(sd_bus_message *m, struct bus_body_part *part) {
}
static void message_reset_parts(sd_bus_message *m) {
struct bus_body_part *part;
BusMessageBodyPart *part;
assert(m);
part = &m->body;
while (m->n_body_parts > 0) {
struct bus_body_part *next = part->next;
BusMessageBodyPart *next = part->next;
message_free_part(m, part);
part = next;
m->n_body_parts--;
@@ -84,7 +84,7 @@ static void message_reset_parts(sd_bus_message *m) {
m->cached_rindex_part_begin = 0;
}
static struct bus_container *message_get_last_container(sd_bus_message *m) {
static BusMessageContainer *message_get_last_container(sd_bus_message *m) {
assert(m);
if (m->n_containers == 0)
@@ -95,7 +95,7 @@ static struct bus_container *message_get_last_container(sd_bus_message *m) {
}
static void message_free_last_container(sd_bus_message *m) {
struct bus_container *c;
BusMessageContainer *c;
c = message_get_last_container(m);
@@ -153,7 +153,7 @@ static void *message_extend_fields(sd_bus_message *m, size_t sz, bool add_offset
if (m->poisoned)
return NULL;
old_size = sizeof(struct bus_header) + m->fields_size;
old_size = sizeof(BusMessageHeader) + m->fields_size;
start = ALIGN8(old_size);
new_size = start + sz;
@@ -176,7 +176,7 @@ static void *message_extend_fields(sd_bus_message *m, size_t sz, bool add_offset
if (!np)
goto poison;
memcpy(np, m->header, sizeof(struct bus_header));
memcpy(np, m->header, sizeof(BusMessageHeader));
}
/* Zero out padding */
@@ -185,7 +185,7 @@ static void *message_extend_fields(sd_bus_message *m, size_t sz, bool add_offset
op = m->header;
m->header = np;
m->fields_size = new_size - sizeof(struct bus_header);
m->fields_size = new_size - sizeof(BusMessageHeader);
/* Adjust quick access pointers */
m->path = adjust_pointer(m->path, op, old_size, m->header);
@@ -201,7 +201,7 @@ static void *message_extend_fields(sd_bus_message *m, size_t sz, bool add_offset
if (m->n_header_offsets >= ELEMENTSOF(m->header_offsets))
goto poison;
m->header_offsets[m->n_header_offsets++] = new_size - sizeof(struct bus_header);
m->header_offsets[m->n_header_offsets++] = new_size - sizeof(BusMessageHeader);
}
return (uint8_t*) np + start;
@@ -337,7 +337,7 @@ static int message_from_header(
sd_bus_message **ret) {
_cleanup_free_ sd_bus_message *m = NULL;
struct bus_header *h;
BusMessageHeader *h;
size_t a, label_sz = 0; /* avoid false maybe-uninitialized warning */
assert(bus);
@@ -345,7 +345,7 @@ static int message_from_header(
assert(fds || n_fds <= 0);
assert(ret);
if (message_size < sizeof(struct bus_header))
if (message_size < sizeof(BusMessageHeader))
return -EBADMSG;
h = buffer;
@@ -381,9 +381,9 @@ static int message_from_header(
m->fields_size = BUS_MESSAGE_BSWAP32(m, h->fields_size);
m->body_size = BUS_MESSAGE_BSWAP32(m, h->body_size);
assert(message_size >= sizeof(struct bus_header));
if (ALIGN8(m->fields_size) > message_size - sizeof(struct bus_header) ||
m->body_size != message_size - sizeof(struct bus_header) - ALIGN8(m->fields_size))
assert(message_size >= sizeof(BusMessageHeader));
if (ALIGN8(m->fields_size) > message_size - sizeof(BusMessageHeader) ||
m->body_size != message_size - sizeof(BusMessageHeader) - ALIGN8(m->fields_size))
return -EBADMSG;
m->fds = fds;
@@ -426,10 +426,10 @@ int bus_message_from_malloc(
if (r < 0)
return r;
sz = length - sizeof(struct bus_header) - ALIGN8(m->fields_size);
sz = length - sizeof(BusMessageHeader) - ALIGN8(m->fields_size);
if (sz > 0) {
m->n_body_parts = 1;
m->body.data = (uint8_t*) buffer + sizeof(struct bus_header) + ALIGN8(m->fields_size);
m->body.data = (uint8_t*) buffer + sizeof(BusMessageHeader) + ALIGN8(m->fields_size);
m->body.size = sz;
m->body.sealed = true;
m->body.memfd = -EBADF;
@@ -463,14 +463,14 @@ _public_ int sd_bus_message_new(
/* Creation of messages with _SD_BUS_MESSAGE_TYPE_INVALID is allowed. */
assert_return(type < _SD_BUS_MESSAGE_TYPE_MAX, -EINVAL);
sd_bus_message *t = malloc0(ALIGN(sizeof(sd_bus_message)) + sizeof(struct bus_header));
sd_bus_message *t = malloc0(ALIGN(sizeof(sd_bus_message)) + sizeof(BusMessageHeader));
if (!t)
return -ENOMEM;
t->n_ref = 1;
t->creds = (sd_bus_creds) { SD_BUS_CREDS_INIT_FIELDS };
t->bus = sd_bus_ref(bus);
t->header = (struct bus_header*) ((uint8_t*) t + ALIGN(sizeof(struct sd_bus_message)));
t->header = (BusMessageHeader*) ((uint8_t*) t + ALIGN(sizeof(struct sd_bus_message)));
t->header->endian = BUS_NATIVE_ENDIAN;
t->header->type = type;
t->header->version = bus->message_version;
@@ -1085,8 +1085,8 @@ _public_ int sd_bus_message_set_allow_interactive_authorization(sd_bus_message *
return 0;
}
static struct bus_body_part *message_append_part(sd_bus_message *m) {
struct bus_body_part *part;
static BusMessageBodyPart *message_append_part(sd_bus_message *m) {
BusMessageBodyPart *part;
assert(m);
@@ -1099,7 +1099,7 @@ static struct bus_body_part *message_append_part(sd_bus_message *m) {
} else {
assert(m->body_end);
part = new0(struct bus_body_part, 1);
part = new0(BusMessageBodyPart, 1);
if (!part) {
m->poisoned = true;
return NULL;
@@ -1115,7 +1115,7 @@ static struct bus_body_part *message_append_part(sd_bus_message *m) {
return part;
}
static void part_zero(struct bus_body_part *part, size_t sz) {
static void part_zero(BusMessageBodyPart *part, size_t sz) {
assert(part);
assert(sz > 0);
assert(sz < 8);
@@ -1131,7 +1131,7 @@ static void part_zero(struct bus_body_part *part, size_t sz) {
static int part_make_space(
struct sd_bus_message *m,
struct bus_body_part *part,
BusMessageBodyPart *part,
size_t sz,
void **q) {
@@ -1176,7 +1176,7 @@ static void message_extend_containers(sd_bus_message *m, size_t expand) {
return;
/* Update counters */
for (struct bus_container *c = m->containers; c < m->containers + m->n_containers; c++)
for (BusMessageContainer *c = m->containers; c < m->containers + m->n_containers; c++)
if (c->array_size)
*c->array_size += expand;
}
@@ -1210,7 +1210,7 @@ static void *message_extend_body(
}
if (added > 0) {
struct bus_body_part *part = NULL;
BusMessageBodyPart *part = NULL;
bool add_new_part;
add_new_part =
@@ -1258,7 +1258,7 @@ static void *message_extend_body(
/* Readjust pointers */
if (m->n_containers > 0)
for (struct bus_container *c = m->containers; c < m->containers + m->n_containers; c++)
for (BusMessageContainer *c = m->containers; c < m->containers + m->n_containers; c++)
c->array_size = adjust_pointer(c->array_size, op, os, part->data);
m->error.message = (const char*) adjust_pointer(m->error.message, op, os, part->data);
@@ -1302,7 +1302,7 @@ static int message_push_fd(sd_bus_message *m, int fd) {
int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored) {
_cleanup_close_ int fd = -EBADF;
struct bus_container *c;
BusMessageContainer *c;
ssize_t align, sz;
uint32_t u32;
void *a;
@@ -1444,7 +1444,7 @@ _public_ int sd_bus_message_append_string_space(
size_t size,
char **s) {
struct bus_container *c;
BusMessageContainer *c;
void *a;
assert_return(m, -EINVAL);
@@ -1524,7 +1524,7 @@ _public_ int sd_bus_message_append_string_iovec(
static int bus_message_open_array(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents,
uint32_t **array_size,
size_t *begin) {
@@ -1533,7 +1533,7 @@ static int bus_message_open_array(
int alignment;
void *a, *op;
size_t os;
struct bus_body_part *o;
BusMessageBodyPart *o;
assert(m);
assert(c);
@@ -1603,7 +1603,7 @@ static int bus_message_open_array(
static int bus_message_open_variant(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents) {
size_t l;
@@ -1653,7 +1653,7 @@ static int bus_message_open_variant(
static int bus_message_open_struct(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents,
size_t *begin) {
@@ -1705,7 +1705,7 @@ static int bus_message_open_struct(
static int bus_message_open_dict_entry(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents,
size_t *begin) {
@@ -1744,7 +1744,7 @@ _public_ int sd_bus_message_open_container(
char type,
const char *contents) {
struct bus_container *c;
BusMessageContainer *c;
uint32_t *array_size = NULL;
_cleanup_free_ char *signature = NULL;
size_t before, begin = 0;
@@ -1788,7 +1788,7 @@ _public_ int sd_bus_message_open_container(
return r;
/* OK, let's fill it in */
m->containers[m->n_containers++] = (struct bus_container) {
m->containers[m->n_containers++] = (BusMessageContainer) {
.enclosing = type,
.signature = TAKE_PTR(signature),
.array_size = array_size,
@@ -1800,7 +1800,7 @@ _public_ int sd_bus_message_open_container(
}
_public_ int sd_bus_message_close_container(sd_bus_message *m) {
struct bus_container *c;
BusMessageContainer *c;
assert_return(m, -EINVAL);
assert_return(!m->sealed, -EPERM);
@@ -1820,13 +1820,13 @@ _public_ int sd_bus_message_close_container(sd_bus_message *m) {
return 0;
}
typedef struct {
typedef struct BusTypeStack {
const char *types;
unsigned n_struct;
unsigned n_array;
} TypeStack;
} BusTypeStack;
static int type_stack_push(TypeStack *stack, unsigned max, unsigned *i, const char *types, unsigned n_struct, unsigned n_array) {
static int type_stack_push(BusTypeStack *stack, unsigned max, unsigned *i, const char *types, unsigned n_struct, unsigned n_array) {
assert(stack);
assert(max > 0);
@@ -1841,7 +1841,7 @@ static int type_stack_push(TypeStack *stack, unsigned max, unsigned *i, const ch
return 0;
}
static int type_stack_pop(TypeStack *stack, unsigned max, unsigned *i, const char **types, unsigned *n_struct, unsigned *n_array) {
static int type_stack_pop(BusTypeStack *stack, unsigned max, unsigned *i, const char **types, unsigned *n_struct, unsigned *n_array) {
assert(stack);
assert(max > 0);
assert(types);
@@ -1865,7 +1865,7 @@ _public_ int sd_bus_message_appendv(
va_list ap) {
unsigned n_array, n_struct;
TypeStack stack[BUS_CONTAINER_DEPTH];
BusTypeStack stack[BUS_CONTAINER_DEPTH];
unsigned stack_ptr = 0;
int r;
@@ -2184,7 +2184,7 @@ _public_ int sd_bus_message_append_array_memfd(
uint64_t size) {
_cleanup_close_ int copy_fd = -EBADF;
struct bus_body_part *part;
BusMessageBodyPart *part;
ssize_t align, sz;
uint64_t real_size;
void *a;
@@ -2260,8 +2260,8 @@ _public_ int sd_bus_message_append_string_memfd(
uint64_t size) {
_cleanup_close_ int copy_fd = -EBADF;
struct bus_body_part *part;
struct bus_container *c;
BusMessageBodyPart *part;
BusMessageContainer *c;
uint64_t real_size;
void *a;
int r;
@@ -2375,7 +2375,7 @@ static int bus_message_close_header(sd_bus_message *m) {
}
_public_ int sd_bus_message_seal(sd_bus_message *m, uint64_t cookie, uint64_t timeout_usec) {
struct bus_body_part *part;
BusMessageBodyPart *part;
size_t a;
unsigned i;
int r;
@@ -2466,7 +2466,7 @@ _public_ int sd_bus_message_seal(sd_bus_message *m, uint64_t cookie, uint64_t ti
return 0;
}
int bus_body_part_map(struct bus_body_part *part) {
int bus_body_part_map(BusMessageBodyPart *part) {
void *p;
size_t psz, shift;
@@ -2508,7 +2508,7 @@ int bus_body_part_map(struct bus_body_part *part) {
return 0;
}
void bus_body_part_unmap(struct bus_body_part *part) {
void bus_body_part_unmap(BusMessageBodyPart *part) {
assert_se(part);
@@ -2532,7 +2532,7 @@ void bus_body_part_unmap(struct bus_body_part *part) {
}
static bool message_end_of_signature(sd_bus_message *m) {
struct bus_container *c;
BusMessageContainer *c;
assert(m);
@@ -2541,7 +2541,7 @@ static bool message_end_of_signature(sd_bus_message *m) {
}
static bool message_end_of_array(sd_bus_message *m, size_t index) {
struct bus_container *c;
BusMessageContainer *c;
assert(m);
@@ -2569,8 +2569,8 @@ _public_ int sd_bus_message_at_end(sd_bus_message *m, int complete) {
return false;
}
static struct bus_body_part* find_part(sd_bus_message *m, size_t index, size_t sz, void **p) {
struct bus_body_part *part;
static BusMessageBodyPart* find_part(sd_bus_message *m, size_t index, size_t sz, void **p) {
BusMessageBodyPart *part;
size_t begin;
int r;
@@ -2619,7 +2619,7 @@ static int message_peek_body(
void **ret) {
size_t k, start, end, padding;
struct bus_body_part *part;
BusMessageBodyPart *part;
uint8_t *q;
assert(m);
@@ -2712,7 +2712,7 @@ static bool validate_object_path(const char *s, size_t l) {
}
_public_ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) {
struct bus_container *c;
BusMessageContainer *c;
size_t rindex;
void *q;
int r;
@@ -2853,7 +2853,7 @@ _public_ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) {
static int bus_message_enter_array(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents,
uint32_t **array_size) {
@@ -2907,7 +2907,7 @@ static int bus_message_enter_array(
static int bus_message_enter_variant(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents) {
size_t rindex;
@@ -2962,7 +2962,7 @@ static int bus_message_enter_variant(
static int bus_message_enter_struct(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents) {
size_t l;
@@ -2997,7 +2997,7 @@ static int bus_message_enter_struct(
static int bus_message_enter_dict_entry(
sd_bus_message *m,
struct bus_container *c,
BusMessageContainer *c,
const char *contents) {
size_t l;
@@ -3036,7 +3036,7 @@ static int bus_message_enter_dict_entry(
_public_ int sd_bus_message_enter_container(sd_bus_message *m,
char type,
const char *contents) {
struct bus_container *c;
BusMessageContainer *c;
uint32_t *array_size = NULL;
_cleanup_free_ char *signature = NULL;
size_t before;
@@ -3116,7 +3116,7 @@ _public_ int sd_bus_message_enter_container(sd_bus_message *m,
return r;
/* OK, let's fill it in */
m->containers[m->n_containers++] = (struct bus_container) {
m->containers[m->n_containers++] = (BusMessageContainer) {
.enclosing = type,
.signature = TAKE_PTR(signature),
@@ -3131,7 +3131,7 @@ _public_ int sd_bus_message_enter_container(sd_bus_message *m,
}
_public_ int sd_bus_message_exit_container(sd_bus_message *m) {
struct bus_container *c;
BusMessageContainer *c;
assert_return(m, -EINVAL);
assert_return(m->sealed, -EPERM);
@@ -3158,7 +3158,7 @@ _public_ int sd_bus_message_exit_container(sd_bus_message *m) {
}
static void message_quit_container(sd_bus_message *m) {
struct bus_container *c;
BusMessageContainer *c;
assert(m);
assert(m->sealed);
@@ -3178,7 +3178,7 @@ static void message_quit_container(sd_bus_message *m) {
}
_public_ int sd_bus_message_peek_type(sd_bus_message *m, char *ret_type, const char **ret_contents) {
struct bus_container *c;
BusMessageContainer *c;
int r;
assert_return(m, -EINVAL);
@@ -3291,7 +3291,7 @@ eof:
}
_public_ int sd_bus_message_rewind(sd_bus_message *m, int complete) {
struct bus_container *c;
BusMessageContainer *c;
assert_return(m, -EINVAL);
assert_return(m->sealed, -EPERM);
@@ -3317,7 +3317,7 @@ _public_ int sd_bus_message_readv(
va_list ap) {
unsigned n_array, n_struct;
TypeStack stack[BUS_CONTAINER_DEPTH];
BusTypeStack stack[BUS_CONTAINER_DEPTH];
unsigned stack_ptr = 0;
unsigned n_loop = 0;
int r;
@@ -3532,7 +3532,7 @@ _public_ int sd_bus_message_skip(sd_bus_message *m, const char *types) {
/* If types is NULL, read exactly one element */
if (!types) {
struct bus_container *c;
BusMessageContainer *c;
size_t l;
if (message_end_of_signature(m))
@@ -3692,7 +3692,7 @@ _public_ int sd_bus_message_read_array(
const void **ptr,
size_t *size) {
struct bus_container *c;
BusMessageContainer *c;
void *p;
size_t sz;
ssize_t align;
@@ -4266,7 +4266,7 @@ int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz) {
size_t total;
void *p, *e;
size_t i;
struct bus_body_part *part;
BusMessageBodyPart *part;
assert(m);
assert(buffer);
@@ -4430,7 +4430,7 @@ _public_ int sd_bus_message_get_errno(sd_bus_message *m) {
}
_public_ const char* sd_bus_message_get_signature(sd_bus_message *m, int complete) {
struct bus_container *c;
BusMessageContainer *c;
assert_return(m, NULL);

View File

@@ -7,11 +7,23 @@
#include "sd-bus-protocol.h"
#include "bus-creds.h"
#include "bus-forward.h"
#include "bus-protocol.h"
#include "forward.h"
#include "memory-util.h"
struct bus_container {
typedef struct BusMessageHeader {
uint8_t endian;
uint8_t type;
uint8_t flags;
uint8_t version;
uint32_t body_size;
/* Note that what the bus spec calls "serial" we'll call "cookie" instead, because we don't
* want to imply that the cookie was in any way monotonically increasing. */
uint32_t serial;
uint32_t fields_size;
} _packed_ BusMessageHeader;
typedef struct BusMessageContainer {
char enclosing;
/* Indexes into the signature string */
@@ -24,10 +36,10 @@ struct bus_container {
uint32_t *array_size;
char *peeked_signature;
};
} BusMessageContainer;
struct bus_body_part {
struct bus_body_part *next;
typedef struct BusMessageBodyPart {
BusMessageBodyPart *next;
void *data;
void *mmap_begin;
size_t size;
@@ -39,7 +51,7 @@ struct bus_body_part {
bool munmap_this:1;
bool sealed:1;
bool is_zero:1;
};
} BusMessageBodyPart;
typedef struct sd_bus_message {
/* Caveat: a message can be referenced in two different ways: the main (user-facing) way will also
@@ -81,24 +93,24 @@ typedef struct sd_bus_message {
bool sensitive:1;
/* The first bytes of the message */
struct bus_header *header;
BusMessageHeader *header;
size_t fields_size;
size_t body_size;
size_t user_body_size;
struct bus_body_part body;
struct bus_body_part *body_end;
BusMessageBodyPart body;
BusMessageBodyPart *body_end;
unsigned n_body_parts;
size_t rindex;
struct bus_body_part *cached_rindex_part;
BusMessageBodyPart *cached_rindex_part;
size_t cached_rindex_part_begin;
uint32_t n_fds;
int *fds;
struct bus_container root_container, *containers;
BusMessageContainer root_container, *containers;
size_t n_containers;
struct iovec *iovec;
@@ -142,19 +154,19 @@ static inline uint64_t BUS_MESSAGE_COOKIE(sd_bus_message *m) {
static inline size_t BUS_MESSAGE_SIZE(sd_bus_message *m) {
return
sizeof(struct bus_header) +
sizeof(BusMessageHeader) +
ALIGN8(m->fields_size) +
m->body_size;
}
static inline size_t BUS_MESSAGE_BODY_BEGIN(sd_bus_message *m) {
return
sizeof(struct bus_header) +
sizeof(BusMessageHeader) +
ALIGN8(m->fields_size);
}
static inline void* BUS_MESSAGE_FIELDS(sd_bus_message *m) {
return (uint8_t*) m->header + sizeof(struct bus_header);
return (uint8_t*) m->header + sizeof(BusMessageHeader);
}
int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz);
@@ -174,8 +186,8 @@ int bus_message_get_arg_strv(sd_bus_message *m, unsigned i, char ***strv);
#define MESSAGE_FOREACH_PART(part, i, m) \
for ((i) = 0, (part) = &(m)->body; (i) < (m)->n_body_parts; (i)++, (part) = (part)->next)
int bus_body_part_map(struct bus_body_part *part);
void bus_body_part_unmap(struct bus_body_part *part);
int bus_body_part_map(BusMessageBodyPart *part);
void bus_body_part_unmap(BusMessageBodyPart *part);
int bus_message_new_synthetic_error(sd_bus *bus, uint64_t serial, const sd_bus_error *e, sd_bus_message **m);

View File

@@ -20,7 +20,7 @@
static int node_vtable_get_userdata(
sd_bus *bus,
const char *path,
struct node_vtable *c,
BusNodeVTable *c,
void **userdata,
sd_bus_error *error) {
@@ -77,7 +77,7 @@ static void *vtable_property_convert_userdata(const sd_bus_vtable *p, void *u) {
static int vtable_property_get_userdata(
sd_bus *bus,
const char *path,
struct vtable_member *p,
BusVTableMember *p,
void **userdata,
sd_bus_error *error) {
@@ -102,7 +102,7 @@ static int vtable_property_get_userdata(
static int add_enumerated_to_set(
sd_bus *bus,
const char *prefix,
struct node_enumerator *first,
BusNodeEnumerator *first,
OrderedSet *s,
sd_bus_error *error) {
@@ -174,7 +174,7 @@ enum {
static int add_subtree_to_set(
sd_bus *bus,
const char *prefix,
struct node *n,
BusNode *n,
unsigned flags,
OrderedSet *s,
sd_bus_error *error) {
@@ -222,7 +222,7 @@ static int add_subtree_to_set(
static int get_child_nodes(
sd_bus *bus,
const char *prefix,
struct node *n,
BusNode *n,
unsigned flags,
OrderedSet **ret,
sd_bus_error *error) {
@@ -250,7 +250,7 @@ static int get_child_nodes(
static int node_callbacks_run(
sd_bus *bus,
sd_bus_message *m,
struct node_callback *first,
BusNodeCallback *first,
bool require_fallback,
bool *found_object) {
@@ -301,7 +301,7 @@ static int node_callbacks_run(
#define CAPABILITY_SHIFT(x) (((x) >> __builtin_ctzll(_SD_BUS_VTABLE_CAPABILITY_MASK)) & 0xFFFF)
static int check_access(sd_bus *bus, sd_bus_message *m, struct vtable_member *c, sd_bus_error *error) {
static int check_access(sd_bus *bus, sd_bus_message *m, BusVTableMember *c, sd_bus_error *error) {
uint64_t cap;
int r;
@@ -340,7 +340,7 @@ static int check_access(sd_bus *bus, sd_bus_message *m, struct vtable_member *c,
static int method_callbacks_run(
sd_bus *bus,
sd_bus_message *m,
struct vtable_member *c,
BusVTableMember *c,
bool require_fallback,
bool *found_object) {
@@ -565,7 +565,7 @@ static int invoke_property_set(
static int property_get_set_callbacks_run(
sd_bus *bus,
sd_bus_message *m,
struct vtable_member *c,
BusVTableMember *c,
bool require_fallback,
bool is_get,
bool *found_object) {
@@ -697,7 +697,7 @@ static int vtable_append_one_property(
sd_bus *bus,
sd_bus_message *reply,
const char *path,
struct node_vtable *c,
BusNodeVTable *c,
const sd_bus_vtable *v,
void *userdata,
sd_bus_error *error) {
@@ -752,7 +752,7 @@ static int vtable_append_all_properties(
sd_bus *bus,
sd_bus_message *reply,
const char *path,
struct node_vtable *c,
BusNodeVTable *c,
void *userdata,
sd_bus_error *error) {
@@ -800,7 +800,7 @@ static int vtable_append_all_properties(
static int property_get_all_callbacks_run(
sd_bus *bus,
sd_bus_message *m,
struct node_vtable *first,
BusNodeVTable *first,
bool require_fallback,
const char *iface,
bool *found_object) {
@@ -881,7 +881,7 @@ static int property_get_all_callbacks_run(
static int bus_node_exists(
sd_bus *bus,
struct node *n,
BusNode *n,
const char *path,
bool require_fallback) {
@@ -923,7 +923,7 @@ static int bus_node_exists(
int introspect_path(
sd_bus *bus,
const char *path,
struct node *n,
BusNode *n,
bool require_fallback,
bool ignore_nodes_modified,
bool *found_object,
@@ -931,7 +931,7 @@ int introspect_path(
sd_bus_error *error) {
_cleanup_ordered_set_free_ OrderedSet *s = NULL;
_cleanup_(introspect_done) struct introspect intro = {};
_cleanup_(introspect_done) BusIntrospect intro = {};
bool empty;
int r;
@@ -1006,7 +1006,7 @@ int introspect_path(
static int process_introspect(
sd_bus *bus,
sd_bus_message *m,
struct node *n,
BusNode *n,
bool require_fallback,
bool *found_object) {
@@ -1053,7 +1053,7 @@ static int object_manager_serialize_path(
const char *previous_interface = NULL;
bool found_something = false;
struct node *n;
BusNode *n;
int r;
assert(bus);
@@ -1227,7 +1227,7 @@ static int object_manager_serialize_path_and_fallbacks(
static int process_get_managed_objects(
sd_bus *bus,
sd_bus_message *m,
struct node *n,
BusNode *n,
bool require_fallback,
bool *found_object) {
@@ -1290,8 +1290,8 @@ static int object_find_and_run(
bool require_fallback,
bool *found_object) {
struct node *n;
struct vtable_member vtable_key, *v;
BusNode *n;
BusVTableMember vtable_key, *v;
int r;
assert(bus);
@@ -1484,8 +1484,8 @@ int bus_process_object(sd_bus *bus, sd_bus_message *m) {
return 1;
}
static struct node* bus_node_allocate(sd_bus *bus, const char *path) {
struct node *n, *parent;
static BusNode* bus_node_allocate(sd_bus *bus, const char *path) {
BusNode *n, *parent;
const char *e;
_cleanup_free_ char *s = NULL;
char *p;
@@ -1519,7 +1519,7 @@ static struct node* bus_node_allocate(sd_bus *bus, const char *path) {
return NULL;
}
n = new0(struct node, 1);
n = new0(BusNode, 1);
if (!n)
return NULL;
@@ -1538,7 +1538,7 @@ static struct node* bus_node_allocate(sd_bus *bus, const char *path) {
return n;
}
void bus_node_gc(sd_bus *b, struct node *n) {
void bus_node_gc(sd_bus *b, BusNode *n) {
assert(b);
if (!n)
@@ -1561,8 +1561,8 @@ void bus_node_gc(sd_bus *b, struct node *n) {
free(n);
}
static int bus_find_parent_object_manager(sd_bus *bus, struct node **out, const char *path, bool* path_has_object_manager) {
struct node *n;
static int bus_find_parent_object_manager(sd_bus *bus, BusNode **out, const char *path, bool* path_has_object_manager) {
BusNode *n;
assert(bus);
assert(path);
@@ -1607,7 +1607,7 @@ static int bus_add_object(
void *userdata) {
sd_bus_slot *s;
struct node *n;
BusNode *n;
int r;
assert_return(bus, -EINVAL);
@@ -1620,7 +1620,7 @@ static int bus_add_object(
if (!n)
return -ENOMEM;
s = bus_slot_allocate(bus, !slot, BUS_NODE_CALLBACK, sizeof(struct node_callback), userdata);
s = bus_slot_allocate(bus, !slot, BUS_NODE_CALLBACK, sizeof(BusNodeCallback), userdata);
if (!s) {
r = -ENOMEM;
goto fail;
@@ -1665,7 +1665,7 @@ _public_ int sd_bus_add_fallback(
return bus_add_object(bus, slot, true, prefix, callback, userdata);
}
static void vtable_member_hash_func(const struct vtable_member *m, struct siphash *state) {
static void vtable_member_hash_func(const BusVTableMember *m, struct siphash *state) {
assert(m);
string_hash_func(m->path, state);
@@ -1673,7 +1673,7 @@ static void vtable_member_hash_func(const struct vtable_member *m, struct siphas
string_hash_func(m->member, state);
}
static int vtable_member_compare_func(const struct vtable_member *x, const struct vtable_member *y) {
static int vtable_member_compare_func(const BusVTableMember *x, const BusVTableMember *y) {
int r;
assert(x);
@@ -1692,7 +1692,7 @@ static int vtable_member_compare_func(const struct vtable_member *x, const struc
DEFINE_PRIVATE_HASH_OPS_WITH_KEY_DESTRUCTOR(
vtable_member_hash_ops,
struct vtable_member, vtable_member_hash_func, vtable_member_compare_func, free);
BusVTableMember, vtable_member_hash_func, vtable_member_compare_func, free);
typedef enum {
NAMES_FIRST_PART = 1 << 0, /* first part of argument name list (input names). It is reset by names_are_valid() */
@@ -1796,9 +1796,9 @@ static int add_object_vtable_internal(
void *userdata) {
sd_bus_slot *s = NULL;
struct node_vtable *existing = NULL;
BusNodeVTable *existing = NULL;
const sd_bus_vtable *v;
struct node *n;
BusNode *n;
int r;
const char *names = "";
names_flags nf;
@@ -1839,7 +1839,7 @@ static int add_object_vtable_internal(
}
}
s = bus_slot_allocate(bus, !slot, BUS_NODE_VTABLE, sizeof(struct node_vtable), userdata);
s = bus_slot_allocate(bus, !slot, BUS_NODE_VTABLE, sizeof(BusNodeVTable), userdata);
if (!s) {
r = -ENOMEM;
goto fail;
@@ -1861,7 +1861,7 @@ static int add_object_vtable_internal(
switch (v->type) {
case _SD_BUS_VTABLE_METHOD: {
struct vtable_member *m;
BusVTableMember *m;
nf = NAMES_FIRST_PART;
if (bus_vtable_has_names(vtable))
@@ -1878,7 +1878,7 @@ static int add_object_vtable_internal(
goto fail;
}
m = new0(struct vtable_member, 1);
m = new0(BusVTableMember, 1);
if (!m) {
r = -ENOMEM;
goto fail;
@@ -1915,7 +1915,7 @@ static int add_object_vtable_internal(
_fallthrough_;
case _SD_BUS_VTABLE_PROPERTY: {
struct vtable_member *m;
BusVTableMember *m;
if (!member_name_is_valid(v->x.property.member) ||
!signature_is_single(v->x.property.signature, false) ||
@@ -1928,7 +1928,7 @@ static int add_object_vtable_internal(
goto fail;
}
m = new0(struct vtable_member, 1);
m = new0(BusVTableMember, 1);
if (!m) {
r = -ENOMEM;
goto fail;
@@ -2023,7 +2023,7 @@ _public_ int sd_bus_add_node_enumerator(
void *userdata) {
sd_bus_slot *s;
struct node *n;
BusNode *n;
int r;
assert_return(bus, -EINVAL);
@@ -2036,7 +2036,7 @@ _public_ int sd_bus_add_node_enumerator(
if (!n)
return -ENOMEM;
s = bus_slot_allocate(bus, !slot, BUS_NODE_ENUMERATOR, sizeof(struct node_enumerator), userdata);
s = bus_slot_allocate(bus, !slot, BUS_NODE_ENUMERATOR, sizeof(BusNodeEnumerator), userdata);
if (!s) {
r = -ENOMEM;
goto fail;
@@ -2072,8 +2072,8 @@ static int emit_properties_changed_on_interface(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
bool has_invalidating = false, has_changing = false;
struct vtable_member key = {};
struct node *n;
BusVTableMember key = {};
BusNode *n;
void *u = NULL;
int r;
@@ -2125,7 +2125,7 @@ static int emit_properties_changed_on_interface(
* PropertiesChanged message */
STRV_FOREACH(property, names) {
struct vtable_member *v;
BusVTableMember *v;
assert_return(member_name_is_valid(*property), -EINVAL);
@@ -2221,7 +2221,7 @@ static int emit_properties_changed_on_interface(
if (names) {
STRV_FOREACH(property, names) {
struct vtable_member *v;
BusVTableMember *v;
key.member = *property;
assert_se(v = set_get(bus->vtable_properties, &key));
@@ -2365,7 +2365,7 @@ static int object_added_append_all_prefix(
bool require_fallback) {
const char *previous_interface = NULL;
struct node *n;
BusNode *n;
int r;
assert(bus);
@@ -2515,7 +2515,7 @@ static int object_added_append_all(sd_bus *bus, sd_bus_message *m, const char *p
_public_ int sd_bus_emit_object_added(sd_bus *bus, const char *path) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
struct node *object_manager;
BusNode *object_manager;
int r;
/*
@@ -2587,7 +2587,7 @@ static int object_removed_append_all_prefix(
bool require_fallback) {
const char *previous_interface = NULL;
struct node *n;
BusNode *n;
int r;
assert(bus);
@@ -2695,7 +2695,7 @@ static int object_removed_append_all(sd_bus *bus, sd_bus_message *m, const char
_public_ int sd_bus_emit_object_removed(sd_bus *bus, const char *path) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
struct node *object_manager;
BusNode *object_manager;
int r;
/*
@@ -2768,7 +2768,7 @@ static int interfaces_added_append_one_prefix(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
bool found_interface = false;
struct node *n;
BusNode *n;
void *u = NULL;
int r;
@@ -2865,7 +2865,7 @@ static int interfaces_added_append_one(
_public_ int sd_bus_emit_interfaces_added_strv(sd_bus *bus, const char *path, char **interfaces) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
struct node *object_manager;
BusNode *object_manager;
int r;
assert_return(bus, -EINVAL);
@@ -2960,7 +2960,7 @@ _public_ int sd_bus_emit_interfaces_added(sd_bus *bus, const char *path, const c
_public_ int sd_bus_emit_interfaces_removed_strv(sd_bus *bus, const char *path, char **interfaces) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
struct node *object_manager;
BusNode *object_manager;
int r;
assert_return(bus, -EINVAL);
@@ -3021,7 +3021,7 @@ _public_ int sd_bus_emit_interfaces_removed(sd_bus *bus, const char *path, const
_public_ int sd_bus_add_object_manager(sd_bus *bus, sd_bus_slot **slot, const char *path) {
sd_bus_slot *s;
struct node *n;
BusNode *n;
int r;
assert_return(bus, -EINVAL);
@@ -3033,7 +3033,7 @@ _public_ int sd_bus_add_object_manager(sd_bus *bus, sd_bus_slot **slot, const ch
if (!n)
return -ENOMEM;
s = bus_slot_allocate(bus, !slot, BUS_NODE_OBJECT_MANAGER, sizeof(struct node_object_manager), NULL);
s = bus_slot_allocate(bus, !slot, BUS_NODE_OBJECT_MANAGER, sizeof(BusNodeObjectManager), NULL);
if (!s) {
r = -ENOMEM;
goto fail;

View File

@@ -1,19 +1,17 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "forward.h"
struct node;
#include "bus-forward.h"
const sd_bus_vtable* bus_vtable_next(const sd_bus_vtable *vtable, const sd_bus_vtable *v);
bool bus_vtable_has_names(const sd_bus_vtable *vtable);
int bus_process_object(sd_bus *bus, sd_bus_message *m);
void bus_node_gc(sd_bus *b, struct node *n);
void bus_node_gc(sd_bus *b, BusNode *n);
int introspect_path(
sd_bus *bus,
const char *path,
struct node *n,
BusNode *n,
bool require_fallback,
bool ignore_nodes_modified,
bool *found_object,

View File

@@ -3,22 +3,6 @@
#include <endian.h>
#include "forward.h"
/* Packet header */
struct _packed_ bus_header {
uint8_t endian;
uint8_t type;
uint8_t flags;
uint8_t version;
uint32_t body_size;
/* Note that what the bus spec calls "serial" we'll call "cookie" instead, because we don't
* want to imply that the cookie was in any way monotonically increasing. */
uint32_t serial;
uint32_t fields_size;
};
/* Endianness */
enum {

View File

@@ -4,6 +4,7 @@
#include "alloc-util.h"
#include "bus-control.h"
#include "bus-internal.h"
#include "bus-objects.h"
#include "bus-slot.h"
#include "prioq.h"
@@ -120,12 +121,12 @@ void bus_slot_disconnect(sd_bus_slot *slot, bool unref) {
const sd_bus_vtable *v;
for (v = slot->node_vtable.vtable; v->type != _SD_BUS_VTABLE_END; v = bus_vtable_next(slot->node_vtable.vtable, v)) {
struct vtable_member *x = NULL;
BusVTableMember *x = NULL;
switch (v->type) {
case _SD_BUS_VTABLE_METHOD: {
struct vtable_member key;
BusVTableMember key;
key.path = slot->node_vtable.node->path;
key.interface = slot->node_vtable.interface;
@@ -137,7 +138,7 @@ void bus_slot_disconnect(sd_bus_slot *slot, bool unref) {
case _SD_BUS_VTABLE_PROPERTY:
case _SD_BUS_VTABLE_WRITABLE_PROPERTY: {
struct vtable_member key;
BusVTableMember key;
key.path = slot->node_vtable.node->path;
key.interface = slot->node_vtable.interface;

View File

@@ -1,8 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-internal.h"
#include "forward.h"
#include "bus-forward.h"
sd_bus_slot *bus_slot_allocate(sd_bus *bus, bool floating, BusSlotType type, size_t extra, void *userdata);

View File

@@ -64,7 +64,7 @@ static int append_iovec(sd_bus_message *m, const void *p, size_t sz) {
}
static int bus_message_setup_iovec(sd_bus_message *m) {
struct bus_body_part *part;
BusMessageBodyPart *part;
unsigned n, i;
int r;
@@ -1285,8 +1285,8 @@ static int bus_socket_read_message_need(sd_bus *bus, size_t *need) {
assert(need);
assert(IN_SET(bus->state, BUS_RUNNING, BUS_HELLO));
if (bus->rbuffer_size < sizeof(struct bus_header)) {
*need = sizeof(struct bus_header) + 8;
if (bus->rbuffer_size < sizeof(BusMessageHeader)) {
*need = sizeof(BusMessageHeader) + 8;
/* Minimum message size:
*
@@ -1320,7 +1320,7 @@ static int bus_socket_read_message_need(sd_bus *bus, size_t *need) {
} else
return -EBADMSG;
sum = (uint64_t) sizeof(struct bus_header) + (uint64_t) ALIGN8(b) + (uint64_t) a;
sum = (uint64_t) sizeof(BusMessageHeader) + (uint64_t) ALIGN8(b) + (uint64_t) a;
if (sum >= BUS_MESSAGE_SIZE_MAX)
return -ENOBUFS;

View File

@@ -9,11 +9,11 @@
#include "log.h"
#include "string-util.h"
struct track_item {
typedef struct BusTrackItem {
unsigned n_ref;
char *name;
sd_bus_slot *slot;
};
} BusTrackItem;
struct sd_bus_track {
unsigned n_ref;
@@ -41,7 +41,7 @@ struct sd_bus_track {
"member='NameOwnerChanged'," \
"arg0='", name, "'")
static struct track_item* track_item_free(struct track_item *i) {
static BusTrackItem* track_item_free(BusTrackItem *i) {
if (!i)
return NULL;
@@ -50,10 +50,10 @@ static struct track_item* track_item_free(struct track_item *i) {
return mfree(i);
}
DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(struct track_item, track_item, track_item_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(struct track_item*, track_item_unref);
DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(BusTrackItem, track_item, track_item_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(BusTrackItem*, track_item_unref);
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(track_item_hash_ops, char, string_hash_func, string_compare_func,
struct track_item, track_item_free);
BusTrackItem, track_item_free);
static void bus_track_add_to_queue(sd_bus_track *track) {
assert(track);
@@ -97,7 +97,7 @@ static void bus_track_remove_from_queue(sd_bus_track *track) {
}
static int bus_track_remove_name_fully(sd_bus_track *track, const char *name) {
struct track_item *i;
BusTrackItem *i;
assert(track);
assert(name);
@@ -181,8 +181,8 @@ static int on_name_owner_changed(sd_bus_message *message, void *userdata, sd_bus
}
_public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) {
_cleanup_(track_item_unrefp) struct track_item *n = NULL;
struct track_item *i;
_cleanup_(track_item_unrefp) BusTrackItem *n = NULL;
BusTrackItem *i;
const char *match;
int r;
@@ -212,11 +212,11 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) {
if (r < 0)
return r;
n = new(struct track_item, 1);
n = new(BusTrackItem, 1);
if (!n)
return -ENOMEM;
*n = (struct track_item) {
*n = (BusTrackItem) {
.n_ref = 1,
};
@@ -260,7 +260,7 @@ _public_ int sd_bus_track_add_name(sd_bus_track *track, const char *name) {
}
_public_ int sd_bus_track_remove_name(sd_bus_track *track, const char *name) {
struct track_item *i;
BusTrackItem *i;
assert_return(name, -EINVAL);
@@ -482,7 +482,7 @@ _public_ int sd_bus_track_count_sender(sd_bus_track *track, sd_bus_message *m) {
}
_public_ int sd_bus_track_count_name(sd_bus_track *track, const char *name) {
struct track_item *i;
BusTrackItem *i;
assert_return(service_name_is_valid(name), -EINVAL);

View File

@@ -23,7 +23,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
r = sd_bus_new(&bus);
assert_se(r >= 0);
_cleanup_(bus_match_free) struct bus_match_node root = {
_cleanup_(bus_match_free) BusMatchNode root = {
.type = BUS_MATCH_ROOT,
};
@@ -50,7 +50,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
offset = end ? (size_t) (end - (char*) data + 1) : size;
struct bus_match_component *components;
BusMatchComponent *components;
size_t n_components;
r = bus_match_parse(line, &components, &n_components);
if (IN_SET(r, -EINVAL, -ENOMEM)) {

View File

@@ -522,7 +522,7 @@ static int synthesize_connected_signal(sd_bus *bus) {
return 0;
}
void bus_set_state(sd_bus *bus, enum bus_state state) {
void bus_set_state(sd_bus *bus, BusState state) {
static const char* const table[_BUS_STATE_MAX] = {
[BUS_UNSET] = "UNSET",
[BUS_WATCH_BIND] = "WATCH_BIND",
@@ -616,7 +616,7 @@ static int bus_send_hello(sd_bus *bus) {
}
int bus_start_running(sd_bus *bus) {
struct reply_callback *c;
BusReplyCallback *c;
usec_t n;
int r;
@@ -2294,7 +2294,7 @@ static usec_t calc_elapse(sd_bus *bus, uint64_t usec) {
}
static int timeout_compare(const void *a, const void *b) {
const struct reply_callback *x = a, *y = b;
const BusReplyCallback *x = a, *y = b;
if (x->timeout_usec != 0 && y->timeout_usec == 0)
return -1;
@@ -2347,7 +2347,7 @@ _public_ int sd_bus_call_async(
return r;
if (slot || callback) {
s = bus_slot_allocate(bus, !slot, BUS_REPLY_CALLBACK, sizeof(struct reply_callback), userdata);
s = bus_slot_allocate(bus, !slot, BUS_REPLY_CALLBACK, sizeof(BusReplyCallback), userdata);
if (!s)
return -ENOMEM;
@@ -2622,7 +2622,7 @@ _public_ int sd_bus_get_events(sd_bus *bus) {
}
_public_ int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) {
struct reply_callback *c;
BusReplyCallback *c;
assert_return(bus, -EINVAL);
assert_return(bus = bus_resolve(bus), -ENOPKG);
@@ -2681,7 +2681,7 @@ _public_ int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) {
static int process_timeout(sd_bus *bus) {
_cleanup_(sd_bus_error_free) sd_bus_error error_buffer = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message* m = NULL;
struct reply_callback *c;
BusReplyCallback *c;
sd_bus_slot *slot;
bool is_hello;
usec_t n;
@@ -2771,7 +2771,7 @@ static int process_hello(sd_bus *bus, sd_bus_message *m) {
static int process_reply(sd_bus *bus, sd_bus_message *m) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *synthetic_reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error_buffer = SD_BUS_ERROR_NULL;
struct reply_callback *c;
BusReplyCallback *c;
sd_bus_slot *slot;
bool is_hello;
int r;
@@ -3140,7 +3140,7 @@ static int bus_exit_now(sd_bus *bus, sd_event *event) {
assert_not_reached();
}
static int process_closing_reply_callback(sd_bus *bus, struct reply_callback *c) {
static int process_closing_reply_callback(sd_bus *bus, BusReplyCallback *c) {
_cleanup_(sd_bus_error_free) sd_bus_error error_buffer = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
sd_bus_slot *slot;
@@ -3196,7 +3196,7 @@ static int process_closing_reply_callback(sd_bus *bus, struct reply_callback *c)
static int process_closing(sd_bus *bus, sd_bus_message **ret) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
struct reply_callback *c;
BusReplyCallback *c;
int r;
assert(bus);
@@ -3480,7 +3480,7 @@ _public_ int sd_bus_add_filter(
assert_return(callback, -EINVAL);
assert_return(!bus_origin_changed(bus), -ECHILD);
s = bus_slot_allocate(bus, !slot, BUS_FILTER_CALLBACK, sizeof(struct filter_callback), userdata);
s = bus_slot_allocate(bus, !slot, BUS_FILTER_CALLBACK, sizeof(BusFilterCallback), userdata);
if (!s)
return -ENOMEM;
@@ -3568,7 +3568,7 @@ int bus_add_match_full(
void *userdata,
uint64_t timeout_usec) {
struct bus_match_component *components = NULL;
BusMatchComponent *components = NULL;
size_t n_components = 0;
_cleanup_(sd_bus_slot_unrefp) sd_bus_slot *s = NULL;
int r;
@@ -3584,7 +3584,7 @@ int bus_add_match_full(
if (r < 0)
return r;
s = bus_slot_allocate(bus, !slot, BUS_MATCH_CALLBACK, sizeof(struct match_callback), userdata);
s = bus_slot_allocate(bus, !slot, BUS_MATCH_CALLBACK, sizeof(BusMatchCallback), userdata);
if (!s)
return -ENOMEM;
@@ -3592,7 +3592,7 @@ int bus_add_match_full(
s->match_callback.install_callback = install_callback;
if (bus->bus_client) {
enum bus_match_scope scope;
BusMatchScope scope;
scope = bus_match_get_scope(components, n_components);

View File

@@ -6,7 +6,7 @@
#include "tests.h"
static void test_manual_introspection_one(const sd_bus_vtable vtable[]) {
struct introspect intro = {};
BusIntrospect intro = {};
_cleanup_free_ char *s = NULL;
log_info("/* %s */", __func__);

View File

@@ -37,8 +37,8 @@ static bool mask_contains(unsigned a[], unsigned n) {
return true;
}
static int match_add(sd_bus_slot *slots, struct bus_match_node *root, const char *match, int value) {
struct bus_match_component *components;
static int match_add(sd_bus_slot *slots, BusMatchNode *root, const char *match, int value) {
BusMatchComponent *components;
size_t n_components;
sd_bus_slot *s;
int r;
@@ -57,8 +57,8 @@ static int match_add(sd_bus_slot *slots, struct bus_match_node *root, const char
return bus_match_add(root, components, n_components, &s->match_callback);
}
static void test_match_scope(const char *match, enum bus_match_scope scope) {
struct bus_match_component *components = NULL;
static void test_match_scope(const char *match, BusMatchScope scope) {
BusMatchComponent *components = NULL;
size_t n_components = 0;
CLEANUP_ARRAY(components, n_components, bus_match_parse_free);
@@ -68,7 +68,7 @@ static void test_match_scope(const char *match, enum bus_match_scope scope) {
}
int main(int argc, char *argv[]) {
struct bus_match_node root = {
BusMatchNode root = {
.type = BUS_MATCH_ROOT,
};
@@ -123,7 +123,7 @@ int main(int argc, char *argv[]) {
assert_se(bus_match_run(NULL, &root, m) == 0);
assert_se(mask_contains((unsigned[]) { 9, 5, 10, 12, 14, 7, 15, 16, 17 }, 9));
for (enum bus_match_node_type i = 0; i < _BUS_MATCH_NODE_TYPE_MAX; i++) {
for (BusMatchNodeType i = 0; i < _BUS_MATCH_NODE_TYPE_MAX; i++) {
char buf[32];
const char *x;

View File

@@ -84,7 +84,7 @@ static const BusObjectImplementation* find_implementation(
}
static int bus_introspect_implementation(
struct introspect *intro,
BusIntrospect *intro,
const BusObjectImplementation *impl) {
int r;
@@ -128,7 +128,7 @@ int bus_introspect_implementations(
return 0;
}
struct introspect intro = {};
BusIntrospect intro = {};
bool is_interface = sd_bus_interface_name_is_valid(pattern);
impl = find_implementation(pattern, bus_objects);