Re: udp checksum on raw sockets

From: Ruslan Ermilov (ru_at_freebsd.org)
Date: 04/27/04

  • Next message: Mark Santcroos: "Re: udp checksum on raw sockets"
    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
    
    



  • Next message: Mark Santcroos: "Re: udp checksum on raw sockets"