[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: RE: how packet stored in skb?
Hi Parag,
I'm surprised that ICMP & UDP work!
Look at ip_rcv(), the first statement in that is:
struct iphdr *iph = skb->nh.iph;
If you remove the skb->h.raw = skb->nh.raw = skb->data; then
skb->nh.iph would be invalid. The assignment of pointers contained
in skb->nh union is done by the statement in question.
Thanks & regards,
Suvidh Mathur
-----Original Message-----
From: bunty [mailto:bunty123_4@xxxxxxxxxxxxxx]
Sent: Sunday, July 04, 2004 8:12 PM
To: Suvidh Mathur
Cc: kernelnewbies@xxxxxxxxxxxx
Subject: Re: RE: how packet stored in skb?
Hi Suvidh,
Can you tell mw waht is the effect then if i remove the statement
skb->h.raw = skb->nh.raw = skb->data;
in dev.c file in net_receive_skb function?
cause if i do that icmp and udp packet still travels on loopback but tcp will hangs kernel?
help me understanding this.
regards,
parag.
On Fri, 02 Jul 2004 Suvidh Mathur wrote :
>Hi,
>
>I'm not sure what you mean by packet already mapped to skb?
>
>skb->data points to the start of unprocessed data, in netif_rx()
>this would be the start of network layer header.
>Another thing to notice is, h & nh are unions, so I can transparently
>assign skb->nh.raw without bothering to figure out the actual network
>protocol of the packet. The protocol's receive function can then use the
>corresponding field in nh. Same goes for h.raw too, if you look closely,
>you'd see that ip_local_deliver_finish() updates h.raw to point to skb->data
>which would point to the unprocessed packet (read transport header).
>
>HTH
>
>Thanks & regards,
>Suvidh Mathur
>
>-----Original Message-----
> From: bunty [mailto:bunty123_4@xxxxxxxxxxxxxx]
>Sent: Friday, July 02, 2004 2:18 PM
>To: kernelnewbies@xxxxxxxxxxxx
>Cc: michf@xxxxxxxxxxxxxx; mohanlal@xxxxxxxxxxx
>Subject: how packet stored in skb?
>
> hello,
>
>
>why is it neccessary to copy skb->data to skb->h.raw and skb->nh.raw in dev.c file?
>I think the whole packet structure along with data and all headers are already mapped to skb structure and after receiving packet i think no function is using raw variables to process packet they only get values from skb structure.
>regards,
>parag.
>
>
>
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/