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 [EMAIL PROTECTED] FreeBSD committer
pgp00000.pgp
Description: PGP signature