diff options
Diffstat (limited to 'net/bridge/br_input.c')
| -rw-r--r-- | net/bridge/br_input.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 30b88777c3d..5ee1a3682bf 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -134,6 +134,10 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)  		if (skb->protocol == htons(ETH_P_PAUSE))  			goto drop; +		/* If STP is turned off, then forward */ +		if (p->br->stp_enabled == BR_NO_STP && dest[5] == 0) +			goto forward; +  		if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,  			    NULL, br_handle_local_finish))  			return NULL;	/* frame consumed by filter */ @@ -141,6 +145,7 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)  			return skb;	/* continue processing */  	} +forward:  	switch (p->state) {  	case BR_STATE_FORWARDING:  		rhook = rcu_dereference(br_should_route_hook);  |