Re: IP layer bug?

Manoj Sontakke
2001-03-26T06:54:11Z

Hi,
On Mon, 26 Mar 2001, Oleg Drokin wrote:

> Hello!
>
> On Mon, Mar 26, 2001 at 04:06:19PM +0530, Manoj Sontakke wrote:
> > > 2.4.x kernel. have not tried 2.2
> > > I just found somethig, I believe is kernel bug.
> > > I am working with usbnet.c driver, which stores some of its
> > > internal state in sk_buff.cb area. But once such skb passed to
> > > upper layer with netif_rx, net/ipv4/ip_input.c reuses content of cb
> > > (line #345),
> > ip_options_compile() when called with first argument NULL resets cb to 0.
> I have found that already.
>
> > This is probably because the cb is supposed to be used IP and above. The
> Sure.
>
> > underlying layer(link and phy) could be anything so where from the
> > ip_options should start will depend upon the underlying layer.
> But here's the problem!
> If I won't zero cb in my driver before netif_rx() call,
> IP layer thinks that all my packets have various ip options set
> (source routing most notable)

U can set cb to zero, but u also plan to use cb for storing ur data. If
that happens then u need to modify the way the macro IPCB
(probably in net/ip.h) is defined. Also make sure to increase the size
of cb to accomodate ur data. This will solve ur problem but making this
general (part of the standard kernel code) needs a lot of work in the ip
layer. The cb is also used by TCP. The same needs to be done in IP layer
but this will again largly depend on the layers below and hence the
complexity.

The alternative to this is that u can add another buffer like cb in
sk_buff.

Manoj Sontakke