mirror of
https://github.com/systemd/systemd.git
synced 2026-07-25 16:55:44 +00:00
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:
@@ -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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user