]> err.no Git - linux-2.6/commitdiff
bridge: handle process all link-local frames
authorStephen Hemminger <shemminger@vyatta.com>
Tue, 17 Jun 2008 23:09:45 +0000 (16:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 17 Jun 2008 23:09:45 +0000 (16:09 -0700)
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>
net/bridge/br_input.c

index 0145e9416714ebec1396e0a3aa231b75d6b40c35..30b88777c3df1ad3ab934832e8738c6110760d4c 100644 (file)
@@ -134,14 +134,11 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
                if (skb->protocol == htons(ETH_P_PAUSE))
                        goto drop;
 
-               /* Process STP BPDU's through normal netif_receive_skb() path */
-               if (p->br->stp_enabled != BR_NO_STP) {
-                       if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
-                                   NULL, br_handle_local_finish))
-                               return NULL;
-                       else
-                               return skb;
-               }
+               if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
+                           NULL, br_handle_local_finish))
+                       return NULL;    /* frame consumed by filter */
+               else
+                       return skb;     /* continue processing */
        }
 
        switch (p->state) {