diff options
| author | Andrew Thompson <thompsa@FreeBSD.org> | 2006-11-02 08:44:19 +0000 |
|---|---|---|
| committer | Andrew Thompson <thompsa@FreeBSD.org> | 2006-11-02 08:44:19 +0000 |
| commit | 2efdffee15747937be970f5b7d6da101a2e8415f (patch) | |
| tree | 2b7c1065ff3d2a3a4f801acbc968dbad66ceb604 /sys | |
| parent | cd281f6d4025402c71f954f6486ccbc034c5a87a (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/net/bridgestp.c | 10 |
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. |
