Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Mar 2001 17:10:04 +0530 (IST)
From:      Madhavi Suram <madhavis@sasken.com>
To:        freebsd-hackers@FreeBSD.ORG
Subject:   udp checksum problem..
Message-ID:  <Pine.LNX.4.21.0103241655060.15455-100000@pcs111.sasi.com>
In-Reply-To: <20010324012954.A31961@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help

Hi

I am modifying FreeBSD 4.1  kernel. I am hacking all UDP packets in
ip_input, changing some headers and finding the udp checksum
using in_pseudo() and setting the packet header csum_flags to
CSUM_UDP (I know this is a dirty way of doing it.. but, had to do it
for efficiency reasons). When I try to see the checksum after the checksum
calculation is complete in ip_output, I am getting the checksum
65535(0xffff). Is this a special checksum(error or something like
that..)? I have seen INVERT doing something like this in the file
/sys/alpha/alpha/in_cksum.c.

	sum == 0xffff ? 0xffff : ~sum & 0xffff.

After modifying the packet in ip_input(), I call ip_forward() and the
packet should go and reach the intended destination as usual. But, this
destination address is the one that is changed in ip_input(). But, the
destination host is not getting the packet. I think this is a checksum
problem.

Could anyone please tell me what checksum 0xffff means, or give me some
pointers to where I can find this information?

Also, could anyone tell me if there are any csum_flags other than
CSUM_UDP and CSUM_DELAY_DATA in the mbuf packet header that can be set
before a udp packet reaches ip_output()?

thanks in advance.

regards
Madhavi.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.21.0103241655060.15455-100000>