From: Felix Fietkau Date: Sun, 9 Mar 2025 15:37:16 +0000 (+0100) Subject: ubus: dump service information on network_get X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=7326459bd7438a47751873bbd4c2d45b6f31f8b6;p=project%2Funetd.git ubus: dump service information on network_get Signed-off-by: Felix Fietkau --- 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