+ if (!tb[IFACE_ATTR_INTERFACE] || strcmp(name,
+ blobmsg_get_string(tb[IFACE_ATTR_INTERFACE])))
+ continue;
+
+ if ((cur = tb[IFACE_ATTR_ADDRESS4])) {
+ if (blobmsg_type(cur) != BLOBMSG_TYPE_ARRAY || !blobmsg_check_attr(cur, NULL))
+ continue;
+
+ struct blob_attr *d;
+ unsigned drem;
+ blobmsg_for_each_attr(d, cur, drem) {
+ struct blob_attr *addr[ADDR_ATTR_MAX];
+ blobmsg_parse(addr_attrs, ADDR_ATTR_MAX, addr, blobmsg_data(d), blobmsg_data_len(d));
+ struct in_addr addr4;
+ if (inet_pton(AF_INET, blobmsg_get_string(addr[ADDR_ATTR_MASK]), &addr4) == 1)
+ return addr4;