bridge: add support for user mode STP
This patchset based on work by Aji_Srinivas@emc.com provides allows spanning tree to be controled from userspace. Like hotplug, it uses call_usermodehelper when spanning tree is enabled so there is no visible API change. If call to start usermode STP fails it falls back to existing kernel STP. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
This commit is contained in:
committed by
David S. Miller
parent
9cf637473c
commit
9cde070874
@ -370,11 +370,11 @@ static void br_make_blocking(struct net_bridge_port *p)
|
||||
static void br_make_forwarding(struct net_bridge_port *p)
|
||||
{
|
||||
if (p->state == BR_STATE_BLOCKING) {
|
||||
if (p->br->stp_enabled) {
|
||||
if (p->br->stp_enabled == BR_KERNEL_STP)
|
||||
p->state = BR_STATE_LISTENING;
|
||||
} else {
|
||||
else
|
||||
p->state = BR_STATE_LEARNING;
|
||||
}
|
||||
|
||||
br_log_state(p);
|
||||
mod_timer(&p->forward_delay_timer, jiffies + p->br->forward_delay); }
|
||||
}
|
||||
@ -384,6 +384,10 @@ void br_port_state_selection(struct net_bridge *br)
|
||||
{
|
||||
struct net_bridge_port *p;
|
||||
|
||||
/* Don't change port states if userspace is handling STP */
|
||||
if (br->stp_enabled == BR_USER_STP)
|
||||
return;
|
||||
|
||||
list_for_each_entry(p, &br->port_list, list) {
|
||||
if (p->state != BR_STATE_DISABLED) {
|
||||
if (p->port_no == br->root_port) {
|
||||
|
Reference in New Issue
Block a user