diff -urN linux-2.6.6/net/ipv6/ah6.c linux-2.6.6-ipsec/net/ipv6/ah6.c --- linux-2.6.6/net/ipv6/ah6.c 2004-05-09 19:32:53.000000000 -0700 +++ linux-2.6.6-ipsec/net/ipv6/ah6.c 2004-06-09 16:13:26.000000000 -0700 @@ -360,7 +360,7 @@ struct ip_auth_hdr *ah = (struct ip_auth_hdr*)(skb->data+offset); struct xfrm_state *x; - if (type != ICMPV6_DEST_UNREACH || + if (type != ICMPV6_DEST_UNREACH && type != ICMPV6_PKT_TOOBIG) return; diff -urN linux-2.6.6/net/ipv6/esp6.c linux-2.6.6-ipsec/net/ipv6/esp6.c --- linux-2.6.6/net/ipv6/esp6.c 2004-05-09 19:32:52.000000000 -0700 +++ linux-2.6.6-ipsec/net/ipv6/esp6.c 2004-06-09 16:13:38.000000000 -0700 @@ -324,7 +324,7 @@ struct ipv6_esp_hdr *esph = (struct ipv6_esp_hdr*)(skb->data+offset); struct xfrm_state *x; - if (type != ICMPV6_DEST_UNREACH || + if (type != ICMPV6_DEST_UNREACH && type != ICMPV6_PKT_TOOBIG) return;