Re: [PATCH][BRIDGE-NF] Fix wrong use of skb->protocol
From: Bart De Schuymer <hidden>
Date: 2004-12-30 23:10:48
Op do, 30-12-2004 te 23:24 +0100, schreef Lennert Buytenhek:
On Thu, Dec 30, 2004 at 07:55:14PM +0100, Bart De Schuymer wrote:quoted
ip_sabotage_out() needs to distinguish IPv4 and IPv6 traffic. It currently does that by looking at skb->protocol. However, for locally originated packets, skb->protocol is not initialized. The patch below instead looks at the version number of the packet's data, which should be 4 or 6.A while ago there were a number of problems with bridging CIPE ethernet devices, which turned out to be the bridge code not initialising skb->protocol for locally originated STP frames. At the time I was told that initialising skb->protocol for locally originated packets is required, so that is how I fixed it then.
Hi Lennert, skb->protocol is not set for locally generated packets when the packet is still in the IP stack. I don't know what happens with it after the IP stack is finished with the packet. The comment in skbuff.h says "packet protocol from driver", from which I tend to conclude that skb->protocol is only set by drivers when a packet enters the box. Too bad stuff like this isn't clearly spelled out, the FIXME for the dst field has been sitting there for probably more than a year too. Anyway, it wouldn't hurt if the skb->protocol field always held the right value. cheers, Bart