summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2025-03-09 15:37:16 +0000
committerFelix Fietkau2025-03-09 15:37:16 +0000
commit7326459bd7438a47751873bbd4c2d45b6f31f8b6 (patch)
tree0785620653ad00f7ab5e109d3b5a3db1bf96317f
parentd8b43985e4d794efaf26823252e39373f7c975a0 (diff)
downloadunetd-7326459bd7438a47751873bbd4c2d45b6f31f8b6.tar.gz
ubus: dump service information on network_get
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--ubus.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/ubus.c b/ubus.c
index 9c0773b..47fa743 100644
--- a/ubus.c
+++ b/ubus.c
@@ -56,8 +56,9 @@ static void
__network_dump(struct blob_buf *buf, struct network *net)
{
struct network_host *local = net->net_config.local_host;
+ struct network_service *s;
struct network_peer *peer;
- void *c, *p;
+ void *c, *p, *m;
char *str;
c = blobmsg_open_table(buf, "config");
@@ -105,6 +106,25 @@ __network_dump(struct blob_buf *buf, struct network *net)
blobmsg_close_table(buf, p);
}
blobmsg_close_table(buf, c);
+
+
+ c = blobmsg_open_table(buf, "services");
+ vlist_for_each_element(&net->services, s, node) {
+ p = blobmsg_open_table(buf, network_service_name(s));
+
+ if (s->type)
+ blobmsg_add_string(buf, "type", s->type);
+
+ m = blobmsg_open_array(buf, "members");
+ for (size_t i = 0; i < s->n_members; i++)
+ blobmsg_add_string(buf, NULL, network_host_name(s->members[i]));
+ blobmsg_close_array(buf, m);
+
+ if (s->config)
+ blobmsg_add_blob(buf, s->config);
+ blobmsg_close_table(buf, p);
+ }
+ blobmsg_close_table(buf, c);
}
static int