aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2008-06-17 19:09:45 -0400
committerDavid S. Miller <davem@davemloft.net>2008-06-17 19:09:45 -0400
commit43aa1920117801fe9ae3d1fad886b62511e09bee (patch)
treea126deb5472a0f0f9f1c0346bdf415e002a03fe2 /net/bridge
parent3d00fb9eb11ac49d4035f756d116deeeaf99a26b (diff)
bridge: handle process all link-local frames
Any frame addressed to link-local addresses should be processed by local receive path. The earlier code would process them only if STP was enabled. Since there are other frames like LACP for bonding, we should always process them. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r--net/bridge/br_input.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 0145e9416714..30b88777c3df 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -134,14 +134,11 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
134 if (skb->protocol == htons(ETH_P_PAUSE)) 134 if (skb->protocol == htons(ETH_P_PAUSE))
135 goto drop; 135 goto drop;
136 136
137 /* Process STP BPDU's through normal netif_receive_skb() path */ 137 if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
138 if (p->br->stp_enabled != BR_NO_STP) { 138 NULL, br_handle_local_finish))
139 if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, 139 return NULL; /* frame consumed by filter */
140 NULL, br_handle_local_finish)) 140 else
141 return NULL; 141 return skb; /* continue processing */
142 else
143 return skb;
144 }
145 } 142 }
146 143
147 switch (p->state) { 144 switch (p->state) {