s/set_interface_down/interface_set_down/
[project/netifd.git] / bridge.c
index 2aa0e68..24f8069 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -5,6 +5,8 @@
 #include <errno.h>
 
 #include "netifd.h"
+#include "device.h"
+#include "interface.h"
 #include "system.h"
 
 struct bridge_state {
@@ -33,7 +35,7 @@ bridge_disable_member(struct bridge_member *bm)
                return 0;
 
        system_bridge_delif(&bst->dev, bm->dev.dev);
-       release_device(bm->dev.dev);
+       device_release(bm->dev.dev);
 
        return 0;
 }
@@ -47,7 +49,7 @@ bridge_enable_member(struct bridge_member *bm)
        if (!bm->present)
                return 0;
 
-       ret = claim_device(bm->dev.dev);
+       ret = device_claim(bm->dev.dev);
        if (ret < 0)
                goto error;
 
@@ -79,7 +81,7 @@ bridge_member_cb(struct device_user *dev, enum device_event ev)
                if (bst->dev.active)
                        bridge_enable_member(bm);
                else if (bst->n_present == 1)
-                       set_device_present(&bst->dev, true);
+                       device_set_present(&bst->dev, true);
 
                break;
        case DEV_EVENT_REMOVE:
@@ -92,7 +94,7 @@ bridge_member_cb(struct device_user *dev, enum device_event ev)
                bm->present = false;
                bm->bst->n_present--;
                if (bst->n_present == 0)
-                       set_device_present(&bst->dev, false);
+                       device_set_present(&bst->dev, false);
 
                break;
        default:
@@ -134,7 +136,7 @@ bridge_set_up(struct bridge_state *bst)
        if (!bst->n_present) {
                /* initialization of all member interfaces failed */
                system_bridge_delbr(&bst->dev);
-               set_device_present(&bst->dev, false);
+               device_set_present(&bst->dev, false);
                return -ENOENT;
        }
 
@@ -167,7 +169,7 @@ bridge_create_member(struct bridge_state *bst, struct device *dev)
        bm = calloc(1, sizeof(*bm));
        bm->bst = bst;
        bm->dev.cb = bridge_member_cb;
-       add_device_user(&bm->dev, dev);
+       device_add_user(&bm->dev, dev);
 
        list_add(&bm->list, &bst->members);
 
@@ -188,7 +190,7 @@ bridge_free_member(struct bridge_member *bm)
        }
 
        list_del(&bm->list);
-       remove_device_user(&bm->dev);
+       device_remove_user(&bm->dev);
        free(bm);
 }
 
@@ -197,7 +199,7 @@ bridge_add_member(struct bridge_state *bst, const char *name)
 {
        struct device *dev;
 
-       dev = get_device(name, true);
+       dev = device_get(name, true);
        if (!dev)
                return;
 
@@ -292,17 +294,34 @@ 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;
 
-       dev = get_device(name, false);
+       dev = device_get(name, false);
        if (dev)
                return NULL;
 
@@ -310,7 +329,7 @@ bridge_create(const char *name, struct uci_section *s)
        if (!bst)
                return NULL;
 
-       init_device(&bst->dev, &bridge_type, name);
+       device_init(&bst->dev, &bridge_type, name);
 
        bst->set_state = bst->dev.set_state;
        bst->dev.set_state = bridge_set_state;
@@ -338,6 +357,6 @@ interface_attach_bridge(struct interface *iface, struct uci_section *s)
        if (!dev)
                return -1;
 
-       add_device_user(&iface->main_dev, dev);
+       device_add_user(&iface->main_dev, dev);
        return 0;
 }