Re: udp checksum on raw sockets
From: Ruslan Ermilov (ru_at_freebsd.org)
Date: 04/27/04
- Previous message: Charles Swiger: "Re: udp checksum on raw sockets"
- In reply to: Mark Santcroos: "udp checksum on raw sockets"
- Next in thread: Mark Santcroos: "Re: udp checksum on raw sockets"
- Reply: Mark Santcroos: "Re: udp checksum on raw sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 27 Apr 2004 22:05:43 +0300 To: Mark Santcroos <marks@ripe.net>
On Tue, Apr 27, 2004 at 06:09:01PM +0200, Mark Santcroos wrote:
> * I'm sending UDP packets on a raw socket.
>
> * iphdr->ip_src.s_addr = INADDR_ANY;
> So I don't know the IP address that will be used as src address.
> So as far as I can see, I have a problem generating the checksum in
> userspace.
>
Yes, that problem is real.
> Suggestion:
>
> Would it make sense that if:
> sysctl net.udp.checksum=1
> and
> udphdr->uh_sum = 0;
> in a UDP packet created on a raw socket, to do the checksum in the kernel
> instead of leaving it zero? If it does, I can create a patch.
>
> Any other hints as how to do the checksum in userland are welcome too. As
> that is the "ultimate" problem I try to fix.
>
Have the raw IP code set csum_flags |= CSUM_UDP (and set csum_data
correctly) in m->m_pkthdr, if ip_p == IPPROTO_UDP && uh_csum == 0.
Do the same thing for IPPROTO_TCP.
Cheers,
-- Ruslan Ermilov ru@FreeBSD.org FreeBSD committer
- application/pgp-signature attachment: stored
- Previous message: Charles Swiger: "Re: udp checksum on raw sockets"
- In reply to: Mark Santcroos: "udp checksum on raw sockets"
- Next in thread: Mark Santcroos: "Re: udp checksum on raw sockets"
- Reply: Mark Santcroos: "Re: udp checksum on raw sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]