linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC/PATCH] SO_NO_CHECK for IPv6
@ 2007-11-21 12:45 Jeff Garzik
  2007-11-21 13:20 ` YOSHIFUJI Hideaki / 吉藤英明
  2007-11-21 18:35 ` David Miller
  0 siblings, 2 replies; 12+ messages in thread
From: Jeff Garzik @ 2007-11-21 12:45 UTC (permalink / raw)
  To: netdev; +Cc: LKML


SO_NO_CHECK support for IPv6 appeared to be missing. This is presented,
based on a reading of net/ipv4/udp.c.

I wonder if IPv4's CHECKSUM_PARTIAL check from udp_push_pending_frames()
also needs to be copied to IPv6?

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
---
 net/ipv6/udp.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index ee1cc3f..7927e69 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -538,9 +538,14 @@ static int udp_v6_push_pending_frames(struct sock *sk)
 	uh->len = htons(up->len);
 	uh->check = 0;
 
-	if (up->pcflag)
+	if (up->pcflag)					/*     UDP-Lite      */
 		csum = udplite_csum_outgoing(sk, skb);
-	 else
+
+	else if (sk->sk_no_check == UDP_CSUM_NOXMIT) {	/* UDP csum disabled */
+		skb->ip_summed = CHECKSUM_NONE;
+		goto send;
+
+	} else
 		csum = udp_csum_outgoing(sk, skb);
 
 	/* add protocol-dependent pseudo-header */
@@ -549,6 +554,7 @@ static int udp_v6_push_pending_frames(struct sock *sk)
 	if (uh->check == 0)
 		uh->check = CSUM_MANGLED_0;
 
+send:
 	err = ip6_push_pending_frames(sk);
 out:
 	up->len = 0;

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-11-26  2:48 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-21 12:45 [RFC/PATCH] SO_NO_CHECK for IPv6 Jeff Garzik
2007-11-21 13:20 ` YOSHIFUJI Hideaki / 吉藤英明
2007-11-21 13:42   ` Herbert Xu
2007-11-22  0:17   ` Jeff Garzik
2007-11-22  2:34     ` Herbert Xu
2007-11-22  2:46       ` YOSHIFUJI Hideaki / 吉藤英明
2007-11-23  1:13     ` David Miller
2007-11-23  6:06       ` David Schwartz
2007-11-24  6:00         ` Herbert Xu
2007-11-25 15:41           ` David Schwartz
2007-11-26  2:47             ` Herbert Xu
2007-11-21 18:35 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).