interface: extend interface error messages in interface_set_up()
[project/netifd.git] / bridge.c
index ba1ce5d25e59e3b29ffe2c7c437254feccf5552e..887687162c09cd4f1e492353746d4f768b33744a 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -240,15 +240,15 @@ bridge_remove_member(struct bridge_member *bm)
        if (!bm->present)
                return;
 
-       if (bm == bst->primary_port)
-               bridge_reset_primary(bst);
-
        if (bst->dev.active)
                bridge_disable_member(bm);
 
        bm->present = false;
        bm->bst->n_present--;
 
+       if (bm == bst->primary_port)
+               bridge_reset_primary(bst);
+
        if (bst->config.bridge_empty)
                return;
 
@@ -568,8 +568,6 @@ bridge_apply_settings(struct bridge_state *bst, struct blob_attr **tb)
        /* defaults */
        cfg->stp = false;
        cfg->forward_delay = 2;
-       cfg->igmp_snoop = true;
-       cfg->multicast_querier = true;
        cfg->robustness = 2;
        cfg->query_interval = 12500;
        cfg->query_response_interval = 1000;
@@ -722,7 +720,13 @@ bridge_create(const char *name, struct device_type *devtype,
                return NULL;
 
        dev = &bst->dev;
-       device_init(dev, devtype, name);
+
+       if (device_init(dev, devtype, name) < 0) {
+               device_cleanup(dev);
+               free(bst);
+               return NULL;
+       }
+
        dev->config_pending = true;
        bst->retry.cb = bridge_retry_members;