Skip to contentSkip to conversation

allow VLAN interface on top of bridge interface

PATCH In review Andrew Morton 3 participants 4 messages Apr 12, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 allow VLAN interface on top of bridge interface

Begin forwarded message:

Date: Thu, 12 Apr 2007 21:50:00 +0200 (CEST)
From: Jerome Borsboom <[email protected]>
To: [email protected]
Subject: [PATCH] allow VLAN interface on top of bridge interface

When a VLAN interface is created on top of a bridge interface and netfilter is enabled to see the bridged packets, the packets can be corrupted when passing through the netfilter code. This is caused by the VLAN driver not setting the 'protocol' and 'nh' members of the sk_buff structure. In general, this is no problem as the VLAN interface is mostly connected to a physical ethernet interface which does not use the 'protocol' and 'nh' members. For a bridge interface, however, these members do matter.

net/8021q/vlan_dev.c 2007-04-12 21:12:17.000000000 +0200 renamed from net/8021q/vlan_dev.c 2007-02-04 19:44:54.000000000 +0100 +3 -0
@@ -380,6 +380,9 @@
  		} else {
  			vhdr->h_vlan_encapsulated_proto = htons(len);
  		}
+
+		skb->protocol = htons(ETH_P_8021Q);
+		skb->nh.raw = skb->data;
  	}
 
  	/* Before delegating work to the lower layer, enter our MAC-address */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#1 lore raw
Quoted 10 lines · Andrew Morton

Begin forwarded message:

Date: Thu, 12 Apr 2007 21:50:00 +0200 (CEST)
From: Jerome Borsboom <[email protected]>
To: [email protected]
Subject: [PATCH] allow VLAN interface on top of bridge interface

When a VLAN interface is created on top of a bridge interface and netfilter is enabled to see the bridged packets, the packets can be corrupted when passing through the netfilter code. This is caused by the VLAN driver not setting the 'protocol' and 'nh' members of the sk_buff structure. In general, this is no problem as the VLAN interface is mostly connected to a physical ethernet interface which does not use the 'protocol' and 'nh' members. For a bridge interface, however, these members do matter.

Why only do this inside that if clause? I can see only setting nh.raw in that clause, but it seems like the protocol should be set regardless.

Thanks,
Ben

Quoted 25 lines
net/8021q/vlan_dev.c 2007-04-12 21:12:17.000000000 +0200 renamed from net/8021q/vlan_dev.c 2007-02-04 19:44:54.000000000 +0100 +3 -1
@@ -380,6 +380,9 @@
  		} else {
  			vhdr->h_vlan_encapsulated_proto = htons(len);
  		}
+
+		skb->protocol = htons(ETH_P_8021Q);
+		skb->nh.raw = skb->data;
  	}
 
  	/* Before delegating work to the lower layer, enter our MAC-address */
-

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
maintainer
#2 lore raw

From: Ben Greear <[email protected]>
Date: Thu, 12 Apr 2007 14:45:07 -0700

Quoted 19 lines
Quoted 9 lines · Andrew Morton

Begin forwarded message:

Date: Thu, 12 Apr 2007 21:50:00 +0200 (CEST)
From: Jerome Borsboom <[email protected]>
To: [email protected]
Subject: [PATCH] allow VLAN interface on top of bridge interface

Quoted 8 lines

When a VLAN interface is created on top of a bridge interface and netfilter is enabled to see the bridged packets, the packets can be corrupted when passing through the netfilter code. This is caused by the VLAN driver not setting the 'protocol' and 'nh' members of the sk_buff structure. In general, this is no problem as the VLAN interface is mostly connected to a physical ethernet interface which does not use the 'protocol' and 'nh' members. For a bridge interface, however, these members do matter.

Quoted 3 lines

Why only do this inside that if clause? I can see only setting nh.raw in that clause, but it seems like the protocol should be set regardless.

Because outside the if clause we are making the packet look like a normal ethernet frame to the rest of the stack, and only adding the VLAN tag at the very last moment in ->hard_start_xmit().

maintainer
#3 lore raw
In reply to Andrew Morton

This is the second time this patch has been forwarded to netdev in the past hour.

And I'll say the same thing I said to the first person who did it this way. Because you just blindly forwarded this here, and did not tell the orignal poster why, and furthermore took linux-kernel off the CC list, we now have two problems:

1) The poster hasn't learned where the correct location is to send the report and why that is the correct place. They just see their report getting forwarded around.

2) Since linux-kernel got dropped, people will reply to both instances of the original posting, so people watching the thread one on side will miss the postings made on the other.

I'd appreciate it if the poster were explicitly informed of where they should send their report as well as retaining linux-kernel on the CC: list if forwarding to netdev as well so we can avoid both of these problems.

Thanks.