From cc16338fc07200b07c512be69696a916ae892d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20M=C3=BCnchow?= Date: Fri, 14 Oct 2016 11:55:49 +0200 Subject: [PATCH] added udp checksum calculation --- src/ts3init_target.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ts3init_target.c b/src/ts3init_target.c index 7b8cef3..df16d4c 100644 --- a/src/ts3init_target.c +++ b/src/ts3init_target.c @@ -422,6 +422,9 @@ ts3init_morph_to_get_cookie_ipv4_tg(struct sk_buff *skb, const struct xt_action_ udp->len = htons(sizeof(*udp) + sizeof(payload_buf)); udp->check = 0; + udp->check = csum_tcpudp_magic(ip->saddr, ip->daddr, + ntohs(udp->len), IPPROTO_UDP, + csum_partial(udp, ntohs(udp->len), 0)); ip->tot_len = htons(skb->len); skb->ip_summed = CHECKSUM_NONE; @@ -457,6 +460,9 @@ ts3init_morph_to_get_cookie_ipv6_tg(struct sk_buff *skb, const struct xt_action_ udp->len = htons(sizeof(*udp) + sizeof(payload_buf)); udp->check = 0; + udp->check = csum_ipv6_magic(&ip->saddr, &ip->daddr, + ntohs(udp->len), IPPROTO_UDP, + csum_partial(udp, ntohs(udp->len), 0)); ip->payload_len = htons(skb->len); skb->ip_summed = CHECKSUM_NONE;