[PATCH] ipvs: fix wrong icmp_offset in ip_vs_nat_icmp_v6

To: Julian Anastasov <ja@xxxxxx>
Subject: [PATCH] ipvs: fix wrong icmp_offset in ip_vs_nat_icmp_v6
Cc: lvs-devel@xxxxxxxxxxxxxxx, Jesper Dangaard Brouer <brouer@xxxxxxxxxx>, Hans Schillstrom <hans@xxxxxxxxxxxxxxx>
From: Art -kwaak- van Breemen <ard@xxxxxxxxxxxxxxx>
Date: Wed, 19 Feb 2014 13:31:50 +0100
Fix regression introduced in 3.8 with commit 63dca2c0b0e7a9
("ipvs: Fix faulty IPv6 extension header handling in IPVS").
Calling ipv6_find_hdr with protocol (IPPROTO_ICMPV6) is not
supported, use -1 instead. Solves (pmtud) problems caused by
damaged IPv6 headers in NAT-ed ICMP packets.

Signed-off-by: Ard van Breemen <ard@xxxxxxxxxxxxxxx>
CC: Jesper Dangaard Brouer <brouer@xxxxxxxxxx>
CC: Hans Schillstrom <hans@xxxxxxxxxxxxxxx>


--- l-3.13.3/net/netfilter/ipvs/        2014-01-22 
14:46:53.222738221 +0100
+++ l-3.13.3/net/netfilter/ipvs/ip_vs_core.c    2014-02-19 12:22:25.641612230 
@@ -735,7 +735,7 @@ void ip_vs_nat_icmp_v6(struct sk_buff *s
        struct ipv6hdr *ciph;
        unsigned short fragoffs;
-       ipv6_find_hdr(skb, &icmp_offset, IPPROTO_ICMPV6, &fragoffs, NULL);
+       ipv6_find_hdr(skb, &icmp_offset, -1, &fragoffs, NULL);
        icmph = (struct icmp6hdr *)(skb_network_header(skb) + icmp_offset);
        offs = icmp_offset + sizeof(struct icmp6hdr);
        ciph = (struct ipv6hdr *)(skb_network_header(skb) + offs);
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at

<Prev in Thread] Current Thread [Next in Thread>