IPVS: ICMPv6 checksum calculation
Cc: Xiaoyu Du <tingsrain@gmail.com> Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
8a891429d1
Коммит
8870f8427b
|
@ -637,10 +637,12 @@ void ip_vs_nat_icmp_v6(struct sk_buff *skb, struct ip_vs_protocol *pp,
|
|||
}
|
||||
|
||||
/* And finally the ICMP checksum */
|
||||
icmph->icmp6_cksum = 0;
|
||||
/* TODO IPv6: is this correct for ICMPv6? */
|
||||
ip_vs_checksum_complete(skb, icmp_offset);
|
||||
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||
icmph->icmp6_cksum = ~csum_ipv6_magic(&iph->saddr, &iph->daddr,
|
||||
skb->len - icmp_offset,
|
||||
IPPROTO_ICMPV6, 0);
|
||||
skb->csum_start = skb_network_header(skb) - skb->head + icmp_offset;
|
||||
skb->csum_offset = offsetof(struct icmp6hdr, icmp6_cksum);
|
||||
skb->ip_summed = CHECKSUM_PARTIAL;
|
||||
|
||||
if (inout)
|
||||
IP_VS_DBG_PKT(11, pp, skb, (void *)ciph - (void *)iph,
|
||||
|
|
Загрузка…
Ссылка в новой задаче