diff options
-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); |