bus: introduce new SD_BUS_VTABLE_HIDDEN flag for vtable members
When this flag is set then its member will not be shown in the introspection data. Also, properties with this flag set will not be included in GetAll() responses.
This commit is contained in:
parent
adacb9575a
commit
6e8df5f00a
|
@ -121,6 +121,9 @@ int introspect_write_interface(struct introspect *i, const sd_bus_vtable *v) {
|
|||
|
||||
for (; v->type != _SD_BUS_VTABLE_END; v++) {
|
||||
|
||||
if (v->type != _SD_BUS_VTABLE_START && (v->flags & SD_BUS_VTABLE_HIDDEN))
|
||||
continue;
|
||||
|
||||
switch (v->type) {
|
||||
|
||||
case _SD_BUS_VTABLE_START:
|
||||
|
|
|
@ -633,10 +633,16 @@ static int vtable_append_all_properties(
|
|||
assert(path);
|
||||
assert(c);
|
||||
|
||||
if (c->vtable[0].flags & SD_BUS_VTABLE_HIDDEN)
|
||||
return 1;
|
||||
|
||||
for (v = c->vtable+1; v->type != _SD_BUS_VTABLE_END; v++) {
|
||||
if (v->type != _SD_BUS_VTABLE_PROPERTY && v->type != _SD_BUS_VTABLE_WRITABLE_PROPERTY)
|
||||
continue;
|
||||
|
||||
if (v->flags & SD_BUS_VTABLE_HIDDEN)
|
||||
continue;
|
||||
|
||||
r = sd_bus_message_open_container(reply, 'e', "sv");
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
@ -853,6 +859,9 @@ static int process_introspect(
|
|||
|
||||
empty = false;
|
||||
|
||||
if (c->vtable[0].flags & SD_BUS_VTABLE_HIDDEN)
|
||||
continue;
|
||||
|
||||
if (!streq_ptr(previous_interface, c->interface)) {
|
||||
|
||||
if (previous_interface)
|
||||
|
|
|
@ -46,6 +46,7 @@ enum {
|
|||
SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE = 1ULL << 2,
|
||||
SD_BUS_VTABLE_PROPERTY_INVALIDATE_ONLY = 1ULL << 3,
|
||||
SD_BUS_VTABLE_UNPRIVILEGED = 1ULL << 4,
|
||||
SD_BUS_VTABLE_HIDDEN = 1ULL << 5,
|
||||
_SD_BUS_VTABLE_CAPABILITY_MASK = 0xFFFFULL << 40
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue