summaryrefslogtreecommitdiffhomepage
path: root/ubus.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-04-12 16:18:04 +0200
committerFelix Fietkau <nbd@openwrt.org>2012-04-12 16:18:04 +0200
commit1aa37f77cd92a6aee0c512ca6e3f56f388ed2922 (patch)
treec6740d0fe3cf36877511bc71abdd6fbccb381948 /ubus.c
parent3297b82e0b7244430ad5a1ca25d1e7b4c046c00a (diff)
ubus: split address from mask in interface status
Diffstat (limited to 'ubus.c')
-rw-r--r--ubus.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/ubus.c b/ubus.c
index b01d6ad..4746c4f 100644
--- a/ubus.c
+++ b/ubus.c
@@ -235,7 +235,8 @@ static void
interface_ip_dump_address_list(struct interface_ip_settings *ip)
{
struct device_addr *addr;
- static char *buf;
+ char *buf;
+ void *a;
int buflen = 128;
int af;
@@ -245,11 +246,15 @@ interface_ip_dump_address_list(struct interface_ip_settings *ip)
else
af = AF_INET6;
- buf = blobmsg_alloc_string_buffer(&b, NULL, buflen);
- inet_ntop(af, &addr->addr, buf, buflen - 5);
- buf += strlen(buf);
- sprintf(buf, "/%d", addr->mask);
+ a = blobmsg_open_table(&b, NULL);
+
+ buf = blobmsg_alloc_string_buffer(&b, "address", buflen);
+ inet_ntop(af, &addr->addr, buf, buflen);
blobmsg_add_string_buffer(&b);
+
+ blobmsg_add_u32(&b, "mask", addr->mask);
+
+ blobmsg_close_table(&b, a);
}
}
@@ -269,12 +274,13 @@ interface_ip_dump_route_list(struct interface_ip_settings *ip)
af = AF_INET6;
r = blobmsg_open_table(&b, NULL);
+
buf = blobmsg_alloc_string_buffer(&b, "target", buflen);
- inet_ntop(af, &route->addr, buf, buflen - 5);
- buf += strlen(buf);
- sprintf(buf, "/%d", route->mask);
+ inet_ntop(af, &route->addr, buf, buflen);
blobmsg_add_string_buffer(&b);
+ blobmsg_add_u32(&b, "mask", route->mask);
+
buf = blobmsg_alloc_string_buffer(&b, "nexthop", buflen);
inet_ntop(af, &route->nexthop, buf, buflen);
blobmsg_add_string_buffer(&b);