diff options
author | Chris Lalancette <clalance@redhat.com> | 2006-11-07 14:56:19 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-11-07 15:10:13 -0800 |
commit | 8e365eec04c86899fab5db0f49a9c98554069bd0 (patch) | |
tree | cd271d17c581cb00b03443071612e7660c1728ea /net | |
parent | da33e3eb4876c43b78fdc7b7068653239f28714a (diff) | |
download | lwn-8e365eec04c86899fab5db0f49a9c98554069bd0.tar.gz lwn-8e365eec04c86899fab5db0f49a9c98554069bd0.zip |
[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')
-rw-r--r-- | net/core/netpoll.c | 6 |
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)); |