X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=bridge.c;h=2a9cc282af864a5dab12d89320e3317741995022;hp=2aa0e68512280e6044419485995d49a52c7df552;hb=dc4d06fd667a399bfa77da1cb2eb4487ebeba498;hpb=5d1fff7af6f77c9bf0d46572c7af563cd9fc55b3 diff --git a/bridge.c b/bridge.c index 2aa0e68..2a9cc28 100644 --- a/bridge.c +++ b/bridge.c @@ -5,6 +5,8 @@ #include #include "netifd.h" +#include "device.h" +#include "interface.h" #include "system.h" struct bridge_state { @@ -292,12 +294,29 @@ bridge_free(struct device *dev) free(bst); } +static void +bridge_dump_status(struct device *dev, struct blob_buf *b) +{ + struct bridge_state *bst; + struct bridge_member *bm; + void *list; + + bst = container_of(dev, struct bridge_state, dev); + + list = blobmsg_open_array(b, "bridge-members"); + list_for_each_entry(bm, &bst->members, list) { + blobmsg_add_string(b, NULL, bm->dev.dev->ifname); + } + blobmsg_close_array(b, list); +} + struct device * bridge_create(const char *name, struct uci_section *s) { static const struct device_type bridge_type = { .name = "Bridge", .free = bridge_free, + .dump_status = bridge_dump_status, }; struct bridge_state *bst; struct device *dev;