Date: Tue, 27 Apr 2004 22:05:43 +0300 From: Ruslan Ermilov <ru@freebsd.org> To: Mark Santcroos <marks@ripe.net> Cc: net@freebsd.org Subject: Re: udp checksum on raw sockets Message-ID: <20040427190543.GA75827@ip.net.ua> In-Reply-To: <20040427160901.GA2552@laptop.6bone.nl> References: <20040427160901.GA2552@laptop.6bone.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
--FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Apr 27, 2004 at 06:09:01PM +0200, Mark Santcroos wrote: > * I'm sending UDP packets on a raw socket. >=20 > * iphdr->ip_src.s_addr =3D 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. >=20 Yes, that problem is real. > Suggestion: >=20 > Would it make sense that if: > sysctl net.udp.checksum=3D1 > and > udphdr->uh_sum =3D 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. >=20 > Any other hints as how to do the checksum in userland are welcome too. As > that is the "ultimate" problem I try to fix. >=20 Have the raw IP code set csum_flags |=3D CSUM_UDP (and set csum_data correctly) in m->m_pkthdr, if ip_p =3D=3D IPPROTO_UDP && uh_csum =3D=3D 0. Do the same thing for IPPROTO_TCP. Cheers, --=20 Ruslan Ermilov ru@FreeBSD.org FreeBSD committer --FCuugMFkClbJLl1L Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAjq8GUkv4P6juNwoRAvxJAJ4tHLdBZ1hzYCUBGQut4HBgVwHmXwCfT0rR ebFdz10AGKUUZpT4CXK4tn8= =mvLQ -----END PGP SIGNATURE----- --FCuugMFkClbJLl1L--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040427190543.GA75827>