Subject: Re: pmtu discovery on SA

From: Mika Penttilä <[email-masked]>
Date: Wed, 18 Jul 2007 21:47:24 +0300

Patrick McHardy wrote:
> Mika Penttilä wrote:
>> Hmm. esp4_err() looks like this :
>>
>>    struct iphdr *iph = (struct iphdr*)skb->data;
>>    struct ip_esp_hdr *esph = (struct 
>> ip_esp_hdr*)(skb->data+(iph->ihl<<2));
>>    struct xfrm_state *x;
>>
>>    if (icmp_hdr(skb)->type != ICMP_DEST_UNREACH ||
>>        icmp_hdr(skb)->code != ICMP_FRAG_NEEDED)
>>        return;
>>
>>    x = xfrm_state_lookup((xfrm_address_t *)&iph->daddr, esph->spi, 
>> IPPROTO_ESP, AF_INET);
>>    if (!x)
>>        return;
>>    NETDEBUG(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%08x\n",
>>         ntohl(esph->spi), ntohl(iph->daddr));
>>    xfrm_state_put(x);
>>
>>
>>
>> where could pmtu discovery be happening?
>
> xfrm_init_pmtu, xfrm_bundle_ok, xfrm_state_mtu, esp4_get_mtu, ...
>
Okay yes but for instance the current tcp session isn't recovering from 
from esp4_err() ? The next connect attempt uses the new pmtu?

--Mika