Message ID | 20100119160335.DC546F88D8@sepang.rtg.net |
---|---|
State | Accepted |
Delegated to: | Stefan Bader |
Headers | show |
Finally had time to give it a better reading. Ok, so the whole part is inside of a case for the local link destination. Which matches description and looks sensible. Tim Gardner wrote: > From 1259b51d3f18440083e2fdf14fd7e0b3d5d8e900 Mon Sep 17 00:00:00 2001 > From: Stephen Hemminger <shemminger@vyatta.com> > Date: Tue, 17 Jun 2008 16:09:45 -0700 > Subject: [PATCH] bridge: handle process all link-local frames > > BugLink: http://bugs.launchpad.net/bugs/508008 > > 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> > (cherry picked from commit 43aa1920117801fe9ae3d1fad886b62511e09bee) > > Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > net/bridge/br_input.c | 13 +++++-------- > 1 files changed, 5 insertions(+), 8 deletions(-) > > diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c > index 0ee79a7..af7ac98 100644 > --- a/net/bridge/br_input.c > +++ b/net/bridge/br_input.c > @@ -136,14 +136,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) {
On 10 Jan 19, Tim Gardner wrote: > From 1259b51d3f18440083e2fdf14fd7e0b3d5d8e900 Mon Sep 17 00:00:00 2001 > From: Stephen Hemminger <shemminger@vyatta.com> > Date: Tue, 17 Jun 2008 16:09:45 -0700 > Subject: [PATCH] bridge: handle process all link-local frames > > BugLink: http://bugs.launchpad.net/bugs/508008 > > 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> > (cherry picked from commit 43aa1920117801fe9ae3d1fad886b62511e09bee) > > Signed-off-by: Tim Gardner <tim.gardner@canonical.com> > --- > net/bridge/br_input.c | 13 +++++-------- > 1 files changed, 5 insertions(+), 8 deletions(-) > > diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c > index 0ee79a7..af7ac98 100644 > --- a/net/bridge/br_input.c > +++ b/net/bridge/br_input.c > @@ -136,14 +136,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) { > -- > 1.6.2.4 Removes the STP condition for netfilter hook processing. Code corresponds to description and is already confirmed to fix the problem by the bug reporter. Acked-off-by: Amit Kucheria <amit.kucheria@canonical.com>
Applied and pushed
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 0ee79a7..af7ac98 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -136,14 +136,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) {