- rem = blob_len(msg);
- __blob_for_each_attr(cur, blob_data(msg), rem)
- {
- data = blobmsg_data(cur);
-
- if (dev && !strcmp(blobmsg_name(cur), "device") && !dev->name[0])
- snprintf(dev->name, sizeof(dev->name), "%s", data);
- else if (dev && !strcmp(blobmsg_name(cur), "l3_device"))
- snprintf(dev->name, sizeof(dev->name), "%s", data);
- else if (!dev && !strcmp(blobmsg_name(cur), "ipv4-address"))
- parse_subnets(da->addr, FW3_FAMILY_V4,
- blobmsg_data(cur), blobmsg_data_len(cur));
- else if (!dev && !strcmp(blobmsg_name(cur), "ipv6-address"))
- parse_subnets(da->addr, FW3_FAMILY_V6,
- blobmsg_data(cur), blobmsg_data_len(cur));
- }
-
- if (dev)
- dev->set = !!dev->name[0];
-}
-
-static void *
-invoke_common(const char *net, bool dev)
-{
- uint32_t id;
- char path[128];
- static struct dev_addr da;
-
- if (!net)