]> git.ipfire.org Git - people/ms/rstp.git/commitdiff
Merge remote-tracking branch 'upstream/master' master
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 6 Jul 2011 19:08:28 +0000 (21:08 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 6 Jul 2011 19:08:28 +0000 (21:08 +0200)
Conflicts:
bridge_track.c

1  2 
bridge_track.c

diff --cc bridge_track.c
index f5efa3ff69c81b12c3b2f9edbfc5bdb14fe91648,289fc412497387fa2a43a8ae31af82cce2672938..10e13f75ea4a46d9bcfdd6e489db43174b6e928b
@@@ -249,38 -405,28 +249,41 @@@ static int stp_enabled(struct ifdata *b
        return enabled == 2;    /* ie user mode STP */
  }
  
- void set_br_up(struct ifdata *br, int up)
static void set_br_up(struct ifdata *br, int up)
  {
        int stp_up = stp_enabled(br);
-       INFO("%s was %s stp was %s", br->name, br->up ? "up" : "down", br->stp_up ? "up" : "down");
+       INFO("%s was %s stp was %s", br->name,
+            up ? "up" : "down", 
+            br->stp_up ? "up" : "down");
        INFO("Set bridge %s %s stp %s" , br->name,
-            up ? "up" : "down", stp_up ? "up" : "down");
+            up ? "up" : "down", 
+            stp_up ? "up" : "down");
  
 -      if (up != br->up)
 +      int changed = 0;
 +
 +      if (up != br->up) {
                br->up = up;
 +              changed = 1;
 +      }
        
        if (br->stp_up != stp_up) {
 -              if (stp_up)
 -                      init_bridge_stp(br);
 -              else 
 -                      clear_bridge_stp(br);
 +              br->stp_up = stp_up;
 +              changed = 1;
 +      }
 +
 +      if (check_mac_address(br->name, br->macaddr)) {
 +              /* MAC address changed */
 +              /* Notify bridge address change */
 +              STP_IN_set_bridge_address(
 +                      br->stp_bridge, (STP_MacAddress *)br->macaddr);
        }
 +
 +      if (changed)
 +              STP_IN_set_bridge_enable(br->stp_bridge,
 +                                       (br->up && br->stp_up)?1:0);
  }
  
- void set_if_up(struct ifdata *ifc, int up)
static void set_if_up(struct ifdata *ifc, int up)
  {
        INFO("Port %s : %s", ifc->name, (up ? "up" : "down"));
        int speed = -1;