Re: Don't use IP packets with payload < 8 octets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well David,

My code is not cool. But it is still useful.

My code is made to test networking sanity between two IP peers. It uses raw
socket and 4 bytes IP payload.

I REALLY surprised that my code did not work on Linux 2.4.x. Sillily I spent
lots of time to find out what was the problem.

Finally what I found is what Morten Schlaeger(the author of the first thread
of this postings) had found.

Who wrote this RFC-non-conforming code ?


>From Morten's posting:

the code which discards our packets (File ip_input.c; function int
ip_local_deliver_finish(struct sk_buff *skb)

   227          /* Pull out additionl 8 bytes to save some space in
protocols. */
   228          if (!pskb_may_pull(skb, ihl+8))
   229                  goto out;
   230          __skb_pull(skb, ihl);

File: skbuff.h

static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len)
{
        if (len <= skb_headlen(skb))
                return 1;
        if (len > skb->len)
                return 0;
        return (__pskb_pull_tail(skb, len-skb_headlen(skb)) != NULL);
}


Jiwoong





----- Original Message -----
From: "David S. Miller" <davem@redhat.com>
To: <morten@ee.tu-berlin.de>
Cc: <linux-net@vger.kernel.org>; <posch@ftmail.ee.tu-berlin.de>
Sent: Wednesday, January 09, 2002 8:51 PM
Subject: Re: Don't use IP packets with payload < 8 octets


>    From: Morten Schlaeger <morten@ee.tu-berlin.de>
>    Date: Wed, 9 Jan 2002 10:46:56 +0100 (CET)
>
>    So, I think your statement is only true for the fragments of a
fragmented
>    packet. Further the appendix of RFC 791 gives the following example:
>
> Man, if it weren't for RAW sockets I would be now asking
> you "Now show me a legitimate IP packet that has one byte
> of data".
>
> Probably the correct test is therefore something like:
>
> if (ipprot_exists(iph->protocol) &&
>     pskb_may_pull(skb, ihl + 8))
> goto out;
>
> And at that point this added overhead defeats the whole purpose of
> consolidating the pskb_may_pull() from the protocol inputs, into
> the generic IP input. :-(
>
> So I'm going to ask anyways, what cool RAW sockets app uses these 1
> byte packets?  :-)
>
> Franks a lot,
> David S. Miller
> davem@redhat.com
> -
> : send the line "unsubscribe linux-net" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux