summaryrefslogtreecommitdiff
path: root/net/core
diff options
context:
space:
mode:
authorChris Lalancette <clalance@redhat.com>2006-11-08 01:56:19 +0300
committerDavid S. Miller <davem@sunset.davemloft.net>2006-11-08 02:10:13 +0300
commit8e365eec04c86899fab5db0f49a9c98554069bd0 (patch)
treecd271d17c581cb00b03443071612e7660c1728ea /net/core
parentda33e3eb4876c43b78fdc7b7068653239f28714a (diff)
downloadlinux-8e365eec04c86899fab5db0f49a9c98554069bd0.tar.xz
[NETPOLL]: Compute checksum properly in netpoll_send_udp().
Signed-off-by: Chris Lalancette <clalance@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/netpoll.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 9308af060b44..6589adb14cbf 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -340,6 +340,12 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
udph->dest = htons(np->remote_port);
udph->len = htons(udp_len);
udph->check = 0;
+ udph->check = csum_tcpudp_magic(htonl(np->local_ip),
+ htonl(np->remote_ip),
+ udp_len, IPPROTO_UDP,
+ csum_partial((unsigned char *)udph, udp_len, 0));
+ if (udph->check == 0)
+ udph->check = -1;
skb->nh.iph = iph = (struct iphdr *)skb_push(skb, sizeof(*iph));