diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-05-19 01:52:49 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-05-19 01:52:49 +0200 |
commit | 87d4c8eca7621c424e50e1fa70684d4c0e307984 (patch) | |
tree | 7e866a5acd55fc0fb0d805c851388f659ad6df9b | |
parent | c346857597f5e8d9a95f51a7080b9df987ac5983 (diff) |
ubus: split ipv4 and ipv6 address in interface status
-rw-r--r-- | ubus.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -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); |