From 3a389d3dfa98b9d05c1e2038293e5a16e58f9f2e Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 15 May 2009 06:10:13 +0000 Subject: [PATCH] --- yaml --- r: 145132 b: refs/heads/master c: a598f6aebea2481531b0757ed90cfb0d8cf1d8f5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/bridge/br_input.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index aab3ca92d676..b933d287be65 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a8f492c6ac6072d6c5bce4b2f13dc44612991051 +refs/heads/master: a598f6aebea2481531b0757ed90cfb0d8cf1d8f5 diff --git a/trunk/net/bridge/br_input.c b/trunk/net/bridge/br_input.c index 30b88777c3df..5ee1a3682bf2 100644 --- a/trunk/net/bridge/br_input.c +++ b/trunk/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);