ubus: dump service information on network_get
authorFelix Fietkau <nbd@nbd.name>
Sun, 9 Mar 2025 15:37:16 +0000 (16:37 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sun, 9 Mar 2025 15:37:16 +0000 (16:37 +0100)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
ubus.c

diff --git a/ubus.c b/ubus.c
index 9c0773bcbaa88d91b97f6bf01cf631c75925c6d9..47fa743d3ac829babd72cc9397b4d8dc99983f62 100644 (file)
--- 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