X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=device.c;h=092a8edc652253ba55d4679c0b8ab2a2f1af0efd;hp=6929177cd59caee5c4feb233aaf9370c773e64e2;hb=2ac630138173e111e16b9c544d9da53f3af97f2e;hpb=43d8e8e91a67ba6ecb87621c51614d6325fde7ae diff --git a/device.c b/device.c index 6929177..092a8ed 100644 --- a/device.c +++ b/device.c @@ -469,3 +469,36 @@ device_create(const char *name, const struct device_type *type, return dev; } + +void +device_dump_status(struct blob_buf *b, struct device *dev) +{ + void *c, *s; + + if (!dev) { + avl_for_each_element(&devices, dev, avl) { + if (!dev->present) + continue; + c = blobmsg_open_table(b, dev->ifname); + device_dump_status(b, dev); + blobmsg_close_table(b, c); + } + + return; + } + + if (!dev->present) + return; + + blobmsg_add_string(b, "type", dev->type->name); + blobmsg_add_u8(b, "up", !!dev->active); + if (dev->type->dump_info) + dev->type->dump_info(dev, b); + + s = blobmsg_open_table(b, "statistics"); + if (dev->type->dump_stats) + dev->type->dump_stats(dev, b); + else + system_if_dump_stats(dev, b); + blobmsg_close_table(b, s); +}