-struct list_head *
-fw3_ubus_address(const char *net)
-{
- return invoke_common(net, false);
+ if (!net || !interfaces)
+ return;
+
+ blobmsg_for_each_attr(cur, interfaces, rem) {
+ blobmsg_parse(policy, __ADDR_MAX, tb, blobmsg_data(cur), blobmsg_len(cur));
+
+ if (!tb[ADDR_INTERFACE] ||
+ strcmp(blobmsg_data(tb[ADDR_INTERFACE]), net) != 0)
+ continue;
+
+ parse_subnets(list, FW3_FAMILY_V4, tb[ADDR_IPV4]);
+ parse_subnets(list, FW3_FAMILY_V6, tb[ADDR_IPV6]);
+ parse_subnets(list, FW3_FAMILY_V6, tb[ADDR_IPV6_PREFIX]);
+ }