netdev
[Top] [All Lists]

RE: [Bridge] RE: [VLAN] Re: [PATCH/RFC] Let {ip, arp}tables "see" bridg

To: "'Tommy Christensen'" <tommy.christensen@xxxxxxxxx>
Subject: RE: [Bridge] RE: [VLAN] Re: [PATCH/RFC] Let {ip, arp}tables "see" bridged VLAN tagged{I,AR}P packets
From: Christian Darnell <Christian.Darnell@xxxxxxxxxxxxxxxxxx>
Date: Wed, 8 Oct 2003 10:18:26 +0200
Cc: "'Linux 802.1Q VLAN'" <vlan@xxxxxxxxxxx>, Bart De Schuymer <bdschuym@xxxxxxxxxx>, netdev@xxxxxxxxxxx, bridge <bridge@xxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
-----Original Message-----
>From: Tommy Christensen [mailto:tommy.christensen@xxxxxxxxx]
>Sent: Wednesday, October 08, 2003 10:09 AM
>To: Christian Darnell
>Cc: 'Linux 802.1Q VLAN'; Bart De Schuymer; netdev@xxxxxxxxxxx; bridge
>Subject: Re: [Bridge] RE: [VLAN] Re: [PATCH/RFC] Let {ip, arp}tables
>"see" bridged VLAN tagged{I,AR}P packets
>
>
>
>This is because the VLAN code is mangling shared data.
>You need to do something like this:
>
>
>--- linux-2.4/net/8021q/vlan_dev.c.org 2003-02-25 15:23:09.000000000
>+0100
>+++ linux-2.4/net/8021q/vlan_dev.c     2003-10-07 16:01:29.000000000 +0200
>@@ -75,7 +75,12 @@
> static inline struct sk_buff *vlan_check_reorder_header(struct sk_buff
>*skb)
> {
>       if (VLAN_DEV_INFO(skb->dev)->flags & 1) {
>-              skb = skb_share_check(skb, GFP_ATOMIC);
>+              if (skb_shared(skb) || skb_cloned(skb)) {
>+                      struct sk_buff *nskb;
>+                      nskb = skb_copy(skb, GFP_ATOMIC);
>+                      kfree_skb(skb);
>+                      skb = nskb;
>+              }
>               if (skb) {
>                       /* Lifted from Gleb's VLAN code... */
>                       memmove(skb->data - ETH_HLEN,
>
>
>Christian, could you try this out?


Thanks Tommy! I tried this (on kernel 2.4.22) and it works great!


Best Regards, 

Christian Darnell

<Prev in Thread] Current Thread [Next in Thread>