All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julian Anastasov <ja@ssi.bg>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] Is negative offset possible in u32 ?
Date: Tue, 14 Jan 2003 23:34:26 +0000	[thread overview]
Message-ID: <marc-lartc-104259231401530@msgid-missing> (raw)
In-Reply-To: <marc-lartc-104254797731703@msgid-missing>


	Hello,

On 14 Jan 2003, Eric Leblond wrote:

> I look at the kernel code, I'm almost a real beginner here so I could
> wrote stupid things :
>
> I saw that in the file cls_u32.c we work with skb and use only
> skb->nh.raw. That's the network header, so we don't have any information
> about Ethernet header (it's in skb->mac.raw that we have the ethernet
> header and that the protocol is given).

	Everything starts from the net drivers (drivers/net/*.c):

- dev_alloc_skb() is used to reserve skb head space for the eth hdr
and data space for the packet

- NIC stores ethhdr and packet there

- eth_type_trans() is called to set skb->mac.raw and to skip
the eth header by incrementing skb->data with skb_pull()

- net/core/dev.c sets skb->nh.raw = skb->data and packet is
passed to upper layers where tc ingress works

> Furthermore (maybe i'm wrong cause of inverted stockage in memory) in
> the skbuf struct the ethernet header union follow the network header
> union so we should read something else.

tc sees:

skb:
+-------+	head
|	|		before ofs=-14: more reserved bytes
|	|		ofs=-14: dst mac
|	|		ofs=-8: src mac
|ethhdr	|		ofs=-2: eth proto
+-------+	data	ofs=+0, same as nh.raw
|packet	|
|	|
+-------+	tail
|	|
+-------+	end

As for u32_classify, nh.ptr is used as base offset, later the 'ptr'
is adjusted by signed int offsets, so it can touch lower addresses.

> Thus we can at least say that negative offset in u32 are really "tricky"
> and really non clean and as seems to show experiment that they don't
> work (?)

	This is a hack, of course (may be designed so). But
it works for me (tm)

Regards

--
Julian Anastasov <ja@ssi.bg>

_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

      parent reply	other threads:[~2003-01-14 23:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-14 12:40 [LARTC] Is negative offset possible in u32 ? Eric Leblond
2003-01-14 13:22 ` Stephane Ouellette
2003-01-14 13:28 ` Eric Leblond
2003-01-14 23:34 ` Julian Anastasov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-lartc-104259231401530@msgid-missing \
    --to=ja@ssi.bg \
    --cc=lartc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.