aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAndrew Thompson <thompsa@FreeBSD.org>2006-11-02 08:44:19 +0000
committerAndrew Thompson <thompsa@FreeBSD.org>2006-11-02 08:44:19 +0000
commit2efdffee15747937be970f5b7d6da101a2e8415f (patch)
tree2b7c1065ff3d2a3a4f801acbc968dbad66ceb604 /sys
parentcd281f6d4025402c71f954f6486ccbc034c5a87a (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/net/bridgestp.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/net/bridgestp.c b/sys/net/bridgestp.c
index fad42abd4e90..2f63bb3ed34d 100644
--- a/sys/net/bridgestp.c
+++ b/sys/net/bridgestp.c
@@ -988,10 +988,11 @@ bstp_update_roles(struct bstp_state *bs, struct bstp_port *bp)
DPRINTF("%s -> ROOT_PROPOSED\n", bp->bp_ifp->if_xname);
}
- if (bp->bp_forward_delay_timer.active == 0 ||
+ if (bp->bp_state != BSTP_IFSTATE_FORWARDING &&
+ (bp->bp_forward_delay_timer.active == 0 ||
(bstp_rerooted(bs, bp) &&
bp->bp_recent_backup_timer.active == 0 &&
- bp->bp_protover == BSTP_PROTO_RSTP)) {
+ bp->bp_protover == BSTP_PROTO_RSTP))) {
switch (bp->bp_state) {
case BSTP_IFSTATE_DISCARDING:
bstp_set_port_state(bp, BSTP_IFSTATE_LEARNING);
@@ -1039,10 +1040,13 @@ bstp_update_roles(struct bstp_state *bs, struct bstp_port *bp)
bp->bp_ifp->if_xname);
}
- if ((bp->bp_forward_delay_timer.active == 0 || bp->bp_agreed ||
+ if (bp->bp_state != BSTP_IFSTATE_FORWARDING &&
+ (bp->bp_forward_delay_timer.active == 0 || bp->bp_agreed ||
bp->bp_operedge) &&
(bp->bp_recent_root_timer.active == 0 || !bp->bp_reroot) &&
!bp->bp_sync) {
+ if (bp->bp_agreed)
+ DPRINTF("%s -> AGREED\n", bp->bp_ifp->if_xname);
/*
* If agreed|operedge then go straight to forwarding,
* otherwise follow discard -> learn -> forward.