public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* NetFilter: Problem in adding additional header using NetFilter
@ 2001-10-11 15:22 Shiva Raman Pandey
  2001-10-11 15:53 ` James Sutherland
  0 siblings, 1 reply; 10+ messages in thread
From: Shiva Raman Pandey @ 2001-10-11 15:22 UTC (permalink / raw)
  To: linux-kernel

Hello Friends,
My actual requirement is to insert my own header between Ethernet header and
IP header to all the packets generated at this machine and  remove the same
from all the packets meant for this machine.
So Packets leaving from this machine will look like(assume my header is
BlueTooth header)
Ethernet header -- BT header --IPheader--TCP/UDP/ICMP header
I tried to using Netfilter to solve my purpose, but found that I cant get
the packet directly from ethernet. Even the very first hook PRE_ROUTING also
gives from IP layer only.
So if I add my BT header before IP header, IP layer will not accept the
packet when I will call 'set_verdict'.
So I changed my design :(, to do some dirty work like add the copy of IP
header before BT header again.
Now it will look like
IP header--BT header--IP header--TCP/UDP/ICMP header
and at the recieving end it will remove the IP header--BT header leaving the
remaining packet starting with IP header.

For example, say ping command, packet length = 84 bytes, IP header length =
20 bytes, ICMP header length = 8bytes and my BT header length = 5 bytes
so I made the new packet of length 20+5+20+(84-20) = 109 bytes and called
the function set_verdict, with data_len = 109, and this 109 bytes long
payload.
Now at the recieving machine I should get the 109 bytes long packet, but in
fact IP_QUEUE is giving the packet of 84 bytes only, that are in fact first
84 bytes of the 109 bytes long packet.
Note - I have not touched the checksum fields.

So, my questions are :
1) When I am sending 109 bytes, why I am getting only 84 bytes?
2) I tried changing the payload[3] (ie, packet length field) to 109, in that
case the packet never reaches the destination, why?
3) Is this problem due to checksum?
4) Is there any way using netfilter, I can get the packet from ethernet
directly, that will suit my actual design? or any other easy way?
5) How can I verify that the sending machine is actually sending 109 bytes(I
mean not reducing it to 84)?

Please send me your suggestions to  find out the solution for this problem

Thanks alot.
Regards
Shiva Raman Pandey
Research Associate, Computer Science -R&D
Sasken Communication Technologies Limited
Bangalore, India



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2001-10-11 22:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-10-11 15:22 NetFilter: Problem in adding additional header using NetFilter Shiva Raman Pandey
2001-10-11 15:53 ` James Sutherland
2001-10-11 16:09   ` Sound on Vaio partially dies between 2.4.5 and 2.4.6 Greg Ingram
2001-10-11 16:48   ` unkillable process in R state? Christopher Friesen
2001-10-11 17:25     ` Ralf Baechle
2001-10-11 18:19       ` Christopher Friesen
2001-10-11 18:19       ` James Sutherland
2001-10-11 19:18         ` Christopher Friesen
2001-10-11 22:19           ` Alex Pennace
2001-10-11 22:57           ` James Sutherland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox