From 87d4c8eca7621c424e50e1fa70684d4c0e307984 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 19 May 2012 01:52:49 +0200 Subject: [PATCH] ubus: split ipv4 and ipv6 address in interface status --- ubus.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ubus.c b/ubus.c index e4b2ee2..a00226f 100644 --- a/ubus.c +++ b/ubus.c @@ -290,7 +290,7 @@ netifd_add_interface_errors(struct blob_buf *b, struct interface *iface) } static void -interface_ip_dump_address_list(struct interface_ip_settings *ip) +interface_ip_dump_address_list(struct interface_ip_settings *ip, bool v6) { struct device_addr *addr; char *buf; @@ -304,6 +304,9 @@ interface_ip_dump_address_list(struct interface_ip_settings *ip) else af = AF_INET6; + if (af != (v6 ? AF_INET6 : AF_INET)) + continue; + a = blobmsg_open_table(&b, NULL); buf = blobmsg_alloc_string_buffer(&b, "address", buflen); @@ -376,9 +379,13 @@ netifd_handle_status(struct ubus_context *ctx, struct ubus_object *obj, blobmsg_add_string(&b, "device", dev->ifname); if (iface->state == IFS_UP) { - a = blobmsg_open_array(&b, "address"); - interface_ip_dump_address_list(&iface->config_ip); - interface_ip_dump_address_list(&iface->proto_ip); + a = blobmsg_open_array(&b, "ipv4-address"); + interface_ip_dump_address_list(&iface->config_ip, false); + interface_ip_dump_address_list(&iface->proto_ip, false); + blobmsg_close_array(&b, a); + a = blobmsg_open_array(&b, "ipv6-address"); + interface_ip_dump_address_list(&iface->config_ip, true); + interface_ip_dump_address_list(&iface->proto_ip, true); blobmsg_close_array(&b, a); a = blobmsg_open_array(&b, "route"); interface_ip_dump_route_list(&iface->config_ip); -- 2.11.0