move dns server/search list parsing to interface core to support peerdns=0 + static...
[project/netifd.git] / bridge.c
index d3b2867..b1b79e8 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -1,3 +1,16 @@
+/*
+ * netifd - network interface daemon
+ * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -132,11 +145,12 @@ bridge_remove_member(struct bridge_member *bm)
        if (!bm->present)
                return;
 
-       bm->present = false;
-       bm->bst->n_present--;
        if (bst->dev.active)
                bridge_disable_member(bm);
 
+       bm->present = false;
+       bm->bst->n_present--;
+
        bst->force_active = false;
        if (bst->n_present == 0)
                device_set_present(&bst->dev, false);
@@ -342,7 +356,6 @@ bridge_free(struct device *dev)
 {
        struct bridge_state *bst;
 
-       device_cleanup(dev);
        bst = container_of(dev, struct bridge_state, dev);
        vlist_flush_all(&bst->members);
        free(bst);
@@ -392,8 +405,8 @@ bridge_apply_settings(struct bridge_state *bst, struct blob_attr **tb)
        struct blob_attr *cur;
 
        /* defaults */
-       cfg->stp = true;
-       cfg->forward_delay = 1;
+       cfg->stp = false;
+       cfg->forward_delay = 2;
        cfg->igmp_snoop = true;
 
        if ((cur = tb[BRIDGE_ATTR_STP]))